资源简介
kNN基本分类器,以及两个运用kNN算法的实例:约会网站的配对和手写识别系统,包含数据源。

代码片段和文件信息
#coding=utf-8
from numpy import *
import operator
def createDataSet():
group = array([[1.0 1.1] [1.0 0.1] [0 0] [0 0.1][2.2 2.4] [2.1 2.0]])
labels = [‘A‘ ‘A‘ ‘B‘ ‘B‘ ‘C‘ ‘C‘]
return group labels
def classify0(inX dataSet labels k):
dataSetSize = dataSet.shape[0] #矩阵行数
diffMat = tile(inX (dataSetSize 1)) - dataSet #将数组inX重复(dataSetSize行1列)次
sqDiffMat = diffMat**2 #4*2矩阵每一个数都平方
sqDistances = sqDiffMat.sum(axis=1) #矩阵的每一行相加4*1
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort() #返回数组按从小打到排序的索引值
classCount = {}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]] #距离最小的label依次返回
classCount[voteIlabel] = classCount.get(voteIlabel 0) + 1 #get(key default)返回key键的值,不存在则返回默认值
#sorted第一个参数是对象的元组列表,第二个参数是对象的第1个域值(比较项),第三个是逆序
sortedClassCount = sorted(classCount.items() key=operator.itemgetter(1) reverse=True)
return sortedClassCount[0][0] #最后取列表第一个元素的第一项,即是数量最多的类别
#Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为‘__main__‘。
#加入if这句话,在其他函数调用此类时,下面的调试输出语句不执行
if __name__ == “__main__“:
group labels = createDataSet()
classification = classify0([1.8 2.1] group labels 3)
print(classification)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1616 2018-11-04 18:13 kNN.py
文件 3321 2018-11-04 13:20 kNN1.py
文件 1866 2018-11-04 18:42 kNN2.py
文件 1088 2010-10-07 21:35 digits\testDigits\0_0.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_1.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_10.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_11.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_12.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_13.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_14.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_15.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_16.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_17.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_18.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_19.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_2.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_20.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_21.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_22.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_23.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_24.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_25.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_26.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_27.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_28.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_29.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_3.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_30.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_31.txt
文件 1088 2010-10-07 21:35 digits\testDigits\0_32.txt
............此处省略2861个文件信息
相关资源
- Python-BDD100K大规模多样化驾驶视频数据
- Instant Pygame for Python Game Development How
- Biopython Tutorial
- Think Python 2nd
- 一个小小的表白程序(python)
- Python课堂笔记(高淇400集第一季)
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
评论
共有 条评论