knn(k最近邻节点)
本质:找到与输入值距离最接近的k个节点,并以此为基础作出预测。
解决问题
- 分类问题
- 找到最接近的前k个结点。找到占比最大的类,并以此作为预测值输出。
- 例:plinko
- 回归问题
- 找到最接近的k个节点。求出对应k节点对应目标值的平均值,并以此作为函数输出。
项目代码
思路
knn模型对简单分类问题的python简单实现
1、获取历史数据(特征值feature,目标值label)
2、输入值
3、计算输入值与历史数据的距离
4、取前k个项,并且将其中出现概率最大的数作为结果输出
这里使用plinko这个游戏进行代码编写的详细分析
(1)绝对值求距离 | (2)欧式距离(勾股定理) | (3)欧氏距离并归一化 |
---|---|---|
19% | 37.0% | 39.0% |
注:点击可跳转至代码,同时(1)是一维的,(2)、(3)是二维的,由此看出,增加影响因素的考虑能够提高准确率,同时通过(2)、(3)可以得出,对算法进行改进也是可以提高数据精度
knn模型对简单回归问题的python简单实现
knn房价模型
目的:练习向量在机器学习中的使用
要点:标准化和归一化(此时这里因为数据差距太大,因此使用标准化)
归一化:知道数据范围
标准化:不知道数据范围,或者数据变化很大
归一化公式
v a l u e = X − X m i n X m a x − X m i n value = \frac{X-X_{min}}{X_{max}-X_{min}} value=Xmax−XminX−Xmin
标准化公式
v a l u e = X − X ˉ σ value =\frac{X-\bar{X}}{\sigma} value=σX−Xˉ
思路
1、获取历史数据(特征值feature,目标值label)
2、输入值
3、计算输入值与历史数据的距离
4、取前k个项,并且将其均值作为预测值输出