水平有限,若有错误还请不吝赐教!
最近在学机器学习,因为Python2跟Python3的差距,所以,我选择直接学习Python3来完成对机器学习实战的内容,此类博客会持续更新
(等我完成本书内容,代码会慢慢在github上更新)
接触到第一个算法为K-近邻算法,其伪代码如下:
1.计算已知类别数据集中的点与当前点之间的距离
2.按照距离递增次序排列
3.选取与当前点距离最小的K个点
4.确定前k个点所在类别的出现频率
5.返回k个点出现频率最高的类别作为当前点的预测分类
下面贴上kNN.py代码:
from numpy import *
import operator
def createDataSet():
group =array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group,labels
def classify0(inX,dataSet,labels,k):
#此函数拥有4个输入参数,inX表示分类的输入向量,dataSet表示输入的训练样本集,labels为标签向量,
#k表示用于选择最近邻的数目,其中标签向量的元素数目与矩阵dataSet的函行数相同。
dataSetSize = dataSet.shape[0]
diffMat = tile(inX,(dataSetSize,1)) - dataSet
sqDiffMat = diff