Python处理数据—生成散点图
Python作为一门工具,具有极强大的处理数据的能力,今天我们看一下如何用python生成数据散点图
我们先新建一个TXT文件,里面存储10组数据,每组数据4个值,分别代表运动的时间,玩游戏所占一天时间的百分比,每周吃垃圾食品的次数,以及个人魅力的分类(1-3),如下:
100.00 0.24 10.00 3
150.00 0.30 12.00 2
300.00 0.45 5.00 1
200.00 0.50 8.00 1
180.00 0.43 11.00 1
120.00 0.18 7.00 3
210.00 0.25 9.00 3
180.00 0.50 7.00 1
130.00 0.40 5.00 2
190.00 0.23 6.00 2
首先我们要获取txt文件里的数据,我们在kNN.py中写一个读取函数:
def file2matrix(filename):
fr = open(filename)
arrayOLines = fr.readlines()#读取文件所有行的内容
numberOfLines = len(arrayOLines)
returnMat = zeros((numberOfLines,3))#zeros函数:创建指定行列数的矩阵,并归零
classLabelVector = []
index = 0
for line in arrayOLines:
line = line.strip()
listFromLine = line.split(' ')
returnMat[index, :] = listFromLine[0:3]#文件中的三个数据依次赋给矩阵
classLabelVector.append(int(float(listFromLine[-1])))#索引-1代表列表最后一个元素
index += 1
return returnMat,classLabelVector
通过这个函数,我们把所有数据存在了一个矩阵中,以及分类,一起返回出去
最后我们看一下执行代码,但是在写代码之前,我们需要导入一个matplotlib的模块,用来绘制图形
我们采取了样本集中的第2个和3个参数作为图形的坐标参考
以下是执行代码:
import matplotlib
import matplotlib.pyplot as plt
from numpy import *
import kNN
datingDataMat, vector = kNN.file2matrix('datingTestSet2.txt')
fig = plt.figure()#新建图像
ax = fig.add_subplot(111)#add_subplot函数:添加画布,画布分割为1行1列,当前画布为第1块
ax.scatter(datingDataMat[:, 1], datingDataMat[:, 2], 15.0*array(vector), 15.0*array(vector))#设置横坐标为数据列表中第1个元素,纵坐标为第二个元素
plt.show()
这里我们用到的一个关键的函数就是scatter函数,第一二个参数代表的是散点图的横纵坐标,第三四个参数代表散点的颜色和大小,至此,代码写完,运行,得到散点图:
我们可以看到,其中黄色的点代表魅力等级3(极具魅力)的人的分布,绿色的点代表等级2(魅力一般)的人的分布,紫色的点代表等级1(毫无魅力)的人的分布。
参考书籍:《机器学习实战》