KNN回归算法【配有案例演示】
KNN回归算法
KNN回归算法就是给定数据集与结果,预测后面新出的数据集的结果。与前面KNN最邻近算法比较类似,最临近算法是求出预测数据集与训练数据集的每个点之间的距离,取前k个数据集的结果集,把结果集中占比大的结果作为预测结果。但是KNN回归算法,就是将前k个数据集的结果进行求平均作为预测的数据集。
图文演示
去除Id列和对应的Species列,将其他的4列特征集的前三列作为数据集,后一列作为结果集
案例演示
写KNN回归算法前的数据准备
# 导入jar包
import numpy as np
import pandas as pd
# 获取数据
data = pd.read_csv("iris.csv")
# 随机去前10条数据
data.sample(10)
# 删除两列
data.drop(["Id","Species"],axis=1,inplace=True)
data
# 去重,排除线性相关
data.drop_duplicates(inplace=True)
len(data)
KNN回归算法编写
class KNN:"""KNN 回归算法使用鸢尾花的四个特征进行训练 花瓣长度、宽度 花萼长度、宽度算法的目标是 根据鸢尾花的三个特征,预测最后一个特征的 度量 (预测值)"""def __init__(self,k):"""初始化方法k:int设置k的值,找出相邻数据的个数"""self.k = kdef fit(self,X,y):"""根据参数传递过来的X,对样本数据进行预测-------返回一个数组类型,预测结果"""self.X = np.asarray(X)self.y = np.asarray(y)result = []def predict(self,V):V = np.asarray(V)result = []for v in V:# 计算距离 测试几种某一个数据到训练集中没一个点的距离# 数学模型就是 计算空间中某一点(含 x,y,z坐标) 到空间中一个含有多个点的集合中()dis = np.sqrt(np.sum((v - self.X)**2,axis=1))index = dis.argsort()index = index[:self.k]# 计算训练的平均值作为预测结果#disavg = np.mean(self.y[index])# 将disavg的最大下标的数据添加到result数组中#result.append(disavg.argmax())result.append(np.mean(self.y[index]))return np.asarray(result)def predict2(self,V):""" 加权重 """V = np.asarray(V)result = []for v in V:# 计算距离 测试几种某一个数据到训练集中没一个点的距离# 数学模型就是 计算空间中某一点(含 x,y,z坐标) 到空间中一个含有多个点的集合中()dis = np.sqrt(np.sum((v - self.X)**2,axis=1))index = dis.argsort()index = index[:self.k]# 求k个距离的倒数和he = np.sum(1/(dis[index]+0.0001))# 计算权重(倒数/倒数和)weight = (1/(dis[index]+0.0001)) / he# 计算训练的平均值作为预测结果#disavg = np.mean(self.y[index])# 将disavg的最大下标的数据添加到result数组中#result.append(disavg.argmax())# 将前面K的计算结果(计算结果要与该店所占的权重比相乘)求均值后放入result数组中result.append(np.mean(self.y[index] * weight))return np.asarray(result)
准备KNN回归算法的训练数据集与预测数据集
X = data.sample(len(data),random_state=0)
len(X)
train_X = X.iloc[:120, :-1]
train_y = X.iloc[:120, -1]
test_X = X.iloc[120:, :-1]
test_y = X.iloc[120:, -1]# 创建KNN对象
knn = KNN(k = 3)
knn.fit(train_X,train_y)
result = knn.predict(test_X)
display(result)
display(test_y.values)
np.mean((result-test_y)**2)
进行折线图展示预测结果
import matplotlib as mpl
import matplotlib.pyplot as plt
# matplotlib 不支持中文,需要配置一下,设置一个中文字体
mpl.rcParams["font.family"] = "SimHei"
# 能够显示 中文 ,正常显示 "-"
mpl.rcParams["axes.unicode_minus"] = False
plt.figure(figsize=(10,10))
plt.plot(result,"ro-",label="预测值")
plt.plot(test_y.values,"bo--",label="真实值")
plt.title("KNN回归算法预测展示")
plt.xlabel("序号")
plt.ylabel("度量值")
plt.legend()
plt.show()
KNN回归算法【配有案例演示】相关推荐
- 机器学习 逻辑回归算法应用案例
机器学习 逻辑回归算法应用案例 时间:2020.09.12 出处:https://www.kesci.com/home/project/5bfe39b3954d6e0010681cd1 注明:初学逻辑 ...
- 回归算法 经典案例 波士顿房价预测
回归是统计学中最有力的工具之一.机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型.连续性而定义的.回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在 ...
- 机器学习-有监督学习-分类算法:k-近邻(KNN)算法【多分类】
一.K-近邻算法简介 1.K-近邻算法(KNN)概念 k-近邻算法:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 相似的样本,同一 ...
- TF之LSTM:利用基于顺序的LSTM回归算法对DIY数据集sin曲线(蓝虚)预测cos(红实)(matplotlib动态演示)—daiding
TF之LSTM:利用基于顺序的LSTM回归算法对DIY数据集sin曲线(蓝虚)预测cos(红实)(matplotlib动态演示)-daiding 目录 输出结果 代码设计 输出结果 代码设计 impo ...
- TF之LSTM:利用基于顺序的LSTM回归算法对DIY数据集sin曲线(蓝虚)预测cos(红实)(matplotlib动态演示)
TF之LSTM:利用基于顺序的LSTM回归算法对DIY数据集sin曲线(蓝虚)预测cos(红实)(matplotlib动态演示) 目录 输出结果 代码设计 输出结果 更新-- 代码设计 import ...
- KNN模型算法研究与案例分析
KNN模型算法研究与案例分析( 白宁超 2018年8月29日15:39:13 ) 导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用.本文通过一个模拟的实际案例进行讲解.整 ...
- 机器学习回归算法—岭回归及案例分析
一.回归算法之岭回归 具有L2正则化的线性最小二乘法.岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息.降低精度为代价获 ...
- spark 逻辑回归算法案例_黄美灵的Spark ML机器学习实战
原标题:黄美灵的Spark ML机器学习实战 本课程主要讲解基于Spark 2.x的ML,ML是相比MLlib更高级的机器学习库,相比MLlib更加高效.快捷:ML实现了常用的机器学习,如:聚类.分类 ...
- 几种常用回归算法——线性回归、支持向量机回归和KNN回归
欢迎关注,敬请点赞! 台湾何时归--几种常用回归算法 线性回归LR(Linear Regression) 代码展示(加噪声的正旋函数,狭义线性回归) 支持向量机回归SVR(Support Vector ...
最新文章
- This Jenkins instance appears to be offline
- vue 点击弹出文字_vue事件点击穿透解决大法,看这篇文章就够了
- 统计学习方法的三要素
- raid重构原理_5个重构原理示例
- iOS正则表达式(亲测,持续更新)
- 实验五 类和对象-3
- 加分进了字节,MySQL真yyds!
- 1107班12月第5周 班级计划 为s1结业答辩做准备
- idea 启动tomcat 工程_如何在IDEA中创建web项目并且部署到Tomcat中
- 太阳时角、太阳高度角、天顶角、太阳方位角和剖面角计算的Python程序
- JavaScript使用手册
- 80端口和443端口的主要区别
- 读jquery 权威指南[3]-动画
- CF 285 E Positions in Permutations 题解
- 在c语言中pwm的作用,PWM调速的C语言程序编写(非常简单);
- 计算机用户登录界面壁纸,怎么修改电脑开机的登陆界面的壁纸
- 精挑细选100+技术公众号优秀文章
- 没有模拟器是JavaScript做不到的~
- Qt on Android : Hello World开发
- uniapp解决折叠屏手机适配问题