現實世界的曲線關係都是通過增加多項式實現的,現在解決多項式回歸問題
住房**樣本
樣本影象
importmatplotlib.font_manager as fm
import
matplotlib.pyplot as plt
myfont = fm.fontproperties(fname='
c:\windows\fonts\simsun.ttc')
#plt.figure() # 例項化作圖變數
plt.title('
房價面積**樣本
', fontproperties = myfont) #
影象標題
plt.xlabel('
面積(平方公尺)
', fontproperties = myfont) #
x軸文字
plt.ylabel('
**(萬元)
', fontproperties = myfont) #
y軸文字
#plt.axis([30, 400, 100, 400])
plt.grid(true) #
是否繪製網格線
x = [[50], [100], [150], [200], [250], [300]]
y = [[150], [200], [250], [280], [310], [330]]
x_test = [[250], [300]] #
用來做最終效果測試
y_test = [[310], [330]] #
用來做最終效果測試
#plt.plot(x, y, 'b.')#點
#plt.plot(x, y, 'b-')#線
plt.scatter(x, y, marker='
*',color='
blue
',label='
房價面積**樣本')
用線性回歸
新增以下**
model =linearregression()model.fit(x, y)
print('
一元線性回歸 r-squared
實際情況是,如果房屋面積一味的增加,房價並不會線性增長,因此線性關係已經無法描述真實的房價問題
採用多項式回歸
首先我們用二次多項式
#例項化乙個二次多項式特徵例項
quadratic_featurizer = polynomialfeatures(degree=2)
#用二次多項式對樣本x值做變換
x_train_quadratic =quadratic_featurizer.fit_transform(x)
#建立乙個線性回歸例項
regressor_model =linearregression()
#以多項式變換後的x值為輸入,代入線性回歸模型做訓練
regressor_model.fit(x_train_quadratic, y)
#設計x軸一系列點作為畫圖的x點集
xx = np.linspace(30, 400, 100)
#把訓練好x值的多項式特徵例項應用到一系列點上,形成矩陣
xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
yy_predict =regressor_model.predict(xx_quadratic)
#用訓練好的模型作圖
plt.plot(xx, yy_predict, 'r-'
)x_test_quadratic =quadratic_featurizer.transform(x_test)
print('
二次回歸 r-squared
', regressor_model.score(x_test_quadratic, y_test))##
plt.show() #
展示影象
繼續三次回歸
cubic_featurizer = polynomialfeatures(degree=3)x_train_cubic =cubic_featurizer.fit_transform(x)
regressor_cubic =linearregression()
regressor_cubic.fit(x_train_cubic, y)
xx_cubic = cubic_featurizer.transform(xx.reshape(xx.shape[0], 1))
plt.plot(xx, regressor_cubic.predict(xx_cubic))
x_test_cubic =cubic_featurizer.transform(x_test)
print('
三次回歸 r-squared
', regressor_cubic.score(x_test_cubic, y_test))
plt.show()
#展示影象
可以看到三次回歸比二次回歸效果又好了一些,但是不是很明顯。所以二次回歸更可能是最適合的回歸模型,三次回歸可能有過擬合現象
參考:
機器學習筆記 多項式回歸
比如你的資料分布,是符合y 0.5 x 2 x 2的.那你用y ax b去擬合,無論如何都沒法取的很好的效果.通過上面的分析,我們可以看出,我們想做的事情是對樣本做公升維 即增加樣本的特徵數目 sklean中完成這一功能的類叫做polynomialfeatures.classsklearn.prep...
Python 多項式回歸
多項式線性回歸 1 多項式線性方程 與多元線性回歸相比,它只有乙個自變數,但有不同次方數。2 舉例 import numpy as np import matplotlib.pyplot as plt import pandas as pd dataset pd.read csv data.csv ...
多項式回歸
import numpy as np import matplotlib.pyplot as plt x np.random.uniform 3,3,size 100 x x.reshape 1,1 y 0.5 x 2 x 2 np.random.normal 0,1,100 plt.scatter...