一 开发环境:win7 64 位 + Pycharm5.0 + python3.4.4
二 工具包:numpy + matplotlib (对于microsoft visual c++ 10.0 is required错误,我是通过下载microsoft visual c++ 10.0解决的)
三 参考书籍:机器学习实战
四 程序清单:
1.k-邻近算法(伪代码)
# 1)计算已知类别数据集中的每个点与当前点之间的距离 # 2)按照距离升序排序 # 3)选取与当前距离最小的k个点 # 4)确定前k个点所在类别的出现频率 # 5)返回前k个点出现频率最高的类别作为当前点的预测分类
# intX:输入向量;dataSet:训练样本集;labels:标签向量;k:用于选择最近邻居的数目 def classify0(intX, dataSet, labels, k): dataSetSize = dataSet.shape[0] # 获取dataSize长度 diffMat = tile(intX, (dataSetSize, 1)) - dataSet # intX与dataSet每行做差 sqDiffMat = diffMat**2 # 获得差值的平方 sqDistance = sqDiffMat.sum(axis=1) # 将每行平方项相加 distance = sqDistance**0.5 # 获得欧氏距离 sortedDistIndicies = distance.argsort() #对distance进行排序从小到大,返回下标向量 classCount={} for i in range(k): # 遍历前k个标签 voteIlabels = labels[sortedDistIndicies[i]] # 获取标签值 classCount[voteIlabels] = classCount.get(voteIlabels, 0) + 1 # 将标签值写入字典表classCount sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True) # 对字典表进行排序