从昨天中午开始整这个kNN,昨天晚上一直没吃饭终于整好,无数次的失败,成功之后很开心。
数据集在csdn可以下载到,放在执行python的目录里。
通过数据分析出3类人,没有魅力的,有点魅力的,极具魅力的。
这里关键是给出操作的步骤,忽略的细节请参考《机器学习实战》
step1:
首先是数据的获取,将下载好的数据放在python的目录中,名字为'datingTestSet2.txt',这一点书上写错了,按照'datingTestSet.txt'来的,这一点注意一下。数据有4个值,是飞机行程,游戏时间,冰淇淋数量,人的类型(1,2,3),个人感觉不用在意数据的大小和实际意义,全部归一化即可。
#从文件中提取数据
def createDataSet(filename):
#取得文件行数
f = open(filename)
flines = f.readlines()
linelen = len(flines)
#建立一个len * 3的空白矩阵
mat = zeros((linelen, 3))
index = 0
lavels = []
for line in flines:
linewithoutblock = line.strip()
linelist = linewithoutblock.split()
mat[index, : ] = linelist[0 : 3]
lavels.append(int(linelist[-1]))
index += 1
return mat, lavels
mat, lavels为我们得到的数据转化成的二维矩阵和标签列表
测试结果:
step2:
将数据图形化看数据的分布
分布图如下,能明显看出数据每一类的分布,可以使用KNN算法进行预测