Machine Learning筆記——迴歸模型(三)

Polynomial regression多項式迴歸

這裏我們沿用上一節的房價數據,對LSTAT(底層人口比例)和MEDV(房價)做迴歸分析(原因見Axes網格圖),同時將多項式迴歸結果與簡單線性迴歸效果作比較。其中關於多項式迴歸在https://blog.csdn.net/After__today/article/details/81352891中有介紹。

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

os.chdir('C:/Users/Administrator/Desktop/jpynb/機器學習')
df = pd.read_csv('./data/housing.csv')
df.head()

# 載入數據
X = df[['LSTAT']].values
y = df['MEDV'].values

# 添加模型
pr = LinearRegression()
lr = LinearRegression()
# degree多項式的階數
quadratic = PolynomialFeatures(degree=2)
# fit_transform對數據預處理,先調用fit(),後調用transform()
X_quad = quadratic.fit_transform(X)

# 用來做預測的數據,np.newaxis規範矩陣計算
X_fit = np.arange(X.min(), X.max(), 1)[:, np.newaxis]

# 訓練簡單線性模型
lr.fit(X, y)
y_lin_fit = lr.predict(X_fit)

# 訓練多項式模型
pr.fit(X_quad, y)
y_quad_fit = pr.predict(quadratic.fit_transform(X_fit))

# 畫出結果圖
plt.scatter(X, y, label='training points')
plt.plot(X_fit, y_lin_fit, label='linear fit', linestyle='--')
plt.plot(X_fit, y_quad_fit, label='quadratic fit')
plt.legend(loc='upper left')
plt.tight_layout()

看看效果圖:

可以很直觀看出多項式迴歸的效果明顯好於簡單線性迴歸,我們可以通過調整多項式的階數來使模型效果更加逼近數據點,做非線性迴歸。

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