我想去做机器学习 接下来发一些机器学习实战的算法

kNN算法  K近邻  简单说就是找出最近的K个点然后找出他们的分类最多的就是本身

from numpy import *  #导入包numpy
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;

def classify(inX,dataSet,labels,k):  #kNN  输入向量  数据集 数据集对应的类型 K个
    dataSetSize=dataSet.shape[0];    #算出来有几个点
    diffMat=tile(inX,(dataSetSize,1))-dataSet; #用输入的点填满 然后去减掉数据集对应的位子
    sqDiffMat=diffMat**2;                      #平方
    sqDistances=sqDiffMat.sum(axis=1);         #把每一行加起来
    distances=sqDistances**0.5;                #对每一个结果开根号
    sortedDisIndicies=distances.argsort();     #排序 返回他们的下标
    classCount={};                             #map存类型和数目
    for i in range(k):
        voteIlabel=labels[sortedDisIndicies[i]];
        classCount[voteIlabel]=classCount.get(voteIlabel,0)+1;  #数目增加
    sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) #对数目排序 降序
    return sortedClassCount[0][0];   #返回值
View Code
原文地址:https://www.cnblogs.com/cherryMJY/p/8516692.html