K-近邻算法
一般流程
(1)收集数据:可以使用如何方法。
(2)准备数据:距离计算所需的数据,最好是结构化的数据格式。
(3)分析数据:可以使用如何方法。
(5)测试算法:计算错误率。
(6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判断输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。
K-近邻算法
def classify0(inX, dataSet, labels, k):
"""
k-近邻算法 标签向量的元素数目和矩阵dataSet的行数相同
:param inX: 分类的输入向量
:param dataSet: 训练样本集
:param labels: 标签向量
:param k: 用于选择最近邻居的数目
:return:
"""
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):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]
|