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(毫无魅力)的人的分布。

参考书籍:《机器学习实战》

猜你喜欢

转载自blog.csdn.net/OneWord233/article/details/82882902
今日推荐