在這篇博客中,用一個小慄子來介紹一下散點圖在多變數數據中的一方面應用。 scikit庫中提供了一些數據,這裡使用iris數據集,是一種鳶尾屬植物,所給數據中包括兩種類型的花,目的是根據所給信息判斷兩種花分別屬於哪一類。也就是說找到區分這兩種花的方法。 載入庫 導入數據 首先看一下這個數據集中都有什麼 ...
在這篇博客中,用一個小慄子來介紹一下散點圖在多變數數據中的一方面應用。
scikit庫中提供了一些數據,這裡使用iris數據集,是一種鳶尾屬植物,所給數據中包括兩種類型的花,目的是根據所給信息判斷兩種花分別屬於哪一類。也就是說找到區分這兩種花的方法。
載入庫
1 from sklearn.datasets import load_iris
2 import numpy as np
3 import matplotlib.pyplot as plt
4 import itertools
導入數據
1 data = load_iris()
2 x = data['data']
3 y = data['target']
4 col_names = data['feature_names']
首先看一下這個數據集中都有什麼,放一張過程中的截圖。
從上面以及具體內容(數據較多,可以自行查看)可以看到,x中是150x4的二維數組,對應著花萼的長度寬度和花瓣的長度寬度。y中是存儲著已知的每組數據對應的花的種類,有0、1兩種情況。feature_names中存了每個屬性的名稱。
先給出主要的程式,然後慢慢解釋其中用到的知識點。
1 # 繪出6個圖形,包括了以下幾個列:花萼長度、花萼寬度、花瓣長度和花瓣寬度
2 plt.close('all') # 關掉其他的圖像
3 plt.figure(1)
4
5 # 繪製一個3行2列的圖
6 subplot_start = 321
7 col_numbers = range(0, 4)
8 # 為圖形添加標簽
9 col_pairs = itertools.combinations(col_numbers, 2)
10 plt.subplots_adjust(wspace = 0.5)
11
12 for col_pair in col_pairs:
13 plt.subplot(subplot_start)
14 plt.scatter(x[:,col_pair[0]], x[:,col_pair[1]], c=y)
15 plt.xlabel(col_names[col_pair[0]])
16 plt.ylabel(col_names[col_pair[1]])
17 subplot_start += 1
18 plt.show()
- #7:col_numbers = range(0, 4) 上面看到數據中包括四個屬性來判斷該花屬於哪個類型,在程式當中也就是二維數組中列的0~3。
- #9:col_pairs = itertools.combinations(col_numbers, 2) itertools.combination可以將裡面的內容組合在一起。這裡由於二維更便於展示,兩兩組合起來繪圖,觀察哪些屬性可以更清晰的區分出兩種花來。返回一個迭代器。
- #12:迴圈從生成的所有兩兩組合中取出來,繪圖。
- #14:plt.scatter(x[:,col_pair[0]], x[:,col_pair[1]], c=y) 繪製散點圖,橫縱軸為組合在一起的兩個屬性,[:,col_pair[0]]的意思就是組合中第一個屬性的150個數據。
- #17: subplot_start += 1 使圖像依次畫在一個圖形中。