Python机器学习及实践——基础篇10(K近邻回归)

Posted Lenskit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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近邻加权平均的回归策略可以获得较高的模型性能,供大家参考。


以上是关于Python机器学习及实践——基础篇10(K近邻回归)的主要内容,如果未能解决你的问题,请参考以下文章

Python机器学习及实践——进阶篇6(超参数搜索)

Python机器学习及实践——进阶篇6(超参数搜索)

Python机器学习及实践 课后小题

机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

机器学习 —— 基础整理:非参数方法——Parzen窗估计k近邻估计;k近邻分类器

机器学习——k近邻算法原理分析与python代码实现