1. 程式人生 > >Python處理資料—生成散點圖

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

 

參考書籍:《機器學習實戰》