Python ရှိ တစ်စိတ်တစ်ပိုင်း အနည်းဆုံးစတုရန်းများ (တစ်ဆင့်ပြီးတစ်ဆင့်)


machine learning တွင် သင်ကြုံတွေ့ရမည့် အဖြစ်များဆုံး ပြဿနာတစ်ခုမှာ multicollinearity ဖြစ်သည်။ ဒေတာအတွဲတစ်ခုရှိ ကြိုတင်ခန့်မှန်းကိန်းရှင် နှစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော ကိန်းရှင်များသည် အလွန်ဆက်စပ်နေသောအခါ ၎င်းသည် ဖြစ်ပေါ်သည်။

ထိုသို့ဖြစ်လာသောအခါ မော်ဒယ်တစ်ခုသည် လေ့ကျင့်ရေးဒေတာအစုံကို ကောင်းစွာအံဝင်ခွင်ကျနိုင်သော်လည်း ၎င်းသည် လေ့ကျင့်ရေးဒေတာအစုံနှင့် ကိုက်ညီ သော ကြောင့် မမြင်ဖူးသော ဒေတာအတွဲအသစ်တွင် ညံ့ဖျင်းစွာလုပ်ဆောင်နိုင်မည်ဖြစ်သည်။ လေ့ကျင့်ရေးအစုံ။

ဤပြဿနာကို ဖြေရှင်းရန် နည်းလမ်းတစ်ခုမှာ အောက်ပါအတိုင်း လုပ်ဆောင်နိုင်သော partial least squares ဟုခေါ်သော နည်းလမ်းကို အသုံးပြုခြင်းဖြစ်သည်၊

  • ခန့်မှန်းသူနှင့် တုံ့ပြန်မှုကိန်းရှင်များကို စံသတ်မှတ်ပါ။
  • တုံ့ပြန်မှုကိန်းရှင်နှင့် ကြိုတင်ခန့်မှန်းကိန်းရှင်များ နှစ်ခုလုံးတွင် သိသာထင်ရှားသောပြောင်းလဲမှုပမာဏကို ရှင်းပြသည့် p မူလကြိုတင်ခန့်မှန်းကိန်းရှင် များ၏ M linear ပေါင်းစပ်မှုများ (“ PLS အစိတ်အပိုင်းများ” ) ကို တွက်ချက်ပါ
  • ခန့်မှန်းချက်များအဖြစ် PLS အစိတ်အပိုင်းများကို အသုံးပြု၍ မျဉ်းကြောင်းဆုတ်ယုတ်မှုပုံစံနှင့်ကိုက်ညီရန် အနည်းဆုံးစတုရန်းနည်းလမ်းကိုသုံးပါ။
  • မော်ဒယ်တွင် ထားရှိရန် အကောင်းဆုံး PLS အစိတ်အပိုင်းများကို ရှာဖွေရန် k-fold အပြန်အလှန် validation ကို သုံးပါ။

ဤသင်ခန်းစာသည် Python တွင် တစ်စိတ်တစ်ပိုင်း အနည်းဆုံးစတုရန်းများကို လုပ်ဆောင်ပုံအဆင့်ဆင့်ကို ဥပမာပေးထားသည်။

အဆင့် 1- လိုအပ်သော ပက်ကေ့ခ်ျများကို တင်သွင်းပါ။

ပထမဦးစွာ၊ Python တွင် တစ်စိတ်တစ်ပိုင်း အနည်းဆုံးစတုရန်းများလုပ်ဆောင်ရန် လိုအပ်သော ပက်ကေ့ဂျ်များကို တင်သွင်းပါမည်။

 import numpy as np
import pandas as pd
import matplotlib. pyplot as plt
from sklearn. preprocessing import scale 
from sklearn import model_selection
from sklearn. model_selection import RepeatedKFold
from sklearn. model_selection import train_test_split
from sklearn. cross_decomposition import PLSRegression
from sklearn . metrics import mean_squared_error

အဆင့် 2: ဒေတာကို တင်ပါ။

ဤဥပမာအတွက်၊ ကျွန်ုပ်တို့သည် မတူညီသောကား ၃၃ စီးရှိ အချက်အလက်များပါရှိသော mtcars ဟုခေါ်သော ဒေတာအစုံကို အသုံးပြုပါမည်။ ကျွန်ုပ်တို့သည် တုံ့ပြန်မှု variable အဖြစ် hp ကို အသုံးပြုပြီး အောက်ပါ variable များကို ကြိုတင်ခန့်မှန်းသူများအဖြစ် အသုံးပြုပါမည်။

  • စိုင်းစိုင်းခမ်းလှိုင်
  • ပြသခြင်း။
  • ပြောရမှာပါ။
  • ကိုယ်အလေးချိန်
  • qsec

အောက်ဖော်ပြပါ ကုဒ်သည် ဤဒေတာအတွဲကို မည်သို့တင်၍ ပြသရမည်ကို ပြသသည်-

 #define URL where data is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"

#read in data
data_full = pd. read_csv (url)

#select subset of data
data = data_full[["mpg", "disp", "drat", "wt", "qsec", "hp"]]

#view first six rows of data
data[0:6]


        mpg disp drat wt qsec hp
