Як відобразити рівняння регресії в 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

З результату ми бачимо, що лінія регресії має таке рівняння:

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

Рівняння Seaborn regplot

Зверніть увагу, що рівняння регресії тепер відображається у верхньому лівому куті графіка.

Зауважте, що у функції text() ми вказали, що рівняння регресії має відображатися з координат (x, y) (2, 95).

Не соромтеся змінити ці координати, щоб відобразити рівняння регресії, де завгодно на вашому власному графіку.

Примітка : Ви можете знайти повну документацію для функції seaborn regplot тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в Seaborn:

Як відкоригувати розмір фігури сюжету Seaborn
Як змінити положення легенди в Seaborn
Як змінити позначки осей на діаграмі Seaborn

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *