《机器学习实战》学习笔记之k-近邻算法2
来源:互联网 发布:php完全自学手册 编辑:程序博客网 时间:2024/05/16 09:02
2.2 示例:使用k近邻算法改进约会网站的配对效果
2.2.1 从文本文件中解析数据
(1)import KNN,报错:for line in arrayOLines
原因:书中的代码在for语句最后漏掉了冒号,改成for line in arrayOLines:即可
(2)输出datingDataMat只有第一行有数值,其余全为0,如图
原因:由于空格不当,return写进for循环中,故只循环了一次就退出了
本节代码及注释
#coding=utf-8from numpy import *def file2matrix (filename): fr = open(filename) arrayOLines = fr.readlines()#读取所有行直到结束 numberOfLines = len(arrayOLines)#返回元素个数 returnMat = zeros((numberOfLines,3))#创建存储特征的矩阵 classLabelVector = []#创建存储标签的向量 index = 0 for line in arrayOLines: line = line.strip()#strip移除字符串头尾的空白符,默认为\n \t \r '' listFromLine = line.split('\t')#split:通过指定分隔符对字符串进行分割,默认\n\t '' returnMat[index,:] = listFromLine[0:3]#取txt中每行前三个个元素存储到特征矩阵中 classLabelVector.append(int (listFromLine[-1]))#append:在列表末尾添加新对象,取txt最后一列存储到标签中 index +=1return returnMat,classLabelVector
终端命令
2.2.2 使用Matplotlib创建散点图
想采用色彩标记不同的分类时,一直报错
报错:NameError: name 'array' is not defined
原因:需要导入array库
2.2.3归一化数值
def autoNorm(dataSet): minVals=dataSet.min(0)#(0)表示从列中取最小值,minVals尺寸为1*3 maxVals=dataSet.max(0)#1*3 ranges=maxVals-minVals#1*3 normDataSet=zeros(shape(dataSet)) m=dataSet.shape[0] normDataSet=dataSet-tile(minVals,(m,1))#tile将1*3的最小值复制成m大小的矩阵 normDataSet=normDataSet/tile(ranges,(m,1)) return normDataSet,ranges,minVals
2.2.4测试算法
报错:
原因:这一句和下一句中的反斜杠\表示续行,在斜杠后换行,用\连接表示为一行。这句错误是因为用了\却没有换行
修改:可把\去掉,或在\之后换行
本节代码及注释:
def datingClassTest(): hoRatio=0.10#选择10%的数据作为测试数据,90%的数据作为训练样本 datingDataMat,datingLabels=file2matrix('datingTestSet2.txt') normMat,ranges,minVals=autoNorm(datingDataMat) m=normMat.shape[0] numTestVecs=int(m*hoRatio)#计算测试数据的元素个数 errorCount=0.0 for i in range(numTestVecs): classifierResult=classify0(normMat[i,:],normMat[numTestVecs:m,:],datingLabels[numTestVecs:m],3)#数据前numTestVecs个作为测试向量,后面的向量作为训练向量,k=3 print "the classifier came back with:%d,the real answer is:%d"%(classifierResult,datingLabels[i]) if(classifierResult!=datingLabels[i]):errorCount+=1.0#若分类结果与实际标签不符,则错误数加1 print "the total error rate is: %f" % (errorCount/float(numTestVecs))终端窗口:
0 0
- 《机器学习实战》学习笔记之k-近邻算法2
- 《机器学习实战》学习笔记之k-近邻算法1
- 《机器学习实战》学习笔记之k-近邻算法3
- 《机器学习实战》学习笔记(三)之K-近邻算法
- 机器学习实战笔记 K近邻算法
- 机器学习实战笔记:K近邻算法
- 机器学习实战笔记 k-近邻算法
- 机器学习实战笔记:k近邻算法
- 机器学习实战笔记之k-近邻算法
- 机器学习实战笔记之二(k-近邻算法)
- 机器学习实战之K-近邻算法
- 《机器学习实战》之K-近邻算法
- 机器学习实战之k-近邻算法
- 机器学习实战之K近邻算法
- 机器学习实战笔记2(k-近邻算法)
- 机器学习实战笔记2(k-近邻算法)
- 机器学习笔记之K近邻算法
- 机器学习笔记之K-近邻算法
- Jsp 的九个内置对象
- OPENCV二值化图像内孔洞填充/小区域去除
- java中的object类(equals和toString)
- IO流_把一个文件中的字符串排序后再写入另一个文件案例
- 答答租车系统笔记.2
- 《机器学习实战》学习笔记之k-近邻算法2
- Tomcat+MySQL为自己的APP打造服务器(2-1)Servlet的使用
- java keytool 证书-学习总结
- [02]项目实战- 移动端流体布局
- C语言socket设置超时/setsockopt函数
- 常用软件的安装(windows/linux)
- computed 属性计算
- 第一、二、三章笔记
- 希尔排序