一.准备数据
数据集:datingTestSet.txt 每个样本数据占据一行,总共有1000行。样本主要有以下特征:
(1)每年获得的飞行常客里程数
(2)玩视频游戏所耗时间百分比
(3)每周消费的冰淇淋公升数
创建名为file2matrix的函数,以此来处理输入格式的问题。该函数的输入为文件名字符串,输出为训练样本矩阵和类标签向量。
def file2matrix(filename):
#此函数的作用将文本转化为NumPy的解析程序
fr = open(filename) #打开文件
arrayOLines = fr.readlines() # 一行行读取
numberOfLines = len(arrayOLines)#获取行数
returnMat=zeros((numberOfLines,3))#创建返回的NumPy矩阵
classLabelVector = [] #声明列表
index=0 #索引
#提取数据到矩阵中
for line in arrayOLines: #对每一行执行以下操作
line=line.strip() #删除回车字符
listFromLine=line.split('\t')#以空格符作为分割元素
returnMat[index,:] = listFromLine[0:3]# 数据的前三项是样本数据故需要放入矩阵
classLabelVector.append(int(listFromLine[-1]))#最后一列为标签元素加入列表
index+=1
#返回标签元素和矩阵
return returnMat,classLabelVecto
这样就将样本数据在文件中以矩阵的形式提取出来了。
二.数据可视化:
为了更清晰的分析数据,我们用Matplotlib库绘制散点图。(如果未安装Matplotlib,运行命令pip install matplotlib 安装)
#导入必要的包
from matplotlib.font_manager import FontProperties
from numpy import *
import operator
from matplotlib.font_manager import FontProperties
import matplotlib.lines as mlines
import matplotlib.pyplot as plt
#数据可视化,绘制原始数据的散点图。
def showdatas(datingDataMat, datingLabels):
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",