polynomial regression

polynomial regression 即多項式線性迴歸,是處理面對非線性數據但又想對其使用線性算法時的一種數據轉換方式,會增加數據的維度,譬如樣本數據爲x1,x2,那麼轉換後的樣本特徵即爲x1, x2, x1*x2, x1^2, x2^2

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

#模擬數據行數
m = 100

#模擬數據
X = 6 * np.random.rand(m, 1) - 3
y = 0.5 * X ** 2 + X + 2 + np.random.randn(m, 1)

plt.plot(X, y, 'b.')

d = {1: 'g-', 2: 'r+', 10: 'y*'}
#進行三個階數的數據升維
for i in d:
    #實例化一個升維對象
    poly_features = PolynomialFeatures(degree=i, include_bias=False)
    #傳入數據升維
    X_poly = poly_features.fit_transform(X)

    #實例化一個線性迴歸對象
    lin_reg = LinearRegression(fit_intercept=True)
    #傳入升維的數據進行訓練
    lin_reg.fit(X_poly, y)
    #打印w0和w1
    print(lin_reg.intercept_, lin_reg.coef_)

    #預測值
    y_predict = lin_reg.predict(X_poly)
    #繪製預測值
    plt.plot(X_poly[:, 0], y_predict, d[i])

#顯示圖形
plt.show()

輸出結果如下:
[3.61036953] [[1.00258191]]
[2.00571483] [[1.01848704 0.51823898]]
[1.85307569] [[ 0.48269421 0.74063875 1.26271898 0.32872832 -0.58112407 -0.23199038
0.09218806 0.04284833 -0.00476177 -0.00241229]]
繪製圖形如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章