Machine Learning in Action-chapter2-k近邻算法
Posted 老虎头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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近邻算法的主要内容,如果未能解决你的问题,请参考以下文章
machine learning in action Record
用10张图来看机器学习Machine learning in 10 pictures
决策树(chap3)Machine Learning In Action学习笔记
What Machine Learning Have In Store For Normal People?
Interesting Applications in Machine Learning and Computer Vision