import numpy as np
"""
Parameters:
filename - 文件名
Returns:
returnMat - 特征矩阵
classLabelVector - 分类Label向量
"""
# 函数说明:打开并解析文件,对数据进行分类:1代表不喜欢,2代表魅力一般,3代表极具魅力
def file2matrix(filename):
fr=open(filename)#打开文件
arrayOfLines=fr.readlines()#读取文件的所有内容
numberOflines=len(arrayOfLines)#得到文件的行数
returnMat=np.zeros((numberOflines,3))#创建返回的NumPy矩阵
classLabelVector=[]#返回分类标签向量
index=0
#循环处理每一行的文件
for line in arrayOfLines:
line =line.strip()#s.strip(rm),当rm空时,默认删除空白符(包括'\n','\r','\t',' ')
listFromLine=line.split('\t')#将上一行得到的整行数据根据“\t"(tap)分割为一个元素列表
returnMat[index,:]=listFromLine[0:3]#选取前三列元素,每次循环是一行
#classLabelVector.append(listFromLine[-1])#输出标签的文本
####根据文本中标记的喜欢的程度进行分类,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+=1
return returnMat,classLabelVector
if __name__=="__main__":
filename="datingTestSet.txt"
datingDataMat, datingLabels=file2matrix(filename)
print(datingDataMat)
print(datingLabels)
机器学习实战-kNN-2.2.1
于 2023-10-26 18:33:19 首次发布