DS chiziqli regressiya
Bizda Calorie_Burnage’ga ta’sir qiluvchi bitta muhim o‘zgaruvchi — mashg‘ulot davomiyligi (Duration) yetishmayapti.
Duration Average_Pulse bilan birgalikda Calorie_Burnage’ni aniqroq tushuntiradi.
Chiziqli regressiya
Regressiya atamasi o‘zgaruvchilar o‘rtasidagi bog‘liqlikni topishga harakat qilganda ishlatiladi.
Mashinali o‘rganish va statistik modellashtirishda bu bog‘liqlik hodisalar natijasini bashorat qilish uchun ishlatiladi.
Ushbu modulda quyidagi savollarni ko‘rib chiqamiz:
- Average_Pulse va Duration Calorie_Burnage bilan bog‘liq, degan xulosaga kela olamizmi?
- Calorie_Burnage’ni bashorat qilish uchun Average_Pulse va Duration’dan foydalana olamizmi?
Eng kichik kvadratlar usuli
Chiziqli regressiya eng kichik kvadratlar usulidan foydalanadi.
G‘oya shundan iboratki, grafikdagi barcha ma’lumot nuqtalari orqali chiziq o‘tkaziladi. Chiziq barcha ma’lumot nuqtalarigacha bo‘lgan masofani minimallashtiradigan tarzda joylashtiriladi.
Bu masofa "qoldiqlar" (residuals) yoki "xatolar" (errors) deb ataladi.
Qizil punktir chiziqlar ma’lumot nuqtalaridan chizilgan matematik funksiyagacha bo‘lgan masofani ifodalaydi.
Bitta tushuntiruvchi o‘zgaruvchi yordamida chiziqli regressiya
Ushbu misolda chiziqli regressiya yordamida Calorie_Burnage’ni Average_Pulse orqali bashorat qilishga harakat qilamiz:
Misol
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
full_health_data = pd.read_csv("data.csv", header=0, sep=",")
x = full_health_data["Average_Pulse"]
y = full_health_data ["Calorie_Burnage"]
slope, intercept, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
return slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, slope * x + intercept)
plt.ylim(ymin=0, ymax=2000)
plt.xlim(xmin=0, xmax=200)
plt.xlabel("Average_Pulse")
plt.ylabel ("Calorie_Burnage")
plt.show()
O‘zingiz sinab ko‘ring »
Misol izohi:
- Kerakli modullarni import qiling: Pandas, matplotlib va Scipy
- Average_Pulse’ni x sifatida ajratib oling. Calorie_burnage’ni y sifatida ajratib oling
- Muhim asosiy qiymatlarni oling: slope, intercept, r, p, std_err = stats.linregress(x, y)
- Yangi qiymat qaytarish uchun qiyalik va kesishma nuqtasi qiymatlaridan foydalanadigan funksiya yarating. Bu yangi qiymat mos x qiymati y o‘qining qayerida joylashishini ifodalaydi
- x massivining har bir qiymatini funksiya orqali o‘tkazing. Natijada y o‘qi uchun yangi qiymatlarga ega yangi massiv hosil bo‘ladi: mymodel = list(map(myfunc, x))
- Asl nuqtali diagrammani chizing: plt.scatter(x, y)
- Chiziqli regressiya chizig‘ini chizing: plt.plot(x, mymodel)
- O‘qning maksimal va minimal qiymatlarini belgilang
- O‘qlarga yorliq qo‘ying: "Average_Pulse" va "Calorie_Burnage"
Natija:
Sizningcha, bu chiziq Calorie_Burnage’ni aniq bashorat qila oladimi?
Faqat Average_Pulse o‘zgaruvchisining o‘zi Calorie_Burnage’ni aniq bashorat qilish uchun yetarli emasligini ko‘rsatib beramiz.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
