Polinomli regressiya algoritmi asosida model yaratish

Yuklangan vaqt:

02.12.2024

Ko'chirishlar soni:

0

Hajmi:

344.2 KB
Mavzu:  Polinomli regressiya algoritmi asosida model yaratish .
Mundareja:
Iqtisodiy obyektni shakllantirish .............................................................................................................. 1
Obyekt ustida ma’lumotlar tahlili ............................................................................................................ 2
Model ishlab chiqish uchun algoritmning tahlili amalga oshirish ............................................................. 5
Python dasturlash tilida modelni realizatsiya qilish ( Sklearn moduli ) .................................................... 6
Modelni baholaydi( MAE, RMSE, R-kvadrat) ............................................................................................ 8
Python dasturlash tili orqali natijalarni garafik tasvirini yaratish ( MatPlotlib moduli ) ............................ 8
Iqtisodiy obyektni shakllantirish
Birinchi qadamda biz iqtisodiy obyekt tanlab oldek buning uchun tibbiyotga
doir   ma’lumotlarni   o’zida   jamlagan   va   quyidagi   xususiyatlarga   ega   bo’lgan
obyektda ma’lumotlar to’plamini shakllantirdek:
Bizning obyektimizda 1337 ta satrdan iborat  ma’lumotlar  to’plamini shakllantirib
oldek. Obyekt ustida ma’lumotlar tahlili
Bu   qadamda   bizning   obyektimizdagi   NaN   qiymatlarni   bartaraf   etish,
xususiyatlarning korrelyatsion tahlili, normallashtirish, ma’lumotlar to’plamini test
va   o’quv   to’plamlariga   bo’lish   kabi   amallarni   bajarishimiz   kerak   bo’ladi.   Buning
uchun   Python   dasturlash   tilidagi   Pandas   modulidan   foydalanamiz.   Pandas   -   bu
ochiq manbali kutubxona bo'lib, u asosan aloqador yoki etiketli ma'lumotlar bilan
oson va intuitiv tarzda ishlash uchun yaratilgan. U turli xil ma'lumotlar tuzilmalari
va   raqamli   ma'lumotlar   va   vaqt   seriyalarini   manipulyatsiya   qilish   uchun
operatsiyalarni   taqdim   etadi.   Bu   kutubxona   NumPy   kutubxonasi   ustiga   qurilgan.
Pandas   tez   va   u   foydalanuvchilar   uchun   yuqori   unumdorlikka   ega.   Dastlab   bu
modulni ishchi muhitga o’rnatib olishimiz kerak bo’ladi. Buning uchun terminalga
quyidagi buyruqni yozamiz:  pip install pandas
Biz esa google colabdan foydalanamiz, unda yangi loyiha yaratamiz, ma’lumotlar
to’plamimizni esa google diskka yuklab loyihada uni chaqirib olamiz:
import  pandas  as  pd    # pandas kutubxonasi import 
qilindi
df = pd.read_excel ("./Zayniddin exsel.xlsx", 
index_col= 0 )   # data yuklandi
df  #data chop qilindi
natija:
Butun DataFrame bo’yicha ma’lumot olamiz.
Endi   Nan   qiymatlarni   bartaraf   etish   malasini   ko’rib   chiqamiz.   Pandas   modulida
DataFrame bilan ishlash uchun mo’ljallangan  isnull()  funksiyasi mavjud bu har bir
qiymatni tekshiradi biz uni quyidagicha qo’llaymiz: import  pandas  as  pd    # pandas kutubxonasi import 
qilindi
df = pd.read_excel ("./Zayniddin 
exsel.xlsx”, index_col= 0 )   # data yuklandi
df.isnull () .values. any () # data tekshirildi
df.isnull () .values. any ()
Bu   kod   mantiqiy   qiymat   qaytaradi(rost   yoki   yolg’on).   Agar   rost   bo’lsa   bo’sh
qiymat mavjud aks holda bo’sh qiymat yo’q bo’ladi.
Ma’lumotlar   to’plamini   normallashtirish:   Raqamli   xususiyatlarni   umumiy
miqyosga   keltirish   uchun   masshtablash,   kattaroq   kattalikdagi   xususiyatlarni
modelda   hukmronlik   qilishiga   yo‘l   qo‘ymaydi.   Ma’lumotlarni   normallashtirish
usullariga quyidagilarni misol keltirishimiz mumkin: Masshtablash yoki Min-Max
Scaling.   Masshtablash   ma’lumotlarni   0-100   yoki   0-1   kabi   ma’lum   bir   shkalaga
mos   keladigan   tarzda   o‘zgartirishni   anglatadi   Buning   uchun   ko‘chmas   mulk
ma’lumotlar to’plamidagi biror ustun qiymatlarining min( xmin ) va max( xmax )
qiymatlari   topiladi.   Keyin   esa   ustundagi   har   bir   qiymat   x   quyidagi   (1)   formula
asosida hisoblab chiqiladi:xyangi	=	x−	xmin	
xmax	−	xmin
Bu   bizga   ma’lumotlar   ustida   ishlash   davomida   vaqt   jihatdan   yutishga   imkon
beradigan   usuldir.   Bizning   ma’lumotlar   to’plamimizda   bizga   kerakli   hamma
ma’lumotlar normallashtirilgan ko’rinishdadir.
Endi   xususiyatlarning  korrelyatsion  tahlili  amalga  oshiramiz.   Korrelyatsiya  –   bu
Datasetdagi   xususiyatlar   o’rtasidagi   bir   –   biri   bilan   bog’liqlik   darajasining
koeffitsyentidir.
import  pandas  as  pd    # pandas kutubxonasi import 
qilindi
df = pd.read_excel ("./Zayniddin 
exsel .xlsx" , index_col= 0 )   # data yuklandi
df.corr ()   #xususiyatlarning korrelyatsiyasi
natija: Ko’rib   turinibniki   faqat   raqam   turidagi   ma’lumotlar   o’rtasidagi   korrelyatsiya
tahlilini   amalga   oshirmoqda.   Bizga   Satr   turidagi   ma’lumotni   tahlil   qilish   uchun
satrli ma’lumotni raqamli turga o’g’irishimiz kerak.
jinsi = { 'ayol' : 1 , 'erkak' : 2 }
df.jins = [jinsi[item]  for  item  in  df.jins ]
df
natija:
Endi   Datasetdagi   barcha   ma’lumotlar   raqamli   turga   o’tdi.   Korrelyatsiya   tahlilini
qayta o’tkazamiz: Bu   yerdan   ko’rinishib   turibdike   To’lov   uchun   eng   mos   keluvchi   xususiyatlar
chekuvchilar   va   yosh,   jins   kabi   xususiyatlardir,   ya’ni   eng   yosh   oshani   sari   ko’p
to’lov qilishadi deb tushunish lozim.
Ma’lumotlarni ikki qismga bo’lamiz: testlash uchun va o’qitish uchun.
Ma’lumotlarni bo’lish bashorat qilinadigan xususiyat bo’yicha amalga oshiriladi:
from  sklearn.model_selection  import  train_test_split
import  numpy  as  np
train_set ,  test_set = 
train_test_split ( df , test_size= 0.15 , random_state= 28 )
# o'quv ma'lumotlar to'plami
x_train = train_set.drop ( "maoshi" , axis= 1 ) .values
y_train = train_set [ "maoshi" ] .values
#    test ma'lumotlar to'plami
x_test = test_set.drop ( "maoshi" , axis= 1 ) .values
y_test = test_set [ "maoshi" ] .values
Model ishlab chiqish uchun algoritmning tahlili amalga oshirish
Ko'p   nomli   regressiya   –   bog'liq   va   mustaqil   o'zgaruvchi   o'rtasidagi
munosabatni   n-darajali   ko'phad   sifatida   modellashtiruvchi   regressiya   algoritmi.
Polinom regressiya tenglamasi quyida keltirilgan:Y=a0+a1x1+a2x12+a3x13+…	+anx1n Train data 
(85%)Test data 
(15%) Polinom   regressiyasida   ishlatiladigan   ma'lumotlar   to'plami   chiziqli   bo'lmagan
xususiyatga   ega.   U   murakkab   va   chiziqli   bo'lmagan   funktsiyalar   va   ma'lumotlar
to'plamlariga mos keladigan chiziqli regressiya modelidan foydalanadi.
Polinomli regressiyaga ehtiyoj:
MLda polinomli regressiyaga bo'lgan ehtiyojni quyidagi fikrlarda tushunish
mumkin: Agar chiziqli modelni chiziqli ma'lumotlar to'plamiga qo'llasak , u bizga
oddiy   chiziqli   regressiyada   ko'rganimizdek   yaxshi   natija   beradi,   lekin   agar   biz
chiziqli   bo'lmagan   ma'lumotlar   to'plamida   bir   xil   modelni   hech   qanday
o'zgartirishlarsiz   qo'llasak   xato   darajasi   yuqori   bo'ladi   va   aniqlik   pasayadi.
Shunday   qilib,   ma'lumotlar   nuqtalari   chiziqli   bo'lmagan   tarzda   joylashtirilgan
bunday   holatlar   uchun   bizga   Polinomial   regressiya   modeli   kerak   .   Chiziqli
ma'lumotlar   to'plami   va   chiziqli   bo'lmagan   ma'lumotlar   to'plamining   quyidagi
taqqoslash diagrammasi yordamida biz buni yaxshiroq tushunishimiz mumkin.
Yuqoridagi rasmda biz chiziqli bo'lmagan tarzda joylashtirilgan ma'lumotlar
to'plamini oldik. Shunday qilib, agar biz uni chiziqli model bilan qoplashga harakat
qilsak,   u   hech   qanday   ma'lumot   nuqtasini   deyarli   qamrab   olmasligini   aniq
ko'rishimiz mumkin. Egri  chiziq Polinomial  modeldagi  ma'lumotlar  nuqtalarining
ko'pini   qoplash   uchun   mos   keladi.Demak,   agar   ma'lumotlar   to'plami   chiziqli
bo'lmagan   tarzda   joylashtirilgan   bo'lsa,   biz   oddiy   chiziqli   regressiya   o'rniga
Polinomli regressiya modelidan foydalanishimiz kerak.
Python dasturlash tilida modelni realizatsiya qilish ( Sklearn moduli )  
Bu erda biz Python yordamida polinomial  regressiyasini  amalga oshiramiz.
Biz   buni   Polinomial   regressiya   modelini   oddiy   chiziqli   regressiya   modeli   bilan
solishtirish orqali tushunamiz. Polinomli regressiya uchun qadamlar:
Polinom regressiyasining asosiy bosqichlari quyida keltirilgan:
 Ma'lumotlarni oldindan qayta ishlash
 Chiziqli regressiya modelini yaratish va uni ma'lumotlar to'plamiga
 moslash
 Polinomial regressiya modelini yaratish va uni ma'lumotlar to'plamiga
 moslash
 Chiziqli   regressiya   va   polinomial   regressiya   modeli   uchun   natijani
vizualizatsiya qilish.
 Natijani bashorat qilish
 import  matplotlib.pyplot  as  plt
 from  sklearn.linear_model  import  
LinearRegression
 %matplotlib  inline

 x = 
np.asanyarray ( df [[ "maoshi" ]] /df [ "maoshi" ] . max ()
)
 y = 
np.asanyarray ( df [[ "sovrinlari" ]] /df [ "sovrinlari
" ] . max ())

 model = LinearRegression ()
 model.fit ( x , y )
 yhat = model.predict ( x )
 plt.figure ( figsize= ( 10 , 6 ))
 plt.plot ( x , y , 'ro' , label= "data" )
 plt.plot ( x , yhat , linewidth= 3.0 , label= "fit" )

 plt.show ()
Quyidagi   kodlarni   ishlatish   natijasida   quyidagi   chizmaga   ega   bo ’ lamiz :
Bu   kod   natijasida   chiziqli   regressiya   algoritmini   realizatsiya   qildek ,   ya ’ ni   bizning
ma ’ lumotlar   to ’ plamimiz   orqali   chiziqli   regressiya   modelini   o ’ qitdek . Modelni baholaydi( MAE, RMSE, R-kvadrat)
Endi chiziqli regressiya algoritmi uchun xatolikni baholaymiz:
Python dasturlash tili orqali natijalarni garafik tasvirini yaratish ( MatPlotlib
moduli )
Polinomial regressiya modelini yaratish:
from  sklearn.preprocessing  import  PolynomialFeatures
p_features = 
PolynomialFeatures ( degree= 3 , include_bias= False )
x_poly=p_features.fit_transform ( x )
model.fit ( x_poly , y )
yhat = model.predict ( x_poly )
plt.figure ( figsize= ( 10 , 6 ))
plt.plot ( x , y , 'ro' , label= "data" )
plt.plot ( x , yhat , linewidth= 4.0 , label= "fit" )
plt.show () Degree = 20:
from  sklearn.preprocessing  import  PolynomialFeatures
p_features = 
PolynomialFeatures ( degree= 20 , include_bias= False )
x_poly=p_features.fit_transform ( x )
model.fit ( x_poly , y )
yhat = model.predict ( x_poly )
plt.figure ( figsize= ( 10 , 6 ))
plt.plot ( x , y , 'ro' , label= "data" )
plt.plot ( x , yhat , linewidth= 4.0 , label= "fit" )
plt.show ()
tasviri: Xulosa:
Xulosa qilib aytganda chiziqli regressiyaga qaraganda polinomial regressiya
qaysidir  ma’lumotlar to’plami uchun eng oqilona yechim bo’la oladi.

Mavzu: Polinomli regressiya algoritmi asosida model yaratish . Mundareja: Iqtisodiy obyektni shakllantirish .............................................................................................................. 1 Obyekt ustida ma’lumotlar tahlili ............................................................................................................ 2 Model ishlab chiqish uchun algoritmning tahlili amalga oshirish ............................................................. 5 Python dasturlash tilida modelni realizatsiya qilish ( Sklearn moduli ) .................................................... 6 Modelni baholaydi( MAE, RMSE, R-kvadrat) ............................................................................................ 8 Python dasturlash tili orqali natijalarni garafik tasvirini yaratish ( MatPlotlib moduli ) ............................ 8 Iqtisodiy obyektni shakllantirish Birinchi qadamda biz iqtisodiy obyekt tanlab oldek buning uchun tibbiyotga doir ma’lumotlarni o’zida jamlagan va quyidagi xususiyatlarga ega bo’lgan obyektda ma’lumotlar to’plamini shakllantirdek: Bizning obyektimizda 1337 ta satrdan iborat ma’lumotlar to’plamini shakllantirib oldek.

Obyekt ustida ma’lumotlar tahlili Bu qadamda bizning obyektimizdagi NaN qiymatlarni bartaraf etish, xususiyatlarning korrelyatsion tahlili, normallashtirish, ma’lumotlar to’plamini test va o’quv to’plamlariga bo’lish kabi amallarni bajarishimiz kerak bo’ladi. Buning uchun Python dasturlash tilidagi Pandas modulidan foydalanamiz. Pandas - bu ochiq manbali kutubxona bo'lib, u asosan aloqador yoki etiketli ma'lumotlar bilan oson va intuitiv tarzda ishlash uchun yaratilgan. U turli xil ma'lumotlar tuzilmalari va raqamli ma'lumotlar va vaqt seriyalarini manipulyatsiya qilish uchun operatsiyalarni taqdim etadi. Bu kutubxona NumPy kutubxonasi ustiga qurilgan. Pandas tez va u foydalanuvchilar uchun yuqori unumdorlikka ega. Dastlab bu modulni ishchi muhitga o’rnatib olishimiz kerak bo’ladi. Buning uchun terminalga quyidagi buyruqni yozamiz: pip install pandas Biz esa google colabdan foydalanamiz, unda yangi loyiha yaratamiz, ma’lumotlar to’plamimizni esa google diskka yuklab loyihada uni chaqirib olamiz: import pandas as pd # pandas kutubxonasi import qilindi df = pd.read_excel ("./Zayniddin exsel.xlsx", index_col= 0 ) # data yuklandi df #data chop qilindi natija: Butun DataFrame bo’yicha ma’lumot olamiz. Endi Nan qiymatlarni bartaraf etish malasini ko’rib chiqamiz. Pandas modulida DataFrame bilan ishlash uchun mo’ljallangan isnull() funksiyasi mavjud bu har bir qiymatni tekshiradi biz uni quyidagicha qo’llaymiz:

import pandas as pd # pandas kutubxonasi import qilindi df = pd.read_excel ("./Zayniddin exsel.xlsx”, index_col= 0 ) # data yuklandi df.isnull () .values. any () # data tekshirildi df.isnull () .values. any () Bu kod mantiqiy qiymat qaytaradi(rost yoki yolg’on). Agar rost bo’lsa bo’sh qiymat mavjud aks holda bo’sh qiymat yo’q bo’ladi. Ma’lumotlar to’plamini normallashtirish: Raqamli xususiyatlarni umumiy miqyosga keltirish uchun masshtablash, kattaroq kattalikdagi xususiyatlarni modelda hukmronlik qilishiga yo‘l qo‘ymaydi. Ma’lumotlarni normallashtirish usullariga quyidagilarni misol keltirishimiz mumkin: Masshtablash yoki Min-Max Scaling. Masshtablash ma’lumotlarni 0-100 yoki 0-1 kabi ma’lum bir shkalaga mos keladigan tarzda o‘zgartirishni anglatadi Buning uchun ko‘chmas mulk ma’lumotlar to’plamidagi biror ustun qiymatlarining min( xmin ) va max( xmax ) qiymatlari topiladi. Keyin esa ustundagi har bir qiymat x quyidagi (1) formula asosida hisoblab chiqiladi:xyangi = x− xmin xmax − xmin Bu bizga ma’lumotlar ustida ishlash davomida vaqt jihatdan yutishga imkon beradigan usuldir. Bizning ma’lumotlar to’plamimizda bizga kerakli hamma ma’lumotlar normallashtirilgan ko’rinishdadir. Endi xususiyatlarning korrelyatsion tahlili amalga oshiramiz. Korrelyatsiya – bu Datasetdagi xususiyatlar o’rtasidagi bir – biri bilan bog’liqlik darajasining koeffitsyentidir. import pandas as pd # pandas kutubxonasi import qilindi df = pd.read_excel ("./Zayniddin exsel .xlsx" , index_col= 0 ) # data yuklandi df.corr () #xususiyatlarning korrelyatsiyasi natija:

Ko’rib turinibniki faqat raqam turidagi ma’lumotlar o’rtasidagi korrelyatsiya tahlilini amalga oshirmoqda. Bizga Satr turidagi ma’lumotni tahlil qilish uchun satrli ma’lumotni raqamli turga o’g’irishimiz kerak. jinsi = { 'ayol' : 1 , 'erkak' : 2 } df.jins = [jinsi[item] for item in df.jins ] df natija: Endi Datasetdagi barcha ma’lumotlar raqamli turga o’tdi. Korrelyatsiya tahlilini qayta o’tkazamiz:

Ko'chirib oling, shunda to'liq holda ko'ra olasiz