机器学习之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)的更多相关文章

  1. k近邻算法(KNN)

    k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. from sklearn.model_selection ...

  2. 【机器学习】k近邻算法(kNN)

    一.写在前面 本系列是对之前机器学习笔记的一个总结,这里只针对最基础的经典机器学习算法,对其本身的要点进行笔记总结,具体到算法的详细过程可以参见其他参考资料和书籍,这里顺便推荐一下Machine Le ...

  3. 机器学习(四) 分类算法--K近邻算法 KNN (上)

    一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...

  4. 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)

    六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...

  5. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  6. 机器学习中 K近邻法(knn)与k-means的区别

    简介 K近邻法(knn)是一种基本的分类与回归方法.k-means是一种简单而有效的聚类方法.虽然两者用途不同.解决的问题不同,但是在算法上有很多相似性,于是将二者放在一起,这样能够更好地对比二者的异 ...

  7. 《机器学习实战》---第二章 k近邻算法 kNN

    下面的代码是在python3中运行, # -*- coding: utf-8 -*- """ Created on Tue Jul 3 17:29:27 2018 @au ...

  8. 机器学习之K近邻算法

    K 近邻 (K-nearest neighbor, KNN) 算法直接作用于带标记的样本,属于有监督的算法.它的核心思想基本上就是 近朱者赤,近墨者黑. 它与其他分类算法最大的不同是,它是一种&quo ...

  9. k近邻算法(knn)的c语言实现

    最近在看knn算法,顺便敲敲代码. knn属于数据挖掘的分类算法.基本思想是在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别.俗话叫,"随大流&q ...

随机推荐

  1. Android退出程序

    public class ExitApplication extends Application { private static ExitApplication instance ; List< ...

  2. Spring security oauth2最简单入门环境搭建

    关于OAuth2的一些简介,见我的上篇blog:http://wwwcomy.iteye.com/blog/2229889 PS:貌似内容太水直接被鹳狸猿干沉.. 友情提示 学习曲线:spring+s ...

  3. cf B. Berland Bingo

    http://codeforces.com/contest/370/problem/B 题意:给你n个卡片,卡片上有m个不同的数字,这个游戏是随即的从袋子里面抽球,球上有数字1-100:如果第ith玩 ...

  4. 自制单片机之一------AT89S51最小系统制做

    C51最小系统电路在网上一搜一大把,大同小异.我略做改动后如图: 加一个11.0592MHZ的晶振是为了以后做串口通信时和PC有相同的波特率.可用短路帽切换.说说板子的布局:网上卖的最小系统都是把板子 ...

  5. 工厂方法模式 - OK

    工厂方法模式(Factory Method),定义了一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到子类. 工厂方法模式在实现时,客户端需要决定实例化哪一个工厂来实现运 ...

  6. HDU---4417Super Mario 树状数组 离线操作

    题意:给定 n个数,查询 位置L R内 小于x的数有多少个. 对于某一次查询 把所有比x小的数 ”的位置“ 都加入到树状数组中,然后sum(R)-sum(L-1)就是答案,q次查询就要离线操作了,按高 ...

  7. Mac系统升级到10.9(mavericks)时安装php扩展问题解决(转)

    问题一: 执行执行 phpize 报错: grep: /usr/include/php/main/php.h: No such file or directory grep: /usr/include ...

  8. Android 读取手机某个文件夹目录及子文件夹中所有的txt文件

    1. activity_main.xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  9. 马士兵 Servlet_JSP(2) JSP源代码)

    1.最简单的JSP HelloWorld.jsp <html>     <head>         <title>Hello</title>     ...

  10. 带中文索引的ListView 仿微信联系人列表

    因为各种原因,项目经理和产品经理把我做的东西给否定了,所以决定分享出去. 主要功能: 1 .带中文索引的ListView 2.自己定义顶部搜索视图,能够对返回button,搜索button加入事件监听 ...