机器学习-从kNN开始

来源:互联网 发布:腾讯数据分析师面经 编辑:程序博客网 时间:2024/05/17 03:30
import numpy as npimport operatordef createDataSet():#数据集    group = np.array([[1.0,1.1],                    [1.0,1.0],                    [0,0],                    [0,0.1]])    #标签    labels = ['A','A','B','B']    return group, labelsdef classify0(inX, dataSet, labels, k):    #数据集的行数,即数据量    dataSetSize = dataSet.shape[0]    #np.tile(a,b):重复a数据b次,eg:np.tile([1,0],3),输出array([1, 0, 1, 0, 1, 0])    diffMat = np.tile(inX, (dataSetSize, 1)) - dataSet    sqDiffMat = diffMat ** 2    #.sum(axis):axis =1 是按行相加,axis = 0是按列相加    sqDistances = sqDiffMat.sum(axis=1)    distances = sqDistances ** 0.5    #返回distance从小到大的索引值    sortedDistIndicies = distances.argsort()    classCount = {}    for i in range(k):        voteIlabel = labels[sortedDistIndicies[i]]        #各种类型的个数        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1    print(classCount)    #dic.items():以列表返回元组数组    #降序排列(按照第二个元素的次序排列,即按类型的数量排序),返回排序的列表  sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse = True)  print(sortedClassCount)  return sortedClassCount[0][0]group,labels = createDataSet()print(classify0([0,0.2],group,labels,2))
原创粉丝点击