python 機器學習多項式回歸

2022-06-09 16:48:13 字數 3241 閱讀 7297

現實世界的曲線關係都是通過增加多項式實現的,現在解決多項式回歸問題

住房**樣本

樣本影象

import

matplotlib.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...