机器学习实战笔记2:使用K

阅读: 评论:0

机器学习实战笔记2:使用K

机器学习实战笔记2:使用K

一 背景

在学习了上一节简单的k-近邻算法实现后,这一篇文章讲一下书中给出的一个例子,在约会网站上使用k-近邻算法:
1)收集数据:可以使用爬虫进行数据的收集,也可以使用第三方提供的免费或收费的数据。一般来讲,数据放在txt文本文件中,按照一定的格式进行存储,便于解析及处理。
2)准备数据:使用Python解析、预处理数据。
3)分析数据:可以使用很多方法对数据进行分析,例如使用Matplotlib将数据可视化。
4)测试算法:计算错误率。
5)使用算法:错误率在可接受范围内,就可以运行k-近邻算法进行分类。

二 准备数据:从文本文件中解析数据

直接用了一个博主给的数据:
数据下载

海伦收集的样本数据主要包含以下3种特征:

  • 每年获得的飞行常客里程数
  • 玩视频游戏所消耗时间百分比
  • 每周消费的冰淇淋公升数
    在第一节代码基础上创建名为file2matrix的函数:
def file2matrix(filename):fr = open(filename)# 读取文件所有内容arrayOLines = fr.readlines()# 得到文件行数numberOfLines = len(arrayOLines)# 返回的NumPy矩阵,解析完成的数据:numberOfLines行,3列returnMat = zeros((numberOfLines, 3))classLabelVector = []# 行的索引值index = 0for line in arrayOLines:# s.strip(rm),当rm空时,默认删除空白符line = line.strip()# 使用s.split(str="",num=string,cout(str))将字符串根据't',tab字符分隔符进行切片。listFromLine = line.split('t')# 将数据前三列提取出来,存放到returnMat的NumPy矩阵中,也就是特征矩阵returnMat[index, :] = listFromLine[0:3]# 根据文本中标记的喜欢的程度进行分类,1代表不喜欢,2代表魅力一般,3代表极具魅力if listFromLine[-1] == 'didntLike':classLabelVector.append(1)elif listFromLine[-1] == 'smallDoses':classLabelVector.append(2)elif listFromLine[-1] == 'largeDoses':classLabelVector.append(3)index += 1return returnMat, classLabelVector

上面代码主要作用是从txt文件中一行一行的提取出数据到数组中,首先用line.strip()截取掉所有的回车字符,然后使用tab字符“t”将上一步得到的整行数据分割成一个元素列表。
然后测试:

if __name__ == '__main__':#打开的文件名filename = ""#打开并处理数据datingDataMat, datingLabels = file2matrix(filename)print(datingDataMat)print(datingLabels)

数据解析结果类似:

本文发布于:2024-02-05 05:22:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170725102363400.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实战   机器   笔记
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23