Hoe regressievergelijking in seaborn regplot weer te geven


U kunt de seaborn regplot- functie gebruiken om een lineair regressiemodel uit te zetten dat past bij een gegevensset.

Helaas heeft Seaborn geen ingebouwde functie om de regressievergelijking uit de regel te extraheren, maar u kunt de functie scipy.stats.linregress gebruiken om snel de regressiecoëfficiënten te vinden:

 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 ())

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: toon regressievergelijking in Seaborn Regplot

Stel dat we de volgende panda’s DataFrame hebben die informatie bevat over de gestudeerde uren en eindexamenscores van verschillende studenten:

 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

Stel dat we de gegevenspunten willen uitzetten en een passende regressielijn aan de gegevens willen toevoegen.

We kunnen hiervoor de volgende syntaxis gebruiken:

 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

Uit het resultaat kunnen we zien dat de regressielijn de volgende vergelijking heeft:

j = 77,4 + 1,327

Als we deze vergelijking op de seaborn regplot willen weergeven, kunnen we de functie matplotlib text() gebruiken:

 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 ') 

Seaborn-regplotvergelijking

Merk op dat de regressievergelijking nu in de linkerbovenhoek van de grafiek wordt weergegeven.

Merk op dat we in de functie text() hebben gespecificeerd dat de regressievergelijking moet worden weergegeven op basis van de (x, y)-coördinaten van (2, 95).

U kunt deze coördinaten gerust wijzigen om de regressievergelijking waar u maar wilt in uw eigen plot weer te geven.

Opmerking : u kunt de volledige documentatie voor de zeegeboren regplotfunctie hier vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Seaborn kunt uitvoeren:

Hoe u de figuurgrootte van een Seaborn-plot kunt aanpassen
Hoe de positie van een legende in Seaborn te veranderen
Hoe u aslabels op een Seaborn-plot kunt wijzigen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert