K-邻近算法(kNN)python3.X
来源:互联网 发布:央视市场研究 知乎 编辑:程序博客网 时间:2024/06/10 00:29
k-邻近算法(kNN)学习笔记
机器学习主要任务
在机器学习(Machine Learning)的主要任务就是实现数据的分类,通过给算法输入大量已分类的数据作为算法训练集,使机器能够找到特征与目标变量之间的关系,对未知特征的数据做出正确的判断,这就是分类。机器学习的另外一个重要的任务就是回归,用来预测数值型数据。kNN(K-邻近算法)概念
k-邻近算法是给算法一个训练样本集,每个样本集都给出了明确的特征和明确的标签。然后输入需要分类的数据,利用算法计算出该数据和样本集各个点之间的距离,取前k个距离最近的点,这就是k-邻近算法的k的含义。最后选择k个最相似数据中出现最多的类型作为新数据的数据类型,这样就是实现了数据分类。k-邻近算法
在输入训练样本集后,输入需要分类的数据,计算得到该数据与样本集各个点的距离集合,然后对这些数据进行排序。然后选取前k个距离数据(也就是和训练样本集最相似的K个点),得到其中类型出现最多的类型,得到该新数据的分类。代码如下:- 数据输入
该程序利用 readlines() 读取文本文件,里面包含了训练样本集的特征(程序有3个特征值)和目标类型,然后分别存储在两个列表中。
- 数据输入
def file2matrix(filename): fr=open(filename) arrayOLines=fr.readlines() #读取文件 numberOfLines=len(arrayOLines) retuanMat=zeros((numberOfLines,3))#存储特征数据 classLabelVector=[] index =0 for line in arrayOLines: line =line.strip() listFromLine=line.split('\t') retuanMat[index,:]=listFromLine[0:3] classLabelVector.append(listFromLine[3])#存储类型数据 index+=1 return retuanMat,classLabelVector
2.k-邻近主程序
先计算预测点和训练数据点的全部距离,然后进行排序,选取最相近的前k个点。
def classify0 (inX, dataSet, labels, k): dataSetSize=dataSet.shape[0] diffMat=tile(inX, (dataSetSize,1))-dataSet sqDiffMat=diffMat**2 sqDistance=sqDiffMat.sum(axis=1) distances=sqDistance**0.5 sortedDistIndicies=distances.argsort() #以上算法为计算距离算法和排序算法 classCount={} for i in range(k): voteIlabel=labels[sortedDistIndicies[i]] #选择距离最短的k个点classCount[voteIlabel]=classCount.get(voteIlabel,0)+1sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0]
3.读取文件的yield用法
在函数中含有yield的函数叫做生成器。如下例子:
def count(n): print("_1") while n>0: print("_2") yield n n-=1 print("_3")>>>count(5)#yield生成函数序列,返回一个“generator”类型<generator object count at 0x04D5FF58>>>>c=count(5)>>>c.__next__()#生成器函数只有在调用__next()__方法的时候才开始执行函数里面的语句_1_25>>>c.__next__()_3_24
上面例子在python3.4中全部编译通过,yield生成函数在next()方法下开始执行,遇到yield时停止运行,下次调用next()方法时从yield开始继续执行。
- 调用readlines()读取数据是一次读取整个文件,如果内存太小那么电脑就会卡顿的很厉害,所以就需要考虑利用上面的yield生成器来读取数据。可以用以下代码实现:
def open_txt(filename) with open(filename,'r+') as f: line=f.readline() while line: yield line.strip() line=f.readline()
0 0
- K-邻近算法(kNN)python3.X
- k邻近算法(kNN)
- KNN(K邻近)算法
- K-邻近算法(KNN)
- KNN-K邻近算法
- K邻近算法(KNN)
- k最邻近算法-KNN,及python3 实例代码
- KNN(K最邻近)算法
- KNN(K 邻近算法) 相关知识
- KNN算法,k 邻近(python)
- K最邻近算法(K-Nearest Neighbor,KNN)(初探)
- python3与机器学习实践---1、最简单的K-邻近算法(k-Nearest Neighbor,KNN)
- 单身狗掐指一算:k邻近(KNN)算法举例
- KNN算法(邻近算法)
- K邻近(KNN)分类和预测算法
- k-邻近算法kNN及其python实现
- 机器学习之K邻近算法 (KNN)
- 【Java实现KNN算法】KNN(k邻近)详解与java实现
- Java中string和stringBuffer的区别
- Touch事件的传递机制?
- 又一电源问题引发的灾难
- LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- node.js浅谈
- K-邻近算法(kNN)python3.X
- leetcode :Binary Search:First Bad Version(278)
- 查看打好的apk包的versionCode 和versionName
- 【在线笔试题解题报告系列】Google APAC 2017 University Test Round B
- Cache之直接映射
- 如何查看linux动态库中包含哪些函数
- 单例模式和各种工厂模式的UML类图详解
- sublime text怎么格式化PHP代码
- [狗尾续貂第四篇]ActiveMQ集群