机器学习之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 ...
随机推荐
- Android退出程序
public class ExitApplication extends Application { private static ExitApplication instance ; List< ...
- Spring security oauth2最简单入门环境搭建
关于OAuth2的一些简介,见我的上篇blog:http://wwwcomy.iteye.com/blog/2229889 PS:貌似内容太水直接被鹳狸猿干沉.. 友情提示 学习曲线:spring+s ...
- cf B. Berland Bingo
http://codeforces.com/contest/370/problem/B 题意:给你n个卡片,卡片上有m个不同的数字,这个游戏是随即的从袋子里面抽球,球上有数字1-100:如果第ith玩 ...
- 自制单片机之一------AT89S51最小系统制做
C51最小系统电路在网上一搜一大把,大同小异.我略做改动后如图: 加一个11.0592MHZ的晶振是为了以后做串口通信时和PC有相同的波特率.可用短路帽切换.说说板子的布局:网上卖的最小系统都是把板子 ...
- 工厂方法模式 - OK
工厂方法模式(Factory Method),定义了一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到子类. 工厂方法模式在实现时,客户端需要决定实例化哪一个工厂来实现运 ...
- HDU---4417Super Mario 树状数组 离线操作
题意:给定 n个数,查询 位置L R内 小于x的数有多少个. 对于某一次查询 把所有比x小的数 ”的位置“ 都加入到树状数组中,然后sum(R)-sum(L-1)就是答案,q次查询就要离线操作了,按高 ...
- Mac系统升级到10.9(mavericks)时安装php扩展问题解决(转)
问题一: 执行执行 phpize 报错: grep: /usr/include/php/main/php.h: No such file or directory grep: /usr/include ...
- Android 读取手机某个文件夹目录及子文件夹中所有的txt文件
1. activity_main.xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro ...
- 马士兵 Servlet_JSP(2) JSP源代码)
1.最简单的JSP HelloWorld.jsp <html> <head> <title>Hello</title> ...
- 带中文索引的ListView 仿微信联系人列表
因为各种原因,项目经理和产品经理把我做的东西给否定了,所以决定分享出去. 主要功能: 1 .带中文索引的ListView 2.自己定义顶部搜索视图,能够对返回button,搜索button加入事件监听 ...