机器学习实战 KNN算法
来源:互联网 发布:sql server培训费用 编辑:程序博客网 时间:2024/05/22 02:15
# -*- coding: utf-8 -*-"""Created on Wed Jan 25 13:45:32 2017@author: Administrator"""#KNN,K-近邻算法from numpy import *import operator #运算符模块#建样本集def createDataSet(): group = array([[1.0,1.1], [1.0,1.0], [0,0], [0,0.1]]) labels = ['A', 'A', 'B', 'B'] return group, labels # k-近邻算法def classify0(inX, dataSet, labels, k): dataSetSize = dataSet.shape[0] #获取样本集行数 #算待分类数据(如[1.2,0.8])与样本集每行的欧拉距离 diffMat = tile(inX, (dataSetSize, 1)) - dataSet sqDiffMat = diffMat**2 sqDistances = sqDiffMat.sum(axis=1) #按行相加,每一行都是dx^2 + dy^2 distances = sqDistances**0.5 #返回距离从小到大排序的索引,如[1.5, 1.4, 0, 0.1],返回的是[2, 3, 1, 0],即最小的数原来的索引为2,最大的数原来的索引为0 sortedDistIndicies = distances.argsort() #返回前K个里面出现频率最高的,作为当前的预测分类 classCount={} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 ''' #get是取字典里的元素,如果之前这个voteIlabel是有的,那么就返回字典里这个voteIlabel里的值, 如果没有就返回0(后面写的),这行代码的意思就是算离目标点距离最近的k个点的类别,这个点是哪个类别哪个类别就加1 ''' sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1),reverse=True) ''' #key=operator.itemgetter(1)的意思是 按照字典里的值排序,{A:1,B:2},要按照值(A,B是键),即‘1’‘2’排序。reverse=True是降序排序 ''' return sortedClassCount[0][0]
测试如下:
结果:
'A'
0 0
- 机器学习实战-KNN算法
- 机器学习实战 KNN算法
- 《机器学习实战》-- KNN算法
- 机器学习实战 kNN算法
- 机器学习实战-KNN算法
- 机器学习实战--KNN算法
- 机器学习实战-KNN 算法
- 机器学习实战:KNN算法
- 机器学习实战-KNN算法
- 机器学习实战学习笔记-KNN算法
- 机器学习实战之KNN算法详解
- 机器学习实战(第一章)---KNN算法
- 机器学习实战之KNN算法
- 机器学习实战之KNN算法
- 机器学习实战--KNN 算法 笔记
- Python机器学习实战kNN分类算法
- 机器学习实战——kNN算法
- 【机器学习实战】-01KNN近邻算法
- 习题9-2(免费糖果)【深搜dfs】+【记忆化搜索】
- 新唐Cortex M0使用semihost输入输出办法
- 类欧几里得算法的推导
- 对商业模式最大的误区,是认为它谈如何赚钱
- java制作验证码并进行验证
- 机器学习实战 KNN算法
- C++实现无头结点的双向链表
- Java数字证书的一些实例
- 6.2.5动态原型模式
- android中用style简化布局文件(减少重复代码)
- 单片机2402数据写入内存
- arm板裸机编程之led
- Azkaban工作流调度器
- iOS中UITableView的编辑状态多选