矩陣圖非常有用,人們經常用它來查看多個變量之間的聯系。
下面用著名的鳶尾花數據來畫一個矩陣圖。從sklearn導入鳶尾花數據,然后將其轉換成pandas的DataFrame類型,最后用seaborn畫圖。(seaborn包里也有這個數據,也可以直接從seaborn包導入此數據)
矩陣圖: sns.pairplot(data,hue=...) --- hue為data里的數據,用其來顯示不同顏色
由於data需要的格式為每列是變量(在這里是鳶尾花的四個特征),每行則是各變量的觀測數據,因此需要將從sklearn導入的初始數據轉換格式。 數據轉換好之后應如下所示(此處只截取部分):
sepal_length sepal_width petal_length petal_width species 0 5.1 3.5 1.4 0.2 setosa 1 4.9 3.0 1.4 0.2 setosa 2 4.7 3.2 1.3 0.2 setosa 3 4.6 3.1 1.5 0.2 setosa 4 5.0 3.6 1.4 0.2 setosa 5 5.4 3.9 1.7 0.4 setosa 6 4.6 3.4 1.4 0.3 setosa .. ... ... ... ... ... 120 6.9 3.2 5.7 2.3 virginica 121 5.6 2.8 4.9 2.0 virginica 122 7.7 2.8 6.7 2.0 virginica 123 6.3 2.7 4.9 1.8 virginica
完整代碼如下:
import pandas as pd from sklearn.datasets import load_iris from matplotlib import pyplot as plt import seaborn as sns iris=load_iris() d=pd.DataFrame(iris.data,columns=["sepal_length","sepal_width","petal_length","petal_width"]) d["species"]=iris.target #增加一列,為鳶尾花的類別 d.loc[d["species"]==0,"species"]="setosa" #把類別這一列數值為0的替換為setosa d.loc[d["species"]==1,"species"]="versicolor" #把類別這一列數值為1的替換為versicolor d.loc[d["species"]==2,"species"]="virginica" #把類別這一列數值為2的替換為virginica sns.pairplot(d,hue="species") plt.show()
圖像如下:

看第三行第四列的這幅圖,可以看到petal_length和petal_width呈很強的正比關系。
seaborn官網上有更完整的示例,有興趣可以查看:http://seaborn.pydata.org/generated/seaborn.pairplot.html。
