4-amaliy ish Bir o’zgaruvchili va ko’p o’zgaruvchili chiziqli regressiya masalalari va ularni dasturlash


Download 293.76 Kb.
Pdf ko'rish
bet3/4
Sana28.02.2023
Hajmi293.76 Kb.
#1236419
1   2   3   4
Bog'liq
4-amaliy ish

import
numpy 
as
np
import
numpy 
as
np
d = data
[
data.price 
>
0
]
x = d.number_of_reviews
y = np.
log
(
d.price
)
a, b = 
get_params
(
x, y

Natijada qabul qilindi: 
>>>
a
-0.04213862786693919
>>>
b
125.40308200933784
Nolinchi narx qiymatlarini filtrladik, chunki logaritmi noldan mavjud emas. 
Shunday qilib, chiziqli regressiya quyidagi kabi yoziladi: 
Keling, matplotlib Python kutubxonasida grafik tuzamiz, natijada olingan chiziqli 
regressiya va haqiqiy narx qiymatlari paydo bo'ladi. Grafiklarni qanday qurish 
haqida bilamiz. Buning uchun biz scatter va plot funktsiyalaridan foydalanamiz: 
import
matplotlib.pyplot 
as
plt


plt.
xlabel
(
'Количество отзывов'
)
plt.
ylabel
(
'Цена в логарифмическом масштабе'
)
plt.
scatter
(
x, y
)
plt.
plot
(
x, lin_reg, color=
'red'

Natijada, bu grafik olingan: 
Chiziqli regressiya (qizil chiziq) 
Ko'rib turganingizdek, bir mustaqil o'zgaruvchining chiziqli regressiyasi 
muvaffaqiyatsiz natijalarni ko'rsatadi,chunki u abscissa o'qiga deyarli parallel. 
Shuning uchun prognoz bir xil bo'ladi, taxminan 4.6 ga teng. Oddiy masshtabga 
tarjima qilganda, $100 ga teng bo’ladi. 
SCIKIT-LEARN-DA KO’P O'ZGARUVCHILI CHIZIQLI REGRESSIYA 
Aslida, ML-modellar kamdan-kam hollarda faqat bitta belgi bo'yicha o'qitiladi, bu 
esa tuzilgan grafikalar tomonidan tasdiqlanadi. Shuning uchun chiziqli regressiya 
uchun tenglama 
o'zgaruvchilar (belgilar) ga umumlashtirilishi mumkin):
vazifa koeffitcentlarni topish uchun kamayadi. Ularni topish tafsilotlariga 
kirmasdan, Python-Kutubxona Scikit-o'rganish tayyor interfeysi uchun taqdim 
etadi, deb unutmang. 
Python da bir misol ko'rib chiqaylik. Mustaqil o'zgaruvchilar sifatida belgilarni 
tanlang: number_of_reviews, reviews_per_month, calculated_host_listings_count. 
Xususiyat reviews_per_month Nan -qiymatiga ega, shuning uchun kelajakda ularni 
nol bilan to'ldiring. Bundan tashqari, biz nol narxga ega bo'lgan ma'lumotlarni 
filtrladik: 
d = data
[
data.price 
>
0
]


d
[
'reviews_per_month'
]
.
fillna
(
0
, inplace=
True
)
x = d.loc
[
:, 
(
'reviews_per_month'
,
'calculated_host_listings_count'
,
'number_of_reviews'
)]
y = d.loc
[
:, 
'price'
]
Bu erda loc usuli qo'llaniladi, bu hujjatlarga ko'ra, ustunlarni chaqirishdan ko'ra 
tezroq va samaraliroq. Bundan tashqari, ba'zi ma'lumotlarga modelni o'rgatish 
uchun olingan ma'lumotlarni o'quv va test namunalariga ajratishimiz kerak, 
boshqalari esa uning to'g'riligini tekshirishlari kerak. Scikit-learnda train_test_split 
funkciyasi mavjud bo'lib, u ikki juft massivni qaytaradi-mashq va test

Download 293.76 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling