机器学习实战 一书中第20页数据预处理,从文本中解析数据的程序。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 import numpy as np 2 def dataPreProcessing(fileName): 3 with open(fileName) as op: 4 lines=op.readlines() 5 # 返回值是list 6 lineNumer=len(lines) 7 # list长度即文件中的行数 8 dataMatrix=np.zeros((lineNumer,3)) 9 # 初始化lineNumer行,3列的全0矩阵,注意双层括号 10 labelVector=[] 11 # 标记向量初始化,它在目前是一个空的list 12 index=0 13 # 索引,为了后面给数据矩阵和标记向量初始化用的 14 for line in lines: 15 line=line.strip() 16 # 去空格 17 temp=line.split('\t') 18 # 按换行符分割数据,返回list 19 dataMatrix[index,:]=temp[0:3] 20 # 切片操作,dataMatrix[a,b:c]后的方括号中第一个值表示矩阵行号(从0开始) 21 # 第二、三个参数代表从b开始,c结束,前开后闭,包含b不包含c的元素 22 # temp中的两个参数同理 23 # 将temp中的前3个值赋给dataMatrix 24 labelVector.append(int(temp[-1])) 25 # 将temp中的最后一个值赋给labelVector,注意强转类型,不强转取到的类型为string 26 index=index+1 27 return dataMatrix,labelVector 28 # arr=np.array([[0,1,2],[3,4,5],[6,7,8]]) 29 # print(arr[2,:]) 30 fileName='./datingTestSet2.txt' 31 # “/”:表示根目录,在windows系统下表示某个盘的根目录,如“E:\”; 32 # “./”:表示当前目录;(表示当前目录时,也可以去掉“./”,直接写文件名或者下级目录) 33 # “../”:表示上级目录。 34 a,b=dataPreProcessing(fileName) 35 print(a,b)
附:今晚很郁闷,pycharm启动慢得要死,Numpy又用不了,好不容易才用清华镜像把numpy升级到可用状态,期间pycharm卡死了好几次,ukylin的虚拟机更卡,气得我想把电脑砸了,以后有替代的ide了再也不用pycharm了