1. 程式人生 > >Python機器學習及實踐——基礎篇10(K近鄰迴歸)

Python機器學習及實踐——基礎篇10(K近鄰迴歸)

    在基礎篇5中提到裡這類模型不需要訓練引數的特點。在迴歸任務重,k近鄰(迴歸)模型同樣只是藉助周圍K個最近訓練樣本的目標數值,對待測樣本的迴歸值進行決策。自然,也衍生出衡量待測樣吧迴歸值的不同方式,即到底是對K個近鄰目標數值使用普通的算術平均演算法,還是同時考慮距離的差異進行加權平均。因此,本篇也初始化不同配置的K近鄰(迴歸)模型來比較迴歸效能的差異。
    下述程式碼展示瞭如何使用兩種不同配置的K近鄰迴歸模型對美國波士房價資料進行迴歸預測。
# 從sklearn.neighbors匯入KNeighborRegressor(K近鄰迴歸器)。
from sklearn.neighbors import KNeighborsRegressor

# 初始化K近鄰迴歸器,並且調整配置,使得預測的方式為平均迴歸:weights='uniform'。
uni_knr = KNeighborsRegressor(weights='uniform')
uni_knr.fit(X_train, y_train)
uni_knr_y_predict = uni_knr.predict(X_test)

# 初始化K近鄰迴歸器,並且調整配置,使得預測的方式為根據距離加權迴歸:weights='distance'。
dis_knr = KNeighborsRegressor(weights='distance')
dis_knr.fit(X_train, y_train)
dis_knr_y_predict = dis_knr.predict(X_test)

    接下來我們使用下述程式碼,就不同迴歸預測配置下的K近鄰模型進行效能評估。其輸出表明:相比之下,採用加權平均的方式迴歸房價具有更好的預測效能。

    對兩種不同配置的K近鄰迴歸模型在美國波士頓房價資料上進行預測效能的評估

# 使用R-squared、MSE以及MAE三種指標對平均迴歸配置的K近鄰模型在測試集上進行效能評估。
print 'R-squared value of uniform-weighted KNeighorRegression:', uni_knr.score(X_test, y_test)
print 'The mean squared error of uniform-weighted KNeighorRegression:', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(uni_knr_y_predict))
print 'The mean absoluate error of uniform-weighted KNeighorRegression', mean_absolute_error(ss_y.inverse_tr
R-squared value of uniform-weighted KNeighorRegression: 0.690345456461
The mean squared error of uniform-weighted KNeighorRegression: 24.0110141732
The mean absoluate error of uniform-weighted KNeighorRegression 2.96803149606
# 使用R-squared、MSE以及MAE三種指標對根據距離加權迴歸配置的K近鄰模型在測試集上進行效能評估。
print 'R-squared value of distance-weighted KNeighorRegression:', dis_knr.score(X_test, y_test)
print 'The mean squared error of distance-weighted KNeighorRegression:', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(dis_knr_y_predict))
print 'The mean absoluate error of distance-weighted KNeighorRegression:', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(dis_knr_y_predict))
R-squared value of distance-weighted KNeighorRegression: 0.719758997016
The mean squared error of distance-weighted KNeighorRegression: 21.7302501609
The mean absoluate error of distance-weighted KNeighorRegression: 2.80505687851
    特點分析:K近鄰(迴歸)與K近鄰(分類)一樣,均屬於無引數模型,同樣沒有引數訓練過程。但是由於其模型的計算方法非常直觀,因此深受廣大初學者的喜愛。本篇討論了兩種根據資料樣本的相似程度預測迴歸值的方法,並且驗證採用K近鄰加權平均的迴歸策略可以獲得較高的模型效能,供大家參考。