စက်သင်ယူခြင်း - ရထား/စမ်းသပ်မှု
သင်၏မော်ဒယ်ကိုအကဲဖြတ်ပါ။
Machine Learning တွင် ကျွန်ုပ်တို့သည် ကားတစ်စီး၏ အလေးချိန်နှင့် အင်ဂျင်အရွယ်အစားကို သိသောအခါ ယခင်အခန်းတွင်ကဲ့သို့ အချို့သောဖြစ်ရပ်များ၏ ရလဒ်ကို ခန့်မှန်းရန် မော်ဒယ်များကို ဖန်တီးပါသည်။
မော်ဒယ်က ကောင်းလား ဆိုတာကို တိုင်းတာဖို့၊ Train/Test လို့ခေါ်တဲ့ နည်းလမ်းကို အသုံးပြုနိုင်ပါတယ်။
ရထား/စာမေးပွဲဆိုတာဘာလဲ
ရထား/စမ်းသပ်မှုသည် သင့်မော်ဒယ်၏ တိကျမှုကို တိုင်းတာရန် နည်းလမ်းတစ်ခုဖြစ်သည်။
ဒေတာအစုံကို နှစ်စုံခွဲထားသောကြောင့် လေ့ကျင့်ရေး/စမ်းသပ်မှုဟု ခေါ်သည်- လေ့ကျင့်ရေးအစုံနှင့် စမ်းသပ်မှုအစုံ။
သင်တန်းအတွက် 80% နှင့် 20% စမ်းသပ်ရန်။
သင် လေ့ ကျင့်မှုအစုံကိုအသုံးပြု၍ မော်ဒယ်ကိုလေ့ကျင့်ပါ။
စမ်းသပ်မှု အစုံကို အသုံးပြု၍ မော်ဒယ်ကို စမ်းသပ်ပါ ။
Train the model ဆိုသည်မှာ မော်ဒယ်ကို ဖန်တီး သည်။
မော်ဒယ်ကို စမ်းသပ်ခြင်း ဆိုသည်မှာ မော်ဒယ်၏ တိကျမှုကို စမ်းသပ်ခြင်းဖြစ်သည်။
Data Set ဖြင့် စတင်ပါ။
သင်စမ်းသပ်လိုသော ဒေတာအတွဲတစ်ခုဖြင့် စတင်ပါ။
ကျွန်ုပ်တို့၏ဒေတာအစုံသည် ဆိုင်တစ်ဆိုင်ရှိ ဖောက်သည် 100 နှင့် ၎င်းတို့၏ စျေးဝယ်မှုအလေ့အထများကို သရုပ်ဖော်ထားသည်။
ဥပမာ
import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40,
100) / x
plt.scatter(x, y)
plt.show()
ရလဒ်:
x ဝင်ရိုးသည် ဝယ်ယူမှုတစ်ခုမပြုလုပ်မီ မိနစ်အရေအတွက်ကို ကိုယ်စားပြုသည်။
y ဝင်ရိုးသည် ဝယ်ယူမှုတွင် အသုံးပြုသည့် ငွေကြေးပမာဏကို ကိုယ်စားပြုသည်။
ရထား/စမ်းသပ်မှုသို့ ခွဲထုတ်ပါ။
သင်တန်း အစုံသည် မူရင်း ဒေတာ၏ 80% ကျပန်းရွေးချယ်မှုဖြစ်သင့်သည်။
စမ်းသပ် သတ်မှတ်မှု သည် ကျန် 20% ဖြစ်သင့်သည်။
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
Training Set ကိုပြသပါ။
လေ့ကျင့်မှုအစုံဖြင့် တူညီသော ဖြန့်ကြဲကွက်ကို ပြသပါ-
ဥပမာ
plt.scatter(train_x,
train_y)
plt.show()
ရလဒ်:
မူရင်းဒေတာအတွဲနှင့်တူသောကြောင့် ၎င်းသည် မျှတသောရွေးချယ်မှုဖြစ်ပုံရသည်-
Testing Set ကိုပြသပါ။
စစ်ဆေးမှုအစုံသည် လုံးဝကွဲပြားခြင်းမရှိကြောင်း သေချာစေရန်၊ ကျွန်ုပ်တို့သည်လည်း စမ်းသပ်မှုအစုံကို လေ့လာကြည့်ပါမည်။
ဥပမာ
plt.scatter(test_x,
test_y)
plt.show()
ရလဒ်:
စမ်းသပ်မှုအစုံသည် မူရင်းဒေတာအစုံနှင့်တူသည်-
Data Set ကို အံကိုက်ပါ။
ဒေတာအတွဲက ဘယ်လိုပုံစံလဲ။ ငါ့အမြင်အရတော့ အကောင်းဆုံးက ပိုလီ နိုမီးယားဆုတ်ယုတ်မှုဖြစ်မယ်ထင်တယ် ၊ ဒါကြောင့် ပေါင်းကိန်းဆုတ်ယုတ်မှုမျဉ်းကို ဆွဲကြည့်ရအောင်။
ဒေတာအချက်များမှတစ်ဆင့် မျဉ်းတစ်ကြောင်းဆွဲရန်၊
plot()
ကျွန်ုပ်တို့သည် matplotlib module ၏နည်းလမ်းကို အသုံးပြုသည်-
ဥပမာ
ဒေတာအချက်များမှတဆင့် polynomial ဆုတ်ယုတ်မှုမျဉ်းကို ဆွဲပါ-
import numpy
import
matplotlib.pyplot as plt
numpy.random.seed(2)
x =
numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y =
y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))
myline = numpy.linspace(0, 6, 100)
plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()
ရလဒ်:
ဒေတာအတွဲ၏ပြင်ပမှတန်ဖိုးများကိုခန့်မှန်းရန်ကြိုးစားပါက ကျွန်ုပ်တို့အား ထူးထူးခြားခြားသောရလဒ်များပေးစွမ်းနိုင်သော်လည်း ရလဒ်သည် ကိန်းဂဏန်းပမာဏဆုတ်ယုတ်မှုနှင့်ကိုက်ညီသည့် ဒေတာအစုံ၏အကြံပြုချက်ကို ပြန်လည်ရယူနိုင်သည်။ ဥပမာ- ဆိုင်တွင် 6 မိနစ်ကြာ ဖောက်သည်တစ်ဦးသည် 200 ဖိုး ၀ယ်ယူမည်ဟု စာကြောင်းက ညွှန်ပြသည်။ ၎င်းသည် အလွန်အကျုံးဝင်သည့် လက္ခဏာဖြစ်နိုင်သည်။
ဒါပေမယ့် R-squared ရမှတ်ကော ဘယ်လိုလဲ။ R-squared ရမှတ်သည် ကျွန်ုပ်၏ ဒေတာအစုံသည် မော်ဒယ်နှင့် လိုက်ဖက်မှု မည်မျှ ကောင်းမွန်ကြောင်း ညွှန်ပြပါသည်။
R2
R-squared ဟုလည်းခေါ်သော R2 ကို သတိရပါ။
၎င်းသည် x ဝင်ရိုးနှင့် y ဝင်ရိုးကြား ဆက်စပ်မှုကို တိုင်းတာပြီး တန်ဖိုးသည် 0 မှ 1 မှ ကွာသည် ၊ 0 သည် ဆက်နွယ်မှုမရှိဟု အဓိပ္ပါယ်ရပြီး 1 သည် လုံးဝဆက်စပ်မှုကို ဆိုလိုသည်။
sklearn module တွင် r2_score()
ဤဆက်နွယ်မှုကို ရှာဖွေရာတွင် ကူညီပေးမည့် နည်းလမ်းတစ်ခုရှိသည်။
ဤကိစ္စတွင် ဖောက်သည်တစ်ဦးသည် ဆိုင်တွင်ရှိနေသော မိနစ်များနှင့် ငွေမည်မျှသုံးစွဲသည်တို့အကြား ဆက်စပ်မှုကို တိုင်းတာလိုပါသည်။
ဥပမာ
ကျွန်ုပ်၏ လေ့ကျင့်ရေးဒေတာသည် ကိန်းဂဏန်းများ ဆုတ်ယုတ်မှုတွင် မည်မျှ သင့်လျော်သနည်း။
import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40,
100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y,
4))
r2 = r2_score(train_y, mymodel(train_x))
print(r2)
မှတ်ချက်- ရလဒ် 0.799 သည် OK ဆက်ဆံရေးရှိကြောင်း ပြသသည်။
Testing Set ကို ယူလာပါ။
ယခု ကျွန်ုပ်တို့သည် အနည်းဆုံး လေ့ကျင့်ရေးဒေတာနှင့် ပတ်သက်လာလျှင် အိုကေသော မော်ဒယ်ကို ဖန်တီးလိုက်ပါသည်။
ယခု ကျွန်ုပ်တို့သည် တူညီသောရလဒ်ကို ပေးသည်ရှိမရှိ သိရန် စမ်းသပ်ဒေတာဖြင့် မော်ဒယ်ကို စမ်းသပ်လိုပါသည်။
ဥပမာ
စမ်းသပ်ဒေတာကို အသုံးပြုသောအခါ R2 ရမှတ်ကို ရှာကြည့်ကြပါစို့။
import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40,
100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y,
4))
r2 = r2_score(test_y, mymodel(test_x))
print(r2)
မှတ်ချက်- ရလဒ် 0.809 သည် မော်ဒယ်သည် စမ်းသပ်သတ်မှတ်မှုနှင့် ကိုက်ညီကြောင်း ပြသပြီး အနာဂတ်တန်ဖိုးများကို ခန့်မှန်းရန် မော်ဒယ်ကို အသုံးပြုနိုင်ကြောင်း ကျွန်ုပ်တို့ ယုံကြည်ပါသည်။
တန်ဖိုးများကို ခန့်မှန်းပါ။
ယခုကျွန်ုပ်တို့၏မော်ဒယ်သည် OK ကိုသတ်မှတ်ထားပြီး၊ တန်ဖိုးအသစ်များကို စတင်ခန့်မှန်းနိုင်ပါပြီ။
ဥပမာ
ဆိုင်မှာ ၅ မိနစ်လောက်နေမယ်ဆိုရင် ၀ယ်သူဖောက်သည်က ပိုက်ဆံဘယ်လောက်ကုန်မလဲ။
print(mymodel(5))
ပုံသေပုံနှင့် ကိုက်ညီပုံပေါ်သည့်အတိုင်း ဖောက်သည်သည် 22.88 ဒေါ်လာ သုံးစွဲမည်ဟု ဥပမာက ခန့်မှန်းထားသည်။