1.2爲多變量數據繪製散點陣圖

  在這篇博客中,用一個小栗子來介紹一下散點圖在多變量數據中的一方面應用。數組

  scikit庫中提供了一些數據,這裏使用iris數據集,是一種鳶尾屬植物,所給數據中包括兩種類型的花,目的是根據所給信息判斷兩種花分別屬於哪一類。也就是說找到區分這兩種花的方法。spa

  加載庫

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']

  首先看一下這個數據集中都有什麼,放一張過程當中的截圖。code

 

 

 

 

 

 

 

 

 

 

 

 

 

  從上面以及具體內容(數據較多,能夠自行查看)能夠看到,x中是150x4的二維數組,對應着花萼的長度寬度和花瓣的長度寬度。y中是存儲着已知的每組數據對應的花的種類,有0、1兩種狀況。feature_names中存了每一個屬性的名稱。blog

  先給出主要的程序,而後慢慢解釋其中用到的知識點。ci

 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  使圖像依次畫在一個圖形中。
  
 
 
  根據上述獲得的兩兩組合的結果繪製出6副圖像,綜合考慮合理性和區分度高,能夠發現,最後一張圖能夠清晰的將兩種花區分開來。所使用的屬性位花瓣長度和花瓣寬度。那麼,後續就能夠使用這兩個因素來判別花是屬於哪一個類型的了。
相關文章
相關標籤/搜索