Jak wyświetlić równanie regresji w seaborn regplot
Za pomocą funkcji seaborn regplot można wykreślić model regresji liniowej pasujący do zbioru danych.
Niestety Seaborn nie ma wbudowanej funkcji wyodrębniania równania regresji z linii, ale możesz użyć funkcji scipy.stats.linregress , aby szybko znaleźć współczynniki regresji:
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 ())
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Pokaż równanie regresji w Seaborn Regplot
Załóżmy, że mamy następującą ramkę danych pandy, która zawiera informacje o godzinach przestudiowanych i wynikach egzaminów końcowych różnych uczniów:
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
Załóżmy, że chcemy wykreślić punkty danych i dodać do danych dopasowaną linię regresji.
W tym celu możemy użyć następującej składni:
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
Z wyniku widzimy, że linia regresji ma następujące równanie:
y = 77,4 + 1,327
Jeśli chcemy wyświetlić to równanie na Seaborn regplot , możemy użyć funkcji 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 ')
Należy zauważyć, że równanie regresji jest teraz wyświetlane w lewym górnym rogu wykresu.
Zauważ, że w funkcji tekst() określiliśmy, że równanie regresji powinno być wyświetlane ze współrzędnych (x, y) (2, 95).
Możesz dowolnie modyfikować te współrzędne, aby wyświetlić równanie regresji w dowolnym miejscu na własnym wykresie.
Uwaga : Pełną dokumentację funkcji seaborn regplot znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w Seaborn:
Jak dostosować rozmiar figury na wykresie Seaborn
Jak zmienić pozycję legendy w Seaborn
Jak zmienić etykiety osi na wykresie Seaborn