# 准备数据:从文本文件中解析数据# 在kNN.py中创建名为file2matrix的函数,处理输入格式问题# 该函数的输入为文件名字符串,输出为训练样本矩阵和类标签向量# 将文本记录到转换Numpy的解析程序
1 def file2matrix(filename): 2 fr = open(filename) 3 arrayOLines = fr.readlines() 4 numberOfLines = len(arrayOLines) #得到文件行数 5 returnMat = zeros((numberOfLines,3)) #创建返回的Numpy矩阵 6 classLabelVector = [] 7 index = 0 8 for line in arrayOLines: #解析文件数据列表 9 line = line.strip() #使用line.strip()截取掉所有的回车字符 10 listFromLine = line.split('\t') #使用tab字符\t将上一步得到的整行数据分割成一个元素列表 11 returnMat[index,:] = listFromLine[0:3] #选取前三个元素,存储到特征矩阵中 12 classLabelVector.append(int(listFromLine[-1])) #-1表示列表中的最后一列元素,存储到向量classLabelVector中 13 index += 1 14 return returnMat,classLabelVector
1 出现的错误 2 >>>reload(kNN) 3 Traceback (most recent call last): 4 File "<input>", line 1, in <module> 5 NameError: name 'reload' is not defined
1 如果你的python版本是Python 2.X: 2 import sys 3 reload(sys) 4 sys.setdefaultencoding("utf-8") 5 6 如果你的python版本是python 3.3: 7 import imp 8 imp.reload(sys) 9 10 注意: 11 1.Python 3与Python 2有很大的区别,其中Python 3系统默认使用的就是utf-8编码。 12 2. 所以,对于使用的是Python 3的情况,就不需要sys.setdefaultencoding("utf-8")这段代码。 13 3.最重要的是,Python 3的sys库里面已经没有setdefaultencoding()函数了。 14 15 如果你的python版本是python 3.4以及3.4以上: 16 import importlib 17 import sys 18 importlib.reload(sys))