美文网首页深度学习
《机器学习实战》:K-近邻(kNN)算法

《机器学习实战》:K-近邻(kNN)算法

作者: peerless_1024 | 来源:发表于2018-04-24 09:41 被阅读12次

参考博客
博客用的是python2.7,我安装的是python3.6,因此语法上稍有不同,但整体上还是差不多的。

from numpy import*
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

# inVec为待分类向量,dataSet和labels为数据集,k是最近点的个数
def classfy0(inX, dataSet, labels,k):
    dataSetSize = dataSet.shape[0] # 获得数据集样本数量
    diffMat = tile(inX, (dataSetSize,1)) - dataSet
    sqDiffMat = diffMat**2 # 求差的平方
    sqDistances = sqDiffMat.sum(axis=1) # 求差的平方的和
    distances = sqDistances**0.5 # 对平方和开方得到距离

    # 对距离进行排序,argsort()函数默认按升序排列,但只返回下标,不对原数组排序
    sortedDistIndicies = distances.argsort()
    classCount={} # 用于保存各个类别出现的次数
    for i in range(k): # 统计最近的 k 个点的类别出现的次数
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel, 0)+1

    # 对类别出现的次数进行排序,sorted()函数默认升序
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0] # 返回类别出现次数最多的分类名称

在用reload()引入一个文件时报如题的错误:NameError: name 'reload' is not defined
解决方案:
from imp import reload
import KNN (文件名,注意这里不需要跟后缀名)
reload(KNN)

相关文章

网友评论

    本文标题:《机器学习实战》:K-近邻(kNN)算法

    本文链接:https://www.haomeiwen.com/subject/ivfbkftx.html