Python实现K近邻回归:等权重与不等权重对比
本文介绍如何使用Python的sklearn库实现K近邻回归模型。通过波士顿房价数据集,演示数据预处理、标准化及模型训练流程。重点对比等权重(uniform)与不等权重(distance)两种策略在预测精度上的差异,包括均方误差和平均绝对误差的分析,帮助开发者理解不同权重设置对回归结果的影响。
具体实现代码如下所示:
from sklearn.datasets import load_boston boston = load_boston() from sklearn.cross_validation import train_test_split import numpy as np; X = boston.data y = boston.target X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 33, test_size = 0.25) print 'The max target value is: ', np.max(boston.target) print 'The min target value is: ', np.min(boston.target) print 'The average terget value is: ', np.mean(boston.target) from sklearn.preprocessing import StandardScaler ss_X = StandardScaler() ss_y = StandardScaler() X_train = ss_X.fit_transform(X_train) X_test = ss_X.transform(X_test) y_train = ss_y.fit_transform(y_train) y_test = ss_y.transform(y_test) from sklearn.neighbors import KNeighborsRegressor uni_knr = KNeighborsRegressor(weights = 'uniform') uni_knr.fit(X_train, y_train) uni_knr_y_predict = uni_knr.predict(X_test) dis_knr = KNeighborsRegressor(weights = 'distance') dis_knr.fit(X_train, y_train) dis_knr_y_predict = dis_knr.predict(X_test) from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error print 'R-squared value of uniform weights KNeighorRegressor is: ', uni_knr.score(X_test, y_test) print 'The mean squared error of uniform weights KNeighorRegressor is: ', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(uni_knr_y_predict)) print 'The mean absolute error of uniform weights KNeighorRegressor is: ', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(uni_knr_y_predict)) print 'R-squared of distance weights KNeighorRegressor is: ', dis_knr.score(X_test, y_test) print 'the value of mean squared error of distance weights KNeighorRegressor is: ', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(dis_knr_y_predict)) print 'the value of mean ssbsolute error of distance weights KNeighorRegressor is: ', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(dis_knr_y_predict))
上述内容分享了利用Python实现K近邻回归的完整过程,涵盖了等权重与不等权重两种方法的应用。希望这些示例能为读者提供有价值的参考,同时也欢迎大家继续支持本站获取更多技术分享。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













