1.3. Mashinali oqitish uchun instrumental vositalar
Python (talaffuzi: Piton) — umumiy –maqsadli dasturlash uchun keng tarzda
foydalaniladigan yuqori darajali dasturlash tili.
Ushbu dasturlash tili Guido van Rossum tomonidan yaratilgan va birinchi marta
1991-yilda foydalanib koʻrilgan.
Python har xil platformalar uchun yozilgan, masalan Windows, Linux, Mac OS
X, Palm OS, Mac OS va boshqalar. Python
Microsoft.NET
platformasi uchun
yozilgan realizatsiyasi ham mavjud boʻlib, uning nomi — IronPython.
Pythonni o’rnatish.
Barauzerdan
WWW.python.org
saytidan pythonni ko’cirib olamiz.
Mavzu:Pythonda chiziqli regressiya
Chiziqli regressiya ma'lumotlarni tahlil qilish va mashinani o'rganish uchun
ishlatiladi. O'zingizning modelingizni Python-da yarating va birinchi natijalarni
oling!
Regressiya nima?
Reqressiya o'zgaruvchilar o'rtasidagi munosabatlarni izlaydi.
Masalan, siz kompaniya xodimlarini qabul qilishingiz va ish haqi qiymati
boshqa ma'lumotlarga bog'liqligini, masalan, ish tajribasi, ma'lumot darajasi, roli,
ular ishlaydigan shahar va hokazo.
Regresiya har bir xodim uchun tahlil ma'lumotlarini yagona taqdim etish
muammosini hal qiladi. Bundan tashqari, tajriba, ta'lim, rol va shahar - bu ish haqi
ularga bog'liq bo'lgan mustaqil o'zgaruvchilar.
Xuddi shu tarzda, siz ma'lum bir hududdagi uylarning narxlari, xonalar soni,
markazdan masofa va boshqalar o'rtasida matematik aloqani o'rnatishingiz mumkin.
Regressiya ma'lum bir hodisani va bir qator kuzatuvlarni ko'rib chiqadi. Har bir
kuzatuv ikki yoki undan ko'p o'zgaruvchiga ega. Bitta o'zgaruvchini boshqalarga
bog'liq deb taxmin qilsangiz, siz ular o'rtasida munosabatlarni o'rnatishga harakat
qilmoqdasiz.
Boshqacha qilib aytganda, ba'zi o'zgaruvchilar yoki ma'lumotlarning
boshqalarga bog'liqligini ko'rsatadigan funktsiyani topishingiz kerak.
Bog'langan ma'lumotlar bog'liq parametrlar, natijalar yoki javoblar deb
nomlanadi.
Mustaqil ma'lumotlar mustaqil o'zgaruvchilar, kirishlar yoki predikatorlar deb
nomlanadi.
Odatda, regressiyada bitta doimiy va cheksiz bog'liq o'zgaruvchi mavjud.
Kirish parametrlari cheklanmagan, diskret yoki kategoriya ma'lumotlari bo'lishi
mumkin, masalan, jinsi, millati, brendi va boshqalar.
Chiqish ma'lumotlarini "?", "Kirish ma'lumotlarini" deb belgilash odatiy holdir.
Ikki yoki undan ko'p mustaqil o'zgaruvchilar bo'lsa, ularni vektor sifatida ko'rsatish
mumkinmi? = (? ₁,…,? ᵣ), qaerda? - kiritiladigan o'zgaruvchilar soni.
Qachon regressiya kerak?
Regressiya yangi sharoitlarga javobni bashorat qilish uchun foydalidir. Turar-
joy binosidagi elektr energiyasini haroratdan, kunning vaqtidan va odamlarning
sonidan bilib olasiz.
U qayerda kerak?
Reqressiya ko'plab sohalarda qo'llaniladi: iqtisodiyot, kompyuter va ijtimoiy
fanlar va boshqalar. Uning ahamiyati katta ma'lumotlarning mavjudligi bilan ortib
bormoqda.
Chiziqli regressiya
Chiziqli regressiya eng muhim va keng tarqalgan regressiya usullaridan biridir.
Bu eng oddiy regressiya usuli. Uning afzalliklaridan biri natijalarni sharhlash
qulayligi.
Python-da chiziqli regressiyani amalga oshiring
Pythonda chiziqli regressiyani amalga oshirish vaqti keldi. Sizga kerak bo'lgan
yagona narsa - to'g'ri to'plamlar, funktsiyalar va sinflar.
Chiziqli regressiya Python paketlari
NumPy bir o'lchovli va ko'p o'lchovli massivlarda tezkor ishlash uchun
fundamental ilmiy to'plamdir. Bu matematik usulni engillashtiradi va, albatta, ochiq
manbadir.
NumPy uchun yangi? Rasmiy qo'llanmadan boshlang.
Scikit-learn - bu kompyuterda keng qo'llaniladigan kutubxona. U ma'lumotlarni
qayta ishlash uchun qiymatlarni beradi, pasayish, regressiya, tasniflash, klasterlash
va boshqalarni amalga oshiradi, xuddi NumPy singari ochiq manbada.
Chiziqli modellarni va paketni scikit-learn-da qanday ishlashini boshlang.
Skritit-o'rganish bilan oddiy chiziqli regressiya
Eng oddiy chiziqli regressiya holatidan boshlaylik.
Chiziqli regressiyani amalga oshirish uchun besh bosqichni bajaring:
1. Kerakli paketlar va sinflarni import qiling.
2. Ishlash va konvertatsiya qilish uchun ma'lumotlarni taqdim eting.
3. Regressiya modelini yarating va mavjud ma'lumotlarga moslang.
4. Hizalama natijalarini va qoniqarli modelni tekshiring.
5. Modelni bashorat qilish uchun qo'llang.
Bu ko'p regressiya yondashuvlari va amalga oshirilishlari uchun umumiy
qadamlar.
1-qadam: import paketlar va sinflar
Birinchi
qadam
NumPy
to'plami
va
LinearRegression
sinfini
sklearn.linear_model-dan import qilishdir:
import
numpy
as
np
from
sklearn.linear_model
import
LinearRegression
Endi siz chiziqli regressiyani amalga oshirish uchun barcha funktsiyalarga
egasiz.
Numpy-ning fundamental turi - bu numpy.ndarray massiv turi. Keyinchalik,
qator numpy.ndarray tipidagi barcha holatlarga tegishli.
Sklearn.linear_model.LinearRegression klassi chiziqli regressiya va bashorat
qilish uchun ishlatiladi.
2-qadam: ma'lumotlarni taqdim eting
Ikkinchi qadam, ishlash uchun ma'lumotlarni aniqlash. Kirishlar (regressorlar
,?) va chiqish (predictor ,?) qatorlar (numpy.ndarray sinfining misollari) yoki shunga
o'xshash ob'ektlar bo'lishi kerak. Bu erda regressiya ma'lumotlarini taqdim etishning
eng oddiy usuli:
x = np.array([
5
,
15
,
25
,
35
,
45
,
55
]).reshape((
-1
,
1
))
y = np.array([
5
,
20
,
14
,
32
,
22
,
38
])
Endi ikkita qator mavjud: kirish x va chiqish y. Siz .reshape () ni x-ga qo'ng'iroq
qilishingiz kerak, chunki bu qator ikki o'lchovli yoki aniqroq bo'lishi kerak - bitta
ustun va kerakli sonli qatorlarga ega. Bu (-1, 1) argument aniq belgilaydi.
Hozir x va y qanday ko'rinishda:
>>>
print(x)
[[
5
]
[
15
]
[
25
]
[
35
]
[
45
]
[
55
]]
>>>
print(y)
[
5
20
14
32
22
38
]
3-qadam: modelni yarating
Ushbu bosqichda chiziqli regressiya modelini yarating va mavjud
ma'lumotlarga moslang.
LinearRegression sinfining regressiya modelini ko'rsatadigan misolini
yarataylik.
model = LinearRegression()
Ushbu operatsiya LinearRegression misoli sifatida o'zgaruvchan modelni
yaratadi. LinearRegression sinfiga bir nechta qo'shimcha parametrlarni berishingiz
mumkin:
• fit_intercept bu segmentni hisoblash kerakmi (otrez (True) yoki uni nolga teng
(False) deb hisoblash).
Normallashtirish - bu kirish parametrlarini (True) yoki yo'qligini (noto'g'ri)
normalizatsiya qilish-qilmaslikni belgilovchi buoolik (sukut bo'yicha noto'g'ri)
parametridir.
• copy_X - bu nusxa ko'chirish (True) yoki kiritish parametrlarini (False) qayta
yozishni tanlashda mantiqiy parametr (asl qiymati bo'yicha).
• n_jobs - bu parallel hisoblashda qatnashadigan jarayonlar sonini aks ettiruvchi
butun son yoki None (asl qiymati). Hech biri hech qanday jarayonni anglatmaydi, -
1 barcha mavjud protsessorlardan foydalanadi.
Bizning misolimizda standart holat holatlari qo'llaniladi.
Modeldan foydalanish vaqti keldi. Birinchi qo'ng'iroq .fit () modelida:
model.fit(x, y)
.Fit () og'irliklar uchun optimal qiymatlarni hisoblaydi? Input va? Mavjud
bo'lgan kirish va chiqish (x va y) ni argument sifatida ishlatish. Boshqacha qilib
aytganda, .fit () modelni hizalaydi. O'zini, o'zgaruvchan modelni qaytaradi. Shuning
uchun, oxirgi ikkita operatsiyani quyidagilar bilan almashtirishingiz mumkin:
model = LinearRegression().fit(x, y)
Ushbu operatsiyani bajarish qisqaroq va avvalgisi bilan bir xil.
4-qadam: Natijalarni oling
Modelni moslashtirgandan so'ng, natijalarni sharhlash uchun qoniqarli
ekanligini tekshirish kerak.
Siz (? ²) belgisini modelga chaqirilgan .score () yordamida olishingiz mumkin:
>>>
r_sq = model.score(x, y)
>>>
print(
'coefficient of determination:'
, r_sq)
coefficient of determination:
0.715875613747954
.score () x predmetik x va regressorni argument sifatida qabul qiladi va qaytadi?
².
modelda koeffitsientni ifodalovchi .intercept_ atributlari va?? ni ifodalovchi
.coef_ bilan? ₁:
>>>
print(
'intercept:'
, model.intercept_)
intercept:
5.633333333333329
>>>
print(
'slope:'
, model.coef_)
slope: [
0.54
]
Yuqoridagi kod "₀" va "₁" ni olish usulini ko'rsatadi. E'tibor bering, .intercept_
bu skalar, .coef_ esa - bu massiv.
? 5.6 = 5.63 ning taxminiy qiymati sizning modelingiz 5.63 ga qachon va
qachon nolga teng javob berishini bashorat qilmoqda. Equality ₁ = 0.54 tengligi,
bashorat qilingan javob bittaga ko'paytirilganda 0,54 ga ko'tarilishini anglatadi.
Shuni esda tutingki, y-ni ikki o'lchovli qator sifatida berishingiz mumkin.
Keyin natijalar farq qilmaydi:
>>>
new_model = LinearRegression().fit(x, y.reshape((
-1
,
1
)))
>>>
print(
'intercept:'
, new_model.intercept_)
intercept: [
5.63333333
]
>>>
print(
'slope:'
, new_model.coef_)
slope: [[
0.54
]]
Ko'rib turganingizdek, misol oldingisiga o'xshash, ammo bu holda .intercept_
bitta elementli bitta o'lchovli massivmi? ₀, va .coef_ bitta elementli ikki o'lchovli
massivmi? ₁.
5-qadam: javobni bashorat qiling
Modelingizdan mamnun bo'lganingizdan so'ng, uni joriy yoki boshqa
ma'lumotlar bilan bashorat qilish uchun ishlatishingiz mumkin.
.Predict () yordamida taxmin qilingan javobni oling:
>>>
y_pred = model.predict(x)
>>>
print(
'predicted response:'
, y_pred, sep=
'\n'
)
predicted response:
[
8.33333333
13.73333333
19.13333333
24.53333333
29.93333333
35.33333333
]
.Predict () dan foydalanib, regressorni argument sifatida o'tkazasiz va tegishli
javobni olasiz.
Bu erda javobni taxmin qilishning deyarli bir xil usuli:
>>>
y_pred = model.intercept_ + model.coef_ * x
>>>
print(
'predicted response:'
, y_pred, sep=
'\n'
)
predicted response:
[[
8.33333333
]
[
13.73333333
]
[
19.13333333
]
[
24.53333333
]
[
29.93333333
]
[
35.33333333
]]
Bunday holda, siz x massivining har bir elementini model.coef_ bilan
ko'paytirasiz va mahsulotingizga model.intercept_ qo'shasiz.
Xulosa avvalgi misoldan o'lchovlar sonidan farq qiladi. Endi bashorat qilingan
javob bir o'lchovli bo'lgan oldingi holatdan farqli o'laroq, ikki o'lchovli qatordir.
X o'lchovlar sonini bittaga o'zgartiring va siz bir xil natijani ko'rasiz. Buning
uchun x-ni model.coef_ ga ko'paytirganda x.reshape (-1), x.flatten () yoki x.ravel ()
bilan almashtiring.
Amalda, bashorat qilish uchun ko'pincha regressiya modeli qo'llaniladi. Bu
boshqa, yangi kirishlar asosida chiqishni hisoblash uchun moslashtirilgan
modellardan foydalanishingiz mumkin degan ma'noni anglatadi:
>>>
x_new = np.arange(
5
).reshape((
-1
,
1
))
>>>
print(x_new)
[[
0
]
[
1
]
[
2
]
[
3
]
[
4
]]
>>>
y_new = model.predict(x_new)
>>>
print(y_new)
[
5.63333333
6.17333333
6.71333333
7.25333333
7.79333333
]
Bu erda .predict () x_new yangi regressatorida qo'llaniladi va natijada y_new
javob beradi. Ushbu misol yordamida 5 (eksklyuziv) - 0, 1, 2, 3 va 4 elementlari bilan
qator yaratish uchun NumPy-dan arange () dan foydalaniladi.
Do'stlaringiz bilan baham: |