1. 程式人生 > 實用技巧 >mooc機器學習第九天-多項式迴歸

mooc機器學習第九天-多項式迴歸

Mooc上一篇的房屋和價格迴歸預測使用的一元線性迴歸,這次該用多項式看看擬合效果有什麼變化。

1.多項式原理簡單介紹

(1).基本概念

多項式迴歸(Polynomial Regression)是研究一個因變數與一個或多個自變數間多項式的迴歸分析方法。如果自變數只有一個 時,稱為一元多項式迴歸;如果自變數有多個時,稱為多元多項式迴歸。

在一元迴歸分析中,如果依變數y與自變數x的關係為非線性的,但是又找不到適當的函式曲線來擬合,則可以採用一元多項式迴歸。

多項式迴歸的最大優點就是可以通過增加x的高次項對實測點進行逼近,直至滿意為止。

事實上,多項式迴歸可以處理相當一類非線性問題,它在迴歸分析 中佔有重要的地位,因為任一函式都可以分段用多項式來逼近。

2.程式碼

import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn import  linear_model
plt.rcParams['font.sans-serif']=['SimHei']

datasets_X=[]
datasets_Y=[]
fr=open('./prices.txt',
        'r')
lines=fr.readlines()
for line in lines:
    items = line.strip().split(',')
    datasets_X.append(int(items[0]))
    datasets_Y.append(int(items[1]))

length=len(datasets_X)
datasets_X=np.array(datasets_X).reshape([length,1])
datasets_Y=np.array(datasets_Y)
# print(datasets_X)

maxX=np.max(datasets_X)
minX=np.min(datasets_X)
X=np.arange(minX,maxX).reshape([-1,1])


#呼叫演算法
poly_reg=PolynomialFeatures(degree=2)
#degree=2表示建立datasets_X的二 次多項式特徵X_poly。
#更該數值可以提高曲線向真實點的逼近效果
X_poly=poly_reg.fit_transform(datasets_X)#利用建立好的特稱來訓練

#建立線性迴歸器
lin_reg_2=linear_model.LinearRegression()
lin_reg_2.fit(X_poly,datasets_Y)



#影象
plt.scatter(datasets_X,datasets_Y,color='r')
plt.plot(X,lin_reg_2.predict(poly_reg.fit_transform(X)),color='b')
plt.xlabel('Area')
plt.title('房屋價格和麵積關係非線性擬合')
plt.ylabel('Price')
plt.show()

  

圖示效果為4次多項式特徵

參考:https://blog.csdn.net/bxg1065283526/article/details/80043049