kNN算法的处理步骤:
1 收集数据
2 准备数据,距离计算所需要的数值计算
3 分析数据
4 测试算法,计算错误率
5 使用算法,判定输入的数据处于哪个分类
实例:改进约会网站的配对效果
1 准备数据,从文本文件中解析数据,将数据处理成分类器可以接受的格式
# 从文本中解析数据,处理输入格式问题,将字符串转化为训练样本矩阵和类标签向量
def fileToMatrix(fileName):
# 读取文件内容
fr = open(fileName)
# readlines()和readline()的区别
arrayOfLine = fr.readlines()
numberOfLine = len(arrayOfLine)
# 创建处理特征值的二维数组和存储标签的列表
returnMat = zeros((numberOfLine, 3))
classLabelVector = []
index = 0
# 循坏处理每行数据
for line in arrayOfLine:
# strip()移除字符串头尾指定的字符,即移除每行尾部的空格。split()对字符串进行切片
# \t是制表符,其中t是TAB的缩写。制表符,产生一定距离的空白。
line = line.strip()
listFromLine = line.split('\t')
# 将前三个元素存储到特征矩阵中,最后一个元素到标签向量中
returnMat[index, :] = listFromLine[0:3]
#for i in range(3):
# returnMat[index, i] = float(listFromLine[i])
classLabelVector.append(int(listFromLine[-1]))
index += 1
return returnMat, classLabelVector
2 分析数据,使用Matplotlib绘制散点图
import matplotlib.pyplot as plt
from chapter2.kNN import *
# 分析数据,创建散点图
datingDataMat,datingDataLabel = fileToMatrix("E:\机器学习\machinelearninginaction\Ch02\datingTestSet2.txt")
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingDataMat[:,