机器学习实战学习记录

mac2025-07-06  7

1、k近邻算法

k近邻算法的一般流程: (1)收集数据:可以使用任何方法。

(2)准备数据:距离计算所需要的数值,最好是结构化的数据格式。

(3)分析数据:可以使用任何方法。

(4)测试算法:计算错误率。

(5)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。

两点间距离公式

 

import numpy as py

group = py.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])  #标签位置 labels = ['A','A','B','B']  #标签

# inX:输入的测试向量

# k:代表频率,选择前k个距离最近的点,计算出k个点的频率,取频率最高的作为预测分类

def kNN(inX,group,labels,k):     dataSize = group.shape[0]  #取行     diffMat = py.tile(inX,(dataSize,1))-group #生成与group相同大小的列表,元素都是inX,然后减去group     sqDiffMat = diffMat**2 # 对列表平方     sqDistances = sqDiffMat.sum(axis=1) #平方值相加     distances = sqDistances ** 0.5 #开方     sortedDis = distances.argsort() #返回从小到大的排序值下标  [1,43,2] 返回 [0,2,1]     classCount={}     for i in range(k):         voteiLabel = labels[sortedDis[i]] #取出前K个距离最近的标签         classCount[voteiLabel] = classCount.get(voteiLabel,0)+1 #统计出现频率     sortedclassCount = sorted(classCount.items(),key=lambda x : x[1],reverse=True) #按照频率降序排列     return sortedclassCount[0][0] #返回第一个

 

 

最新回复(0)