十大算法之-------Knn理解
来源:互联网 发布:怎么找sql注入点 编辑:程序博客网 时间:2024/06/05 07:06
():::1.对Knn原理的理解:
存在一组已知标签的数据集(训练集),将没有标签的数据输入,将新数据的每个特征与训练集中的数据进行比较,比较的原则是使用简单的欧氏距离。然后选出距离最短的前K个数据(K一般不大于20),在这K个数据中,出现频次最多的标签就是该输入数据的分类。
2.实际操作
a.在操作数据之前首先把数据中的特征进行归一化,否则特征之前数据值差异太大会影响最终的欧氏距离,从而最终影响分类结果。
特征归一化的值:newValue=(oldValue-min)/(max-min)
其中:oldValue是这个特征值原来的数值,max和min分别对应这个特征在数据集中的最大值和最小值。
b.算法具体过程:
归一化特征;
计算距离;
距离排序;
选出距离最小的前K个;
计算这K个特征中每个标签出现的频次;
返回频次最高的标签;
3.可以复用的代码
a).Knn分类器:
def classify0(inX,dataSet,labels,k): dataSetSize=dataSet.shape[0] diffMat=np.tile(inX,(dataSetSize,1))-dataSet sqDiffMat=diffMat**2 print sqDiffMat sqDistances=sqDiffMat.sum(axis=1) print sqDistances distances=sqDistances**0.5 sortedDistIndicies=distances.argsort() classCount={} for i in range(k): voteIlabel=labels[sortedDistIndicies[i]] classCount[voteIlabel]=classCount.get(voteIlabel,0)+1#read the value of the key in dict sortedClassCount=sorted(classCount.iteritems(), key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0]#return the most frequenst one
b).解析文本数据(读取文件中的数据到矩阵中)
def file2matrix(filename): fr=open(filename) arrayOfLines=fr.readlines()#read the context of each line numberOfLines=len(arrayOfLines) returnMat=np.zeros((numberOfLines,3)) classLabelVector=[] index=0 for line in arrayOfLines: line=line.strip()#remove the space at the start(end) of each line listFromLine=line.split('\t')#remove th '\t',make it to [] returnMat[index,:]=listFromLine[0:3] classLabelVector.append(int(listFromLine[-1])) index +=1 return returnMat,classLabelVector
c).归一化特征
def autoNorm(dataSet): minVals=dataSet.min(0) maxVals=dataSet.max(0) ranges=maxVals-minVals normDataSet=np.zeros(np.shape(dataSet)) m=dataSet.shape[0]#row normDataSet=dataSet-np.tile(minVals,(m,1)) normDataSet=normDataSet/np.tile(ranges,(m,1)) return normDataSet,ranges,minVals
总结:千里之行,始于足下
阅读全文
0 0
- 十大算法之-------Knn理解
- 十大经典算法之KNN
- 大数据十大经典算法之KNN
- 机器学习十大算法之KNN算法
- 数据挖掘十大经典算法之KNN
- 数据挖掘十大算法 --- KNN
- 数据挖掘十大经典算法(8) kNN
- 机器学习十大算法----k近邻法(kNN)
- KNN算法理解
- KNN算法理解
- KNN算法理解
- KNN算法理解
- 深入理解KNN算法
- KNN算法理解
- KNN 算法理解
- KNN算法理解
- KNN算法理解
- KNN算法理解
- makefile通用写法
- 92、93、94
- leetcode 10. Regular Expression Matching
- springBoot三分钟轻松撩到redis
- SSM框架——整合(Spring、SpringMVC、MyBatis)
- 十大算法之-------Knn理解
- C语言作业-3-2数字特征值
- windows 查看端口被哪个进程占用
- 【PYTHON IDE】pycharm安装与使用
- R语言使用bagging方法对数据分类与交叉验证
- Redis地理空间(geospatial)介绍和简单使用
- Android Studio录制手机屏幕并制作GIF演示动画
- 通过jmx获取activemq-5.90集群监控信息的java代码
- Java8-lambda表达式