0 21.0 160.0 3.90 2.620 16.46 110
1 21.0 160.0 3.90 2.875 17.02 110
2 22.8 108.0 3.85 2.320 18.61 93
3 21.4 258.0 3.08 3.215 19.44 110
4 18.7 360.0 3.15 3.440 17.02 175
5 18.1 225.0 2.76 3.460 20.22 105

အဆင့် 3- တစ်စိတ်တစ်ပိုင်း အနည်းဆုံး စတုရန်းပုံစံကို ကွက်တိပါ။

အောက်ပါ ကုဒ်သည် ဤဒေတာနှင့် PLS မော်ဒယ်ကို မည်သို့ အံဝင်ခွင်ကျ ဖြစ်စေရန် ဖော်ပြသည်။

cv = RepeatedKFold() သည် မော်ဒယ်စွမ်းဆောင်ရည်ကိုအကဲဖြတ်ရန် k-fold cross-validation ကို အသုံးပြုရန် Python အား ပြောသည်ကို သတိပြုပါဤဥပမာအတွက် ကျွန်ုပ်တို့သည် k = 10 ခေါက်ကို ရွေးကာ 3 ကြိမ် ထပ်ခါထပ်ခါ လုပ်သည်။

 #define predictor and response variables
X = data[["mpg", "disp", "drat", "wt", "qsec"]]
y = data[["hp"]]

#define cross-validation method
cv = RepeatedKFold(n_splits= 10 , n_repeats= 3 , random_state= 1 )

mse = []
n = len (X)

# Calculate MSE with only the intercept
score = -1*model_selection. cross_val_score (PLSRegression(n_components=1),
n.p. ones ((n,1)), y, cv=cv, scoring=' neg_mean_squared_error '). mean ()    
mse. append (score)

# Calculate MSE using cross-validation, adding one component at a time
for i in np. arange (1, 6):
    pls = PLSRegression(n_components=i)
    score = -1*model_selection. cross_val_score (pls, scale(X), y, cv=cv,
               scoring=' neg_mean_squared_error '). mean ()
    mse. append (score)

#plot test MSE vs. number of components
plt. plot (mse)
plt. xlabel (' Number of PLS Components ')
plt. ylabel (' MSE ')
plt. title (' hp ')

Python Cross-Validation Plot ရှိ တစ်စိတ်တစ်ပိုင်း အနည်းဆုံးစတုရန်းများ

ကွက်ကွက်သည် x-ဝင်ရိုးတစ်လျှောက် PLS အစိတ်အပိုင်းများနှင့် y-ဝင်ရိုးတစ်လျှောက် MSE (ပျမ်းမျှစတုရန်းအမှားအယွင်း) စမ်းသပ်မှုကို ပြသသည်။

ဂရပ်ဖ်မှ၊ PLS အစိတ်အပိုင်းနှစ်ခုကို ပေါင်းထည့်ခြင်းဖြင့် စမ်းသပ်မှု၏ MSE လျော့နည်းသွားသည်ကို ကျွန်ုပ်တို့တွေ့မြင်နိုင်သော်လည်း PLS အစိတ်အပိုင်းနှစ်ခုထက်ပို၍ တိုးလာပါသည်။

ထို့ကြောင့် အကောင်းဆုံးမော်ဒယ်တွင် ပထမ PLS အစိတ်အပိုင်းနှစ်ခုသာ ပါဝင်ပါသည်။

အဆင့် 4- ခန့်မှန်းချက်များကို ပြုလုပ်ရန် နောက်ဆုံးပုံစံကို အသုံးပြုပါ။

လေ့လာတွေ့ရှိချက်အသစ်များနှင့်ပတ်သက်၍ ခန့်မှန်းချက်များပြုလုပ်ရန် နောက်ဆုံး PLS မော်ဒယ်ကို PLS အစိတ်အပိုင်းနှစ်ခုဖြင့် အသုံးပြုနိုင်သည်။

အောက်ပါကုဒ်သည် မူရင်းဒေတာကို လေ့ကျင့်ရေးနှင့် စမ်းသပ်မှုအဖြစ် ပိုင်းခြားပုံပြပြီး စမ်းသပ်မှုအစုံတွင် ခန့်မှန်းချက်များပြုလုပ်ရန် PLS မော်ဒယ်ကို PLS အစိတ်အပိုင်းနှစ်ခုဖြင့် အသုံးပြုသည်။

 #split the dataset into training (70%) and testing (30%) sets
X_train , _

#calculate RMSE
pls = PLSRegression(n_components=2)
pls. fit (scale(X_train), y_train)

n.p. sqrt (mean_squared_error(y_test, pls. predict (scale(X_test))))

29.9094

စာမေးပွဲ၏ RMSE သည် 29.9094 ဖြစ်သည်ကို ကျွန်ုပ်တို့မြင်ရသည်။ ၎င်းသည် ခန့်မှန်းထားသော hp တန်ဖိုးနှင့် စမ်းသပ်မှုအစုအဝေးအတွက် လေ့လာတွေ့ရှိထားသော hp တန်ဖိုးကြား ပျမ်းမျှသွေဖည်မှုဖြစ်သည်။

ဤဥပမာတွင်အသုံးပြုထားသော Python ကုဒ်အပြည့်အစုံကို ဤနေရာတွင် တွေ့နိုင်ပါသည်။

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်