KNN算法是机器学习中入门级算法,属于监督性学习算法。SupervisedLearning.

通过Plinko游戏来介绍该算法。

就是随机在上面投球,然后球进下面的哪个地方就得多少分。

然后在规定得投次数得到最高得分数,应该怎么投?

然后预测每次投能得到多少分?

首先应该通过训练数据集,看看在每个位置投得点,能得到多少分,然后预测点距离每次点得距离,然后排序,那么预测点周围出现次数最多得就是大概率得到得分数。

1,通过训练得数据集,提取特征值和标签,特征值就是距离左侧得距离。标签就是投下去得到得分数。

2,选择预测点,和K个距离近得数。计算每个点得距离。

3.排序,前K个点得出现最多次标签得就是得分得大概率值。

#KNN算法是寻找K个距离最近的邻居,然后根据已知的邻居label,出现次数最多的,推断出测试点的类别。
# polinko 模拟
import numpy as np
import collections as c def KNN(k,predictPoint,feature,label):
# 先求出预测点与周围点的距离,然后排序,找出距离最近的k个点,出现最多的次数,就是预测结果。
# map内置函数(func,iterable)
distance = list(map(lambda x: abs(200 - x), feature))
# np.sort()是直接排序,而我们需要feature和labell联系一起
# print(np.sort(distance))
# 所以应该使用np.argsort()可以得到排序的后的index,可以与label关联
sort_index = np.argsort(distance)
# 通过切片找出K个最邻近的点
return c.Counter(label[sort_index][:k]).most_common(1)[0][0] # 返回的是(4,2),表示在k的最邻近元素,4出现最多次数为2 if __name__ == '__main__':
data = np.array([
[120, 3],
[140, 3],
[160, 3],
[40, 2],
[70, 2],
[200, 4],
[250, 4],
[100, 3]
])
feature = data[:,0]
label = data[:,-1]
k = 5
predictPoint = 170
print(KNN(k,predictPoint,feature,label))

 预测结果:

3 

代码中给出的数据集是随机写的,不一定准。

现在选择真实的数据集,通过numpy中loadtext()读取csv文本数据集。

np.loadtxt("data01.csv",delimiter=",")这个第一个参数文件名称,第二个delimiter是数据分割符.
然后就和后面一样,提取特征值和标签值,计算k个局里近的距离。
但是和真实的还有有差距,这个是怎么回事。
所以造成结果不正确的原因有这些:
还需要
1.调整参数,简称调参。
2.可能还有其他维度特征会影响结果,但是现在只给了一种特征值。

缺点:对于数据量很大得训练集合,耗费内存。对硬件要求较高。

机器学习之KNN---k最近邻算法-机器学习的更多相关文章

  1. 机器学习【一】K最近邻算法

    K最近邻算法 KNN 基本原理 离哪个类近,就属于该类   [例如:与下方新元素距离最近的三个点中,2个深色,所以新元素分类为深色] K的含义就是最近邻的个数.在sklearn中,KNN的K值是通过n ...

  2. 机器学习-K最近邻算法

    一.介绍 二.编程 练习一(K最近邻算法在单分类任务的应用): import numpy as np #导入科学计算包import matplotlib.pyplot as plt #导入画图工具fr ...

  3. 【算法】K最近邻算法(K-NEAREST NEIGHBOURS,KNN)

    K最近邻算法(k-nearest neighbours,KNN) 算法 对一个元素进行分类 查看它k个最近的邻居 在这些邻居中,哪个种类多,这个元素有更大概率是这个种类 使用 使用KNN来做两项基本工 ...

  4. 机器学习 Python实践-K近邻算法

    机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...

  5. PCB 加投率计算实现基本原理--K最近邻算法(KNN)

    PCB行业中,客户订购5000pcs,在投料时不会直接投5000pcs,因为实际在生产过程不可避免的造成PCB报废, 所以在生产前需计划多投一定比例的板板, 例:订单 量是5000pcs,加投3%,那 ...

  6. 12、K最近邻算法(KNN算法)

    一.如何创建推荐系统? 找到与用户相似的其他用户,然后把其他用户喜欢的东西推荐给用户.这就是K最近邻算法的分类作用. 二.抽取特征 推荐系统最重要的工作是:将用户的特征抽取出来并转化为度量的数字,然后 ...

  7. 《算法图解》——第十章 K最近邻算法

    第十章    K最近邻算法 1 K最近邻(k-nearest neighbours,KNN)——水果分类 2 创建推荐系统 利用相似的用户相距较近,但如何确定两位用户的相似程度呢? ①特征抽取 对水果 ...

  8. [笔记]《算法图解》第十章 K最近邻算法

    K最近邻算法 简称KNN,计算与周边邻居的距离的算法,用于创建分类系统.机器学习等. 算法思路:首先特征化(量化) 然后在象限中选取目标点,然后通过目标点与其n个邻居的比较,得出目标的特征. 余弦相似 ...

  9. K最近邻算法项目实战

    这里我们用酒的分类来进行实战练习 下面来代码 1.把酒的数据集载入到项目中 from sklearn.datasets import load_wine #从sklearn的datasets模块载入数 ...

  10. 图说十大数据挖掘算法(一)K最近邻算法

    如果你之前没有学习过K最近邻算法,那今天几张图,让你明白什么是K最近邻算法. 先来一张图,请分辨它是什么水果 很多同学不假思索,直接回答:“菠萝”!!! 仔细看看同学们,这是菠萝么?那再看下边这这张图 ...

随机推荐

  1. 左手Mongodb右手Redis

    第二章,了解Mongodb保存数据 Mongodb对于每次插入的数据没有要求,字段可以随便变动,字段类型可以随意变动. Mongodb可以并发插入上万条文档,这是传统关系型数据库不能望其项背的. 1. ...

  2. 题解 P1033 【自由落体】

    太坑人了 这不是明摆着坑那些没有学完初中物理的同学们 QAQ 首先这个题其实就是转换一下参照系. 由原先小车向小球靠拢换成小车静止,小球向着小车靠拢(原点设置成车右下角那个点). 然后就成了平抛运动. ...

  3. openoffice+pdf2swf+FlexPaper在线显示office和pdf

    前提:本人的系统为Ubuntu 13.10 64位系统.本篇是我在配置好环境后一段时间写的,所以操作上可能会有也错误,因此仅供参考. 搜索在线显示office和pdf,最常见的方法就是把都转为swf, ...

  4. Class-DbConnectionManipulator:Execute,QueryFirstDefault<>

    ylbtech-Class-DbConnectionManipulator:Execute,QueryFirstDefault<> 1.返回顶部 1. public object GetS ...

  5. token是什么?和session什么区别,怎么用

    对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西. 一.我们先解释一下他的含义: 1 ...

  6. QTP使用Smtp协议发送邮件

    NameSpace = "http://schemas.microsoft.com/cdo/configuration/" Set Email = CreateObject(&qu ...

  7. python随机生成个人信息

    python随机生成个人信息 #!/usr/bin/env python3 # -*- coding:utf-8 -*- import sys import random class Personal ...

  8. Mybatis的分支选择和In循环

    Mybatis的分支选择: <choose> <when test="patientNo != null and patientNo != ''"> and ...

  9. js 屏蔽网页快捷键代码

    <script> function KeyDown(){ //屏蔽鼠标右键.Ctrl+n.shift+F10.F5刷新.退格键 //alert("ASCII代码是:"+ ...

  10. JQuery通过URL获取图片宽高

    var img_url ='https://www.baidu.com/img/bd_logo1.png'; // 创建对象 var img = new Image(); // 改变图片的src im ...