机器学习之K近邻算法(KNN)
机器学习之K近邻算法(KNN)
标签: python 算法 KNN 机械学习
苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅
from numpy import *
import operator
from collections import Counter
#KNN需要测试集,训练集,标签和k值
#测试集:你需要测试的数据
#训练集:给定的标准数据
#标签:每个标准数据的类别
#k值 :测试集和训练集相比较下前K个最相识的训练集的值
# 用KNN算法找出测试集的类别
#1,求出已知类别训练集中的点与当前点之间的距离
#2,对所求距离以此递增排序
#3,选取与当前点距离最小的k个点
#4,确定前k个点所在类别的出现频率
#5,返回前k个点出现频率最高的类别作为当前点的预测分类
def kNNClassify(testSet, trainSet, labels, k=3):
rows = trainSet.shape[0] #shape[0]得到训练集的行数
#求距离
distSet = tile(testSet, (rows, 1)) - trainSet #得到距离矩阵
distance = sum(distSet ** 2 , axis = 1) ** 0.5 # 求出距离
#排序
#得到排序后数据原位置的下标,排序后位置是不变的
#从而使得排序后的结果和trainSet的标签一一对应
#然后就可以通过排序结果反向得到标签值
sortedDistIndices = argsort(distance)
#选取k个最小值
classCount = Counter()# 保存类别
#记录k值内相同标签出现的次数
[classCount.update([labels[sortedDistIndices[i]]]) for i in xrange(k)]
## 得到出现次数最多的标签类别
return sorted(classCount.iteritems(), key=lambda d:d[1], reverse = True )[0][0]
if __name__ == '__main__':
#然后我们在命令行中测试
trainSet = array([
[1.0, 0.9],
[1.0, 1.0],
[0.1, 0.2],
[0.0, 0.1]])
labels = ['A', 'A', 'B','B'] # 4个标签,2种类别
testSet = array([1.2, 1.0])
label = kNNClassify(testSet, trainSet, labels, k=3)
print "输入:", testSet, "分类: ", label
testSet = array([0.1, 0.3])
label = kNNClassify(testSet, trainSet, labels, k=3)
print "输入:", testSet, "分类: ", label
输入: [ 1.2 1. ] 分类: A
输入: [ 0.1 0.3] 分类: B
机器学习之K近邻算法(KNN)的更多相关文章
- k近邻算法(KNN)
k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. from sklearn.model_selection ...
- 【机器学习】k近邻算法(kNN)
一.写在前面 本系列是对之前机器学习笔记的一个总结,这里只针对最基础的经典机器学习算法,对其本身的要点进行笔记总结,具体到算法的详细过程可以参见其他参考资料和书籍,这里顺便推荐一下Machine Le ...
- 机器学习(四) 分类算法--K近邻算法 KNN (上)
一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...
- 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)
六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...
- 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!
1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...
- 机器学习中 K近邻法(knn)与k-means的区别
简介 K近邻法(knn)是一种基本的分类与回归方法.k-means是一种简单而有效的聚类方法.虽然两者用途不同.解决的问题不同,但是在算法上有很多相似性,于是将二者放在一起,这样能够更好地对比二者的异 ...
- 《机器学习实战》---第二章 k近邻算法 kNN
下面的代码是在python3中运行, # -*- coding: utf-8 -*- """ Created on Tue Jul 3 17:29:27 2018 @au ...
- 机器学习之K近邻算法
K 近邻 (K-nearest neighbor, KNN) 算法直接作用于带标记的样本,属于有监督的算法.它的核心思想基本上就是 近朱者赤,近墨者黑. 它与其他分类算法最大的不同是,它是一种&quo ...
- k近邻算法(knn)的c语言实现
最近在看knn算法,顺便敲敲代码. knn属于数据挖掘的分类算法.基本思想是在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别.俗话叫,"随大流&q ...
随机推荐
- Python读取Yaml文件
近期看到好多使用Yaml文件做为配置文件或者数据文件的工程,随即也研究了下,发现Yaml有几个优点:可读性好.和脚本语言的交互性好(确实非常好).使用实现语言的数据类型.有一个一致的数据模型.易于实现 ...
- JavaWeb学习笔记--4.EL表达式
四. 表达式语言(相当于对JSP中对象输出的简化,功能实质上类似) 转自ZHSJUN的博客 http://blog.csdn.net/zhsjun/article/details/2254546 表达 ...
- 认识 web 服务器端脚本语言 PHP
---恢复内容开始--- 变量 定义:定义之后,值可以改变的量.PHP中的变量可以先后赋值为不同类型的值. 语法格式:$变量名 = 值; 常量 定义:常量:一旦声明之后,值就不能再改变的量. 语法格式 ...
- Android从相册读取图片
Uri originalUri = data.getData(); //获得图片的uri bm = MediaStore.Images.Media.getBitmap(resolver ...
- 带KEY的SCP命令,老是要查,这次写在这里吧,
有些东东记不住,急要用时老是想不起,放在这里吧, scp -r -i /xxx/rsa.key -P port user@ip:/source/ /target/
- Xmind 快捷键
Xmind 快捷键 快捷键(Windows) 快捷键(Mac) 描述 Ctrl+N Command+N 建立新工作簿 Ctrl+O Command+O 开启工作簿 Ctrl+S Command+S 储 ...
- backbone教程
http://blog.csdn.net/column/details/backbone-js-tutorial.html
- Java并发编程:性能、扩展性和响应
1.介绍 本文讨论的重点在于多线程应用程序的性能问题.我们会先给性能和扩展性下一个定义,然后再仔细学习一下Amdahl法则.下面的内容我们会考察一下如何用不同的技术方法来减少锁竞争,以及如何用代码来实 ...
- hdu 5178 pairs (线性探查问题)
Problem Description John has n points on the X axis, and their coordinates are (x[i],),(i=,,,…,n−). ...
- maven java.lang.OutOfMemoryError:PermGEn space
配置环境变量: JAVA_OPTS-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m MAVEN_OPTS-Xms256m -Xmx ...