波士顿房价数据集——回归分析
分別使用線性回歸、二次多項式回歸、三次多項式回歸對數據集Boston進行回歸分析,并比較這三種回歸的結果。
一、加載數據
# Boston數據集 # 使用load_boston()方法,從sklearn.datasets模塊導入波士頓房價數據集 from sklearn.linear_model import LinearRegression from sklearn.datasets import load_boston boston=load_boston() X=boston.data y=boston.target二、模型訓練
1、線性回歸?
LinearRegression()是sklearn.linear_model的一個類,使用它進行線性回歸分析,先生成一個LinearRegression類的實例,使用實例調用fit(X,y)方法來擬合數組自變量X和目標集y,擬合好回歸方程后,可使用predict()方法預測新樣本的回歸值。
# 線性回歸部分 clf_lin_reg=LinearRegression().fit(X,y) # 生成一個線性回歸模型的實例并調用模型 y_lin_reg_pred=clf_lin_reg.predict(X) # 預測值 import matplotlib.pyplot as plt # 可視化部分 plt.rcParams['font.sans-serif']='SimHei' # 設置字體,顯示中文 plt.rcParams['axes.unicode_minus']=False # 坐標軸刻度顯示負號 plt.rc('font',size=14) # 設置圖中字號大小 plt.figure(figsize=(15,4)) plt.plot(y,marker='o') plt.plot(y_lin_reg_pred,marker='*') plt.legend(['真實值','預測值']) plt.title('Boston房價線性回歸預測值與真實值的對比') plt.show() # 顯示圖形?3、多項式回歸(例:二項式和三項式)
對具有高次項的非線性問題,需使用多項式回歸,scikit-learn對多項式回歸沒有直接的方法,而是在數據預處理模塊sklearn.preprocessing提供了PolynomialFeatures()類,該類將數據集變換為具有高次項特征的新數據集,將原始問題轉化為線性回歸問題,再使用線性回歸方法對轉化后的數據集進行訓練,從而間接地進行多項式回歸分析。
特征與目標之間是飛線性關系,需要使用PolynomialFeatures()類增加高次項特征,將其轉化為線性關系,然后使用fit()方法擬合數據集,使用transform()方法將原始數據集變換為線性形式。
(1)二次多項式回歸:
# 2次多項式回歸 from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression boston_poly=PolynomialFeatures(2) # 參數為2,也就是原始方程的最高次數是2 boston_poly.fit(X) # 擬合多項式模型 X2=boston_poly.transform(X) # 使用擬合模型變換X print('原始數據集X的形狀為:',X.shape) print('X轉換為X2后的形狀為:',X2.shape)對一個原有13個特征的數據集,經二次多項式線性變換后,特征增加到了105個,然后使用線性回歸方法,對新的數據集訓練回歸模型,使用訓練好的多項式特征模型和線性回歸模型分別轉換原始數據集、預測轉換后的數據集,獲取目標值,并比較分析預測值與真實值。
# 新數據集的回歸模型 lin_reg=LinearRegression() lin_reg.fit(X2,y) y_poly2_predict=lin_reg.predict(X2) # 可視化部分 plt.figure(figsize=(15,4)) plt.plot(y,marker='o') plt.plot(y_poly2_predict,marker='*') plt.legend(['真實值','預測值']) plt.title('Boston房價二次多項式回歸預測值與真實值的對比') plt.show()(2)三次多項式回歸
# 三次多項式回歸 boston_poly3=PolynomialFeatures(3) # 參數為3,也就是原方程的最高次數為3 boston_poly3.fit(X) # 擬合多項式模型 X3=boston_poly3.transform(X) # 使用擬合模型變換X print('原始數據集X的形狀為:',X.shape) print('X轉換為X3后的形狀為:',X3.shape)原始數據集的13個特征經三次多項式變換后,增加到了560個特征,這個變換比較大,原始特征數和多項式變換的項最高次數的增加,使線性變換后的特征數急劇增加。
# 線性回歸部分 lin_reg=LinearRegression() # 生成線性回歸模型實例 lin_reg.fit(X3,y) # 調用 y_poly3_predict=lin_reg.predict(X3) # 可視化部分 plt.figure(figsize=(15,4)) plt.plot(y,marker='o') plt.plot(y_poly3_predict,marker='*') plt.legend(['真實值','預測值']) plt.title('Boston房價三次多項式回歸預測值與真實值的對比') plt.show()三、對比分析
為了進一步的對比這3個估計器的性能,分別計算預測值與真實值的相對誤差,繪制相對誤差曲線,并進行對比分析。
# 計算三種回歸模型預處值與真實值的相對誤差 error_linear=(y_lin_reg_pred-y)/y error_poly2=(y_poly2_predict-y)/y error_poly3=(y_poly3_predict-y)/y # 可視化,繪制相對誤差 plt.figure(figsize=(15,4)) plt.plot(error_linear,c='r') plt.plot(error_poly2,c='y') plt.plot(error_poly3,c='b') plt.legend(['linear','poly2','poly3']) plt.title('3個估計器對Boston房價預測值與真實值的相對誤差') plt.show()從這個圖中,我們可以看出,線性回歸模型的相對誤差最大,二次多項式回歸次之,三次多項式回歸模型的相對誤差最小,且擬合和預測效果最好。
總結
以上是生活随笔為你收集整理的波士顿房价数据集——回归分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 波士顿房价数据集 Boston hous
- 下一篇: 【华为出品】物联网全栈开发实战营第2期来