这本书的好就不多说的,其实如果不是因为机器学习那门学位课的作业是这个,我想我会错过这本书0.0
knn
优 点:精度高,对异常值不敏感,无数据输入假定
缺 点:计算复杂度高,空间复杂度高,无法给出数据的内在含义
使用数据范围:数值型和标称型
————————————————————————————-下面进入正题————————————————————————————-
kNN.py
1 | from numpy import * |
createDataSet()
1 | def createDataSet(): |
classify0()
inX用于分类的输入向量,是一个向量
dataSet输入的训练样本集,是一个矩阵
labels标签向量
k用于选择最近邻居的数目
labels数目与dataSet的行数相同
1 | def classify0(inX, dataSet, labels, k): |
file2matrix()
将文本记录转换为NumPy
将文本记录转换为NumPy的解析程序
输入为矩阵,输出为训练样本矩阵和类标签向量
1 | def file2matrix(filename): |
autoNorm()
归一化数值,避免某特征值过大,使得权重比例不均匀,对计算结果产生影响。
autoNorm可以自动将数字特征值转化为0到1区间
1 | def autoNorm(dataSet): |
datingClassTest()
测试算法,样本集中百分之九十的数据用来训练样本,百分之十的样本用来测试分类器kNN.classify0()。
1 | def datingClassTest(): |
classifyPerson()
约会数据,对于未来的约会预测函数,输入飞行里程数,玩视频游戏的百分比和冰激凌公升数,可以得到一个是否对他感兴趣的预测
1 | def classifyPerson(): |
handwritingClassTest()
手写体测试
1 | def handwritingClassTest(): |
knn_main.py
1 | import kNN |
散点图
1 | fig=plt.figure() #建立画板 |
归一化数值
1 | normMat,ranges,minVals=kNN.autoNorm(datingDataMat) |
测试算法
1 | #kNN.datingClassTest() |
约会预测
1 | #对于未来的约会预测函数,输入飞行里程数,玩视频游戏的百分比和冰激凌公升数,可以得到一个是否对他感兴趣的预测, |
手写体
1 | #trainingDigits包含大约2000个例子,每个数字约有200个样本 |