首页 > 代码库 > Machine Learning in Action-chapter2-k近邻算法
Machine Learning in Action-chapter2-k近邻算法
一.numpy()函数
1.shape[]读取矩阵的长度
例:
import numpy as np x = np.array([[1,2],[2,3],[3,4]]) print x.shape //输出行列数 (3,2) print x.shape[0] //输出行数 3 print x.shape[1] //输出列数 2
2.tile()函数
形式为tile(A,reps)
reps的数字从后往前分别对应A的第N个维度的重复次数。如tile(A,2)表示A的第一个维度重复2遍,tile(A,(2,3))表示A的第一个维度重复3遍,然后第二个维度重复2遍,tile(A,(2,2,3))表示A的第一个维度重复3遍,第二个维度重复2遍,第三个维度重复2遍。
例:
A=[1,2] print ‘-----------tile(A,2)--------------‘ print tile(A,2) print ‘-----------tile(A,(2,2))----------‘ print tile(A,(2,2)) print ‘-----------tile(2,2,3)------------‘ print tile(A,(2,2,3))
输出结果为:
3.sum()函数
没有axis参数表示全部相加,axis=0表示按列相加,axis=1表示按照行的方向相加
例:
import numpy as np x = np.array([[1,2,3],[4,5,6]]) k = x.sum() k0 = x.sum(axis=0) k1 = x.sum(axis=1) print k print k0 print k1
输出结果为:
4.argsort()函数
返回的是数组值从小到大的索引值
例:>>> x = np.array([3, 1, 2])
>>> np.argsort(x)
array([1, 2, 0])
-------------------------------k近邻算法源代码---------------------------------
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): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
#sortedClassCount = sorted(classCount.iteritems(), key=lambda classCount:classCount[1], reverse=True) return sortedClassCount[0][0]
inX:输入向量
dataSet:训练样本
labels:标签向量
Machine Learning in Action-chapter2-k近邻算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。