Как отобразить уравнение регрессии в seaborn regplot


Вы можете использовать функцию seaborn regplot , чтобы построить модель линейной регрессии, соответствующую набору данных.

К сожалению, в Seaborn нет встроенной функции извлечения уравнения регрессии из строки, но вы можете использовать функцию scipy.stats.linregress , чтобы быстро найти коэффициенты регрессии:

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

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: Показать уравнение регрессии в Seaborn Regplot

Предположим, у нас есть следующий DataFrame pandas, который содержит информацию об учебных часах и результатах выпускных экзаменов различных студентов:

 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

Допустим, мы хотим построить точки данных и добавить к данным подобранную линию регрессии.

Для этого мы можем использовать следующий синтаксис:

 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

Из результата мы видим, что линия регрессии имеет следующее уравнение:

у = 77,4 + 1,327

Если мы хотим отобразить это уравнение на морском regplot , мы можем использовать функцию 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 ') 

Уравнение повторного графика Сиборна

Обратите внимание, что уравнение регрессии теперь отображается в верхнем левом углу графика.

Обратите внимание, что в функции text() мы указали, что уравнение регрессии должно отображаться по координатам (x, y) (2, 95).

Не стесняйтесь изменять эти координаты, чтобы уравнение регрессии отображалось в любом месте вашего графика.

Примечание . Полную документацию по функции seaborn regplot можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Seaborn:

Как настроить размер фигуры на графике Сиборна
Как изменить положение легенды в Seaborn
Как изменить метки осей на графике Сиборна

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *