机器学习

K-近邻算法

2019-03-03  本文已影响0人  CSTDOG

机器学习的一般步骤:

image.png

概述

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
算法思想:
1.计算Dataset中的数据距离(使用欧式距离)
2.按照距离升序排列
3.选取距离最小的K个点
4.确定和返回K点钟频率最高的类别
# inX用于分类的输入向量
# dataset输入训练样本集
# labels标签向量
# k是要选取的点数
# 注意在python2下使用的是iteritems(),在Python3下使用的是items()
def classify0(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
    # 排序:按从小到大
    sortedDistIndicies = distances.argsort()
    classCount={}
    for i in range(k):
        voyteIlabel = labels[sortedDistIndicies[i]]
        classCount[voyteIlabel] = classCount.get(voyteIlabel,0) + 1
    #找出得票最高的类别
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1),reverse=True)
    return  sortedClassCount[0][0]

参考书籍:机器学习实战 Perer Harrington

上一篇下一篇

猜你喜欢

热点阅读