用python-pandas作圖矩陣
註:本文為一篇翻譯文章,來自於
Visualize Machine Learning Data in Python With Pandas - Machine Learning Mastery,原文標題是VisualizenMachine Learning Data in Python With Pandas(在Python里使用pandas對機器學習的數據進行可視化分析),作者的意思是我們在採用機器學習演算法對數據進行分析時,首先要對數據進行了解,而了解數據最快速的方式就是可視化。但是作者可視化採用的方法對很多data都通用,且採用的是各種圖形的圖矩陣,如直方圖、散點圖矩陣等等。本文就根據作者的分析來介紹如何運用pandas作各種矩陣圖。
(1)數據
數據為PimanIndians dataset,在作者的代碼中包含該數據來源網址,即皮馬印第安人糖尿病數據集,樣本個數有768個,包含變數有:
Preg:懷孕次數
Plas:口服葡萄糖耐量試驗中血漿葡萄糖濃度為2小時
Pres:舒張壓(mm Hg)
Skin:三頭肌皮褶厚度(mm)
test :2小時血清胰島素(μU/nml)
mass:體重指數(kg /(身高(m))^ 2)
pedi:糖尿病血統功能
age:年齡(歲)
class:類變數(0或1),估計是性別。
nn(2)Histograms(直方圖矩陣)url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"nnames = [preg, plas, pres, skin, test, mass, pedi, age, class] #設置變數名ndata = pandas.read_csv(url, names=names) #採用pandas讀取csv數據ndata.hist()nplt.show()n
但是,我們看到圖形並不協調,存在變數與坐標重疊的情況,我們可以調整hist()的參數來解決,包括對x軸、y軸標籤大小的調節((xlabelsize,ylabelsize),整個圖形布局大小的調節figsize:
data.hist(xlabelsize=7,ylabelsize=7,figsize=(8,6)) #nnplt.show()n
可以看到每一個變數的分布情況,其中mass、plas、pres呈現一定的正態分布,其他除了class之外,基本上左偏。
(3)Density Plots(密度圖矩陣)
data.plot(kind=density, subplots=True, layout=(3,3), sharex=False,fontsize=8,figsize=(8,6))nplt.show()n
原始代碼輸出後仍然存在重疊的地方,在這裡加入了對圖中坐標文字fontsize,以及整體布局大小figsize。
(4)箱線圖矩陣(Box and Whisker Plots)
data.plot(kind=box, subplots=True, layout=(3,3), sharex=False, sharey=False, fontsize=8,figsize=(8,6))nplt.show()n
與(3)類似,在這裡注意可以共享x軸和y軸,用了sharex=False, sharey=False的命令。
(5)相關係數矩陣圖(Correlation Matrix Plot)
import numpyncorrelations = data.corr() #計算變數之間的相關係數矩陣n# plot correlation matrixnfig = plt.figure() #調用figure創建一個繪圖對象nax = fig.add_subplot(111)ncax = ax.matshow(correlations, vmin=-1, vmax=1) #繪製熱力圖,從-1到1nfig.colorbar(cax) #將matshow生成熱力圖設置為顏色漸變條nticks = numpy.arange(0,9,1) #生成0-9,步長為1nax.set_xticks(ticks) #生成刻度nax.set_yticks(ticks)nax.set_xticklabels(names) #生成x軸標籤nax.set_yticklabels(names)nplt.show()n
(6)散布圖矩陣(Scatterplot Matrix)
from pandas.tools.plotting import scatter_matrixnscatter_matrix(data,figsize=(10,10)) nplt.show()n
推薦閱讀:
※Python進階課程筆記(四)
※Scrapy學習實例(二)採集無限滾動頁面
※特徵工程總結:R與Python的比較實現
※Python 初學者最容易犯的幾個錯誤。
※markdown for academia