python机器学习——KNN(K近邻算法)
背景与原理:
KNN算法其实是逻辑最简单的分类算法——我们认为一个数据的类型是由与其最接近的数据决定的,而“接近”实际上就是我们度量两个数据点之间的距离,如果我们把一组数据看做一个向量$(x_{1},...,x_{n},y)$,其中$y$代表这个数据的类别,那么两组数据$X_{i},X_{j}$间的距离如果使用欧式距离表示为$L_{ij}=\sqrt{\sum_{k=1}^{n}(x_{ik}-x_{jk})^{2}}$
那么对于空间中已经分好类的若干数据,如果我们想预测输入的某组数据属于什么类,那么我们去计算空间中分好类的数据点离它的距离,然后选择距离最近的认为和想预测的数据是最接近的,直接选择距离最近的数据点的类别即可。
当然,只选择最近的是由很大问题的,所以K近邻算法(K-Nearest Neighbours)就是将上述“最近”改成“K个最近的”,然后找出这K个数据点中概率最大的类别作为我们预测的类别。
代码实现:
import numpy as np
import math
from scipy import stats
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression def dis(alpha,beta):
s=0
for i in range(0,len(alpha)-1):
s+=(alpha[i]-beta[i])**2 return math.sqrt(s) def KNN_Test(input,dataset,siz,K):
q=[]
p=[]
for i in range(0,siz):
d=dis(input,dataset[i])
maxp=0
for j in range(0,len(q)):
if q[j]>q[0]:
maxp=j if len(q)<K:
q.append(d)
p.append(i)
elif q[maxp]>d:
q[maxp]=d
p[maxp]=i
cnt=0
for i in range(0,K):
if dataset[p[i]][2]==1:
cnt+=1
if cnt<K/2:
return 0
else:
return 1 x=np.arange(0.,10.,0.02)
y=5-2*x/3+np.random.randn(500)
now=0
dataset=[]
for i in range(0,500):
typ = 0
if 2*x[i]+3*y[i] <= 15:
if abs(np.random.randn(1)[0])<2:
typ = 1
else:
typ = 0
else:
if abs(np.random.randn(1)[0]) < 2:
typ = 0
else:
typ = 1 dataset.append([x[i],y[i],typ]) c_cnt=0
for i in range(0,500):
predict_typ=KNN_Test(dataset[i],dataset,500,10)
if predict_typ==dataset[i][2]:
c_cnt+=1 print(c_cnt/500)
这段代码生成的分类数据和逻辑回归的相同,我们这次使用KNN算法进行分类,准确率相对可观
小结与改进:
KNN算法存在相当的不足之处,在改进中我们可以选择加入权值——虽然我们考虑最近的K个“邻居”,但是我们认为一组数据肯定与离它最近的邻居更接近,因此在计算概率时我们对于距离较近的数据点给出一个较高的权值,距离较远的邻居给出一个较低的权值,这样能更好地体现“近邻”这个观点。
同样,究竟选择几个“邻居”也是值得考虑的,这一点可以通过权衡样本数量来进行调整。
KNN算法的另一个缺点在于训练样本数量很大、维度很多的时候计算开销很大,因此我们可以在预处理阶段使用降维算法对维度进行简化以提高效率
python机器学习——KNN(K近邻算法)的更多相关文章
- 第四十六篇 入门机器学习——kNN - k近邻算法(k-Nearest Neighbors)
No.1. k-近邻算法的特点 No.2. 准备工作,导入类库,准备测试数据 No.3. 构建训练集 No.4. 简单查看一下训练数据集大概是什么样子,借助散点图 No.5. kNN算法的目的是,假如 ...
- 机器学习之K近邻算法(KNN)
机器学习之K近邻算法(KNN) 标签: python 算法 KNN 机械学习 苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅 from numpy import * import ...
- 【机器学习】k近邻算法(kNN)
一.写在前面 本系列是对之前机器学习笔记的一个总结,这里只针对最基础的经典机器学习算法,对其本身的要点进行笔记总结,具体到算法的详细过程可以参见其他参考资料和书籍,这里顺便推荐一下Machine Le ...
- 用Python从零开始实现K近邻算法
KNN算法的定义: KNN通过测量不同样本的特征值之间的距离进行分类.它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.K通 ...
- 基本分类方法——KNN(K近邻)算法
在这篇文章 http://www.cnblogs.com/charlesblc/p/6193867.html 讲SVM的过程中,提到了KNN算法.有点熟悉,上网一查,居然就是K近邻算法,机器学习的入门 ...
- KNN K~近邻算法笔记
K~近邻算法是最简单的机器学习算法.工作原理就是:将新数据的每一个特征与样本集中数据相应的特征进行比較.然后算法提取样本集中特征最相似的数据的分类标签.一般来说.仅仅提取样本数据集中前K个最相似的数据 ...
- 机器学习之K近邻算法
K 近邻 (K-nearest neighbor, KNN) 算法直接作用于带标记的样本,属于有监督的算法.它的核心思想基本上就是 近朱者赤,近墨者黑. 它与其他分类算法最大的不同是,它是一种&quo ...
- KNN (K近邻算法) - 识别手写数字
KNN项目实战——手写数字识别 1. 介绍 k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法.它的工作原理是:存在一个 ...
- 机器学习实战-k近邻算法
写在开头,打算耐心啃完机器学习实战这本书,所用版本为2013年6月第1版 在P19页的实施kNN算法时,有很多地方不懂,遂仔细研究,记录如下: 字典按值进行排序 首先仔细读完kNN算法之后,了解其是用 ...
- 【机器学习】K近邻算法——多分类问题
给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该类输入实例分为这个类. KNN是通过测量不同特征值之间的距离进行分类.它的的思路是:如 ...
随机推荐
- 实验5:开源控制器实践POX
一.基础实验 建立拓扑: sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk, ...
- 关于MYSQL知识点复习
关于MYSQL关联查询JOIN: https://www.cnblogs.com/withscorpion/p/9454490.html
- linux中用crontab定时任务启动jar无效
修改前脚本内容如下: #!/bin/bash nohup java -Xms512m -Xmx512m -jar /opt/jar/xx-0.0.1-SNAPSHOT.jar & 检查了各方面 ...
- vue2中底层响应式数据实现
<input type="text" id="textInput" />输入:<span id="textSpan"> ...
- kubernetes弃用dockershim
转载自:https://www.51cto.com/article/710688.html 前段时间,kubernetes推出了1.24版本,曾经轰动一时的docker弃用也正式实装了,这意味着1.2 ...
- maven jar包新版本检测工具推荐
为什么需要 经常使用maven来构建项目的朋友,应该遇到过类似这样的情况:项目通过maven引入了很多jar包,随着时间推移,这些jar包都有了更优的新版本出来,想升级,但又觉得很繁琐.主要是因为两方 ...
- 国产低功耗Soc蓝牙语音遥控器芯片HS6621 /OM6621
随着物联网技术不断发展,家用电器往智能化方向持续迭代,使用红外遥控器这种传统的互动方式已经满足不了实际的使用需求,蓝牙语音遥控器作为人机交互新载体,逐渐取代传统红外遥控器成为家居设备的标配.相比于传统 ...
- Array方法学习总结
Array 对象支持在 单个变量名下存储多个元素. Array方法: 在遍历多个元素的方法中,下面的方法在访问索引之前执行in检查,并且不将空槽与undefined合并:concat() 返回一个新数 ...
- 设置NTP校时
设置NTP校时-作为客户端 @echo off rem 以管理员身份执行文件 rem 适用于域控PDC主机,对于未加域的计算机可直接使用Internet时间同步 rem 获取管理员权限 %1 msht ...
- SWUpdate(Suricatta) + Hawkbit Server
SWUpdate的详细介绍 https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors%40tkb/5632/ ...