အက်သုံးနည်း - ပုံစံပြန်သိန်း

ပိုမိုလေးစား သုံးပတ်လည် (Polynomial Regression)

ကင်းတူးကြောင်း သုံးပတ်လည် တွင် သင့်သည့် အချက်အလက်များ မရှိဘဲ ဖြစ်လာကြောင်း တွေ့ရှိခဲ့လျှင် အသုံးပြုသည် နှင့် သုံးပတ်လည် အသုံးပြုသည် ဖြစ်ကောင်း၍ နှင့် ပိုမိုလေးစား အသုံးပြုသည် အမျိုးအစား ကို ချဲ့ထွင်းနိုင်သည်။

像线性回归一样,多项式回归使用变量 x 和 y 之间的关系来找到绘制数据点线的最佳方法。


工作原理

Python 有一些方法可以找到数据点之间的关系并画出多项式回归线。我们将向您展示如何使用这些方法而不是通过数学公式。

在下面的例子中,我们注册了 18 辆经过特定收费站的汽车。

我们已经记录了汽车的速度和通过时间(小时)。

x 轴表示一天中的小时,y 轴表示速度:

အမှတ်အသား

首先绘制散点图:

import matplotlib.pyplot as plt
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]
plt.scatter(x, y)
plt.show()

ရလဒ်:


အမှတ်အသား တစ်ခု လုပ်

အမှတ်အသား

导入 numpymatplotlib,然后画出多项式回归线:

import numpy
import matplotlib.pyplot as plt
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
myline = numpy.linspace(1, 22, 100)
plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

ရလဒ်:


အမှတ်အသား တစ်ခု လုပ်

例子解释

导入所需模块:

import numpy
import matplotlib.pyplot as plt

创建表示 x 和 y 轴值的数组:

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

NumPy 有一种方法可以让我们建立多项式模型:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

然后指定行的显示方式,我们从位置 1 开始,到位置 22 结束:

myline = numpy.linspace(1, 22, 100)

အချက်အလက် အပိုင်းအခါ ကြီး ကို ပြသပါ:

plt.scatter(x, y)

ပိုင်းအခါ ကျသမှာ အပိုင်းအခါ ကြီး ကို ပြသပါ:

plt.plot(myline, mymodel(myline))

အချက်အလက် ကို ပြသပါ:

plt.show()

R-Squared

အခြေအနေ ကြောင်း အကျယ်း ကို သိရှိရန် အလိုအားလျော်သည်၊ အကျယ်း မရှိဘဲ အခြေအနေ ကြောင်း အကျယ်း မရှိဘဲ အပိုင်းအခါ ကျသမှာ ခန့်မှန်းနိုင်သေးသည်。

အကျယ်း အကျယ်း ကို အမှတ်အသားချပါ၊ r-squared ဟု ခေါ်သည်。

r ပိုင်း အကျယ်း ကို ၀ မှ ၁ ထိ ခန့်မှန်းပါ၊ ၀ က မတူညီသေးသည် ဟု ညွှန်းပြီး ၁ က ၀၀၀၀၀ အရေးသတ်ချက် ဖြစ်သည်。

Python နှင့် Sklearn အဆိုပါ အစိတ်အပိုင်း က အကျိုးသတ္တု ကို ခန့်မှန်းပါ၊ သင်သည် လိုအပ်သော အရာ မှာ x နှင့် y အတွက် အတွက်ချက် အတိုင်း ပြုလုပ်ပါ

အမှတ်အသား

ကျွန်တော်မှ အချက်အလက် ကို ပိုမိုကျယ်ကျယ် ကျသမှာ အပိုင်းအခါ ကျသမှာ မည်ဆိုဖြစ်သလား?

import numpy
from sklearn.metrics import r2_score
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
print(r2_score(y, mymodel(x)))

အမှတ်အသား တစ်ခု လုပ်

အစီအစဉ်များ:အကျိုးသတ္တု ၀.၉၄ က အခြေအနေ ကြောင်း ကောင်းသော ပတ်ဝန်းကျင် ကို တွေ့ရပြီး အိမ်ရှင် အချက်အလက် ကို ခန့်မှန်းရန် အသုံးပြုနိုင်သော အပိုင်းအခါ ကျသမှာ ဖြစ်ပါသည်。

အိမ်ရှင် အချက်အလက် ခန့်မှန်းခြင်း

ယခုအခါ ကမ္ဘာ့အချက်အလက် ကို အသုံးပြု၍ အိမ်ရှင် အချက်အလက် ကို ခန့်မှန်းနိုင်ပါသည်。

ဥပမာ: ညနေ ၁၇ နာရီ ခန့် ကုန်းကိုင်ကိုင် လမ်းကြောင်း ကြီး ခန့်မှန်းပါ

အရာမှာ ဤအချက်အလက် နှင့် တူညီသော အချက်အလက် ကို သို့မဟုတ် mymodel အတွက်ချက်:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

အမှတ်အသား

ညနေ ၁၇ နာရီ အချက်အလက် ကို ခန့်မှန်းပါ:

import numpy
from sklearn.metrics import r2_score
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
speed = mymodel(17)
print(speed)

အမှတ်အသား တစ်ခု လုပ်

ဤအချက်အလက် အစီအစဉ် ပြီး အချက်အလက် ကို ခန့်မှန်းပါ၊ ထို့ပြင် ယင်းအချက်အလက် ကို ကြည့်ရတာ မှာ နှင်းနှင်းချင်းဖြစ်ပါသည်:


အကျယ်းကျယ်းသော အပိုင်းအခါ ကျသမှာမည်ဆိုဖြစ်သလား?

ကျွန်တော်တို့ တစ်ခုခု အကြောင်းကြောင်း ကို တည်ဆောက်ပါ၊ ထိုအခါ ပိုမိုသုံးစွဲသော နည်းလမ်း မှာ အလိုအားလျော် သုံးစွဲနိုင်သော အပိုင်းအခါ အရေးသတ်ချက် မဟုတ်။

အမှတ်အသား

x နှင့် y အရိပ် အချက်အလက် သည် ပိုမိုတိုးမြှင့် ကြောက်သည် အတူ ပြုလုပ်သည်

import numpy
import matplotlib.pyplot as plt
x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
myline = numpy.linspace(2, 95, 100)
plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

ရလဒ်:


အမှတ်အသား တစ်ခု လုပ်

r-squared အချက်အလက် အတွက်

အမှတ်အသား

သင်သည် အကြီးအကျယ် နည်းပါးသော r-squared အချက်အလက် ကို ရရှိသင့်ပါ

import numpy
from sklearn.metrics import r2_score
x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
print(r2_score(y, mymodel(x)))

အမှတ်အသား တစ်ခု လုပ်

ရလဒ်: 0.00995 သည် ပတ်ဝန်းကျင် ကျဆင်းသည် ကို ကိုးကွယ်ပြီး အချက်အလက် စက္ခု သည် ပိုမိုတိုးမြှင့် ကြောက်သည် ကို အခိုင်အမာပြောဆိုသည်