【传统机器学习】之KNN回归算法(二)

回归与分类概念,参考博文:https://blog.csdn.net/u010916338/article/details/105203140

上一篇博客当中讲到knn算法可以做分类,其实knn也是可以做回归的,那么knn如何做回归呢?

一、knn回归介绍

KNN做回归和分类的主要区别在于最后做预测时候的决策方式不同。KNN做分类预测时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。而KNN做回归时,一般是选择平均法,即最近的K个样本的样本输出的平均值作为回归预测值。

二、knn回归步骤

1、计算样本到数据集中其它每个样本的距离。

2、按照距离的远近排序。

3、选取与当前样本最近的k个样本,作为该样本的邻居。

4、求这k个邻居的输出值(标签值)的均值作为新样本的输出。

import numpy as np
#导入knn算法包
from sklearn.neighbors import KNeighborsRegressor 
#导入误差函数
from sklearn.metrics import mean_squared_error,mean_absolute_error
#导入标准化包
from sklearn.preprocessing import StandardScaler  # 标准化数据
X_train = np.array([[158,1],[170,1],[183,1],[191,1],[155,0],[163,0],[180,0],[158,0],[170,0]])
y_train = [64,86,84,80,49,59,67,54,67]
X_test = np.array([[168,1],[180,1],[160,0],[169,0]])
y_test = [65,96,52,67]
ss = StandardScaler()
X_train_scaled = ss.fit_transform(X_train)
X_test_scaled = ss.transform(X_test)
K = 3
KN = KNeighborsRegressor(n_neighbors=K)
#提问,不是说knn没有训练过程吗?为什么还要调用fit函数呢?
KN.fit(X_train_scaled,y_train)
predictions = KN.predict(X_test_scaled)
print('预测的数据:',predictions)
print('MAE为',mean_absolute_error(y_test,predictions))  # 平均绝对误差
print('MSE为',mean_squared_error(y_test,predictions))  # 均方误差

输出结果

预测的数据: [78.         83.33333333   54.         64.33333333]
MAE为 7.583333333333336
MSE为 85.13888888888893

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值