Come visualizzare l'equazione di regressione in seaborn regplot
È possibile utilizzare la funzione regplot seaborn per tracciare un modello di regressione lineare adatto a un set di dati.
Sfortunatamente, Seaborn non dispone di una funzionalità integrata per estrarre l’equazione di regressione dalla linea, ma puoi utilizzare la funzione scipy.stats.linregress per trovare rapidamente i coefficienti di regressione:
import scipy import seaborn as sns #create regplot p = sns. regplot (data=df, x=df. x , y=df. y ) #calculate slope and intercept of regression equation slope, intercept, r, p, sterr = scipy. stats . linregress (x= p.get_lines ()[0] .get_xdata (), y=p. get_lines ()[0]. get_ydata ())
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: mostra l’equazione di regressione in Seaborn Regplot
Supponiamo di avere il seguente DataFrame panda che contiene informazioni sulle ore studiate e sui punteggi degli esami finali dei vari studenti:
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ' score ': [77, 79, 84, 80, 81, 89, 95, 90, 83, 89]}) #view DataFrame print (df) hours score 0 1 77 1 2 79 2 3 84 3 4 80 4 5 81 5 6 89 6 7 95 7 8 90 8 9 83 9 10 89
Diciamo che vogliamo tracciare i punti dati e aggiungere una linea di regressione adattata ai dati.
Possiamo usare la seguente sintassi per fare questo:
import scipy import seaborn as sns #create regplot p = sns. regplot (data=df, x=df. hours , y=df. score ) #calculate slope and intercept of regression equation slope, intercept, r, p, sterr = scipy. stats . linregress (x= p.get_lines ()[0] .get_xdata (), y=p. get_lines ()[0]. get_ydata ()) #display slope and intercept of regression equation print (intercept, slope) 77.39999999999995 1.3272727272727356
Dal risultato, possiamo vedere che la retta di regressione ha la seguente equazione:
y = 77,4 + 1,327
Se vogliamo visualizzare questa equazione sul regplot seaborn, possiamo usare la funzione matplotlib text() :
import matplotlib. pyplot as plt import scipy import seaborn as sns #create regplot p = sns. regplot (data=df, x=df. hours , y=df. score ) #calculate slope and intercept of regression equation slope, intercept, r, p, sterr = scipy. stats . linregress (x= p.get_lines ()[0] .get_xdata (), y=p. get_lines ()[0]. get_ydata ()) #add regression equation to plot plt. text (2, 95, ' y = ' + str(round(intercept,3)) + ' + ' + str(round(slope,3)) + ' x ')
Tieni presente che l’equazione di regressione è ora visualizzata nell’angolo in alto a sinistra del grafico.
Si noti che nella funzione text() abbiamo specificato che l’equazione di regressione dovrebbe essere visualizzata dalle coordinate (x, y) di (2, 95).
Sentiti libero di modificare queste coordinate per visualizzare l’equazione di regressione dove vuoi nel tuo grafico.
Nota : puoi trovare la documentazione completa per la funzione regplot seaborn qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in Seaborn:
Come regolare la dimensione della figura di una trama Seaborn
Come cambiare la posizione di una leggenda in Seaborn
Come modificare le etichette degli assi su un grafico Seaborn