使用pandas的相关matrix
我有一个具有大量特征的数据集,因此分析相关matrix变得非常困难。 我想绘制一个相关matrix,我们使用pandas库中的dataframe.corr()
函数。 有没有pandas库提供的内置函数来绘制matrix?
你可以使用matplotlib中的matshow()
:
plt.matshow(dataframe.corr())
试试这个函数,它也显示相关matrix的variables名称:
def plot_corr(df,size=10): '''Function plots a graphical correlation matrix for each pair of columns in the dataframe. Input: df: pandas DataFrame size: vertical and horizontal size of the plot''' corr = df.corr() fig, ax = plt.subplots(figsize=(size, size)) ax.matshow(corr) plt.xticks(range(len(corr.columns)), corr.columns); plt.yticks(range(len(corr.columns)), corr.columns);
Seaborn的热图版本:
import seaborn as sns corr = dataframe.corr() sns.heatmap(corr, xticklabels=corr.columns.values, yticklabels=corr.columns.values)
您可以通过从海鸟绘制热图或从pandas散射matrix来观察特征之间的关系。
分散matrix:
pd.scatter_matrix(dataframe, alpha = 0.3, figsize = (14,8), diagonal = 'kde');
如果你想要显示每个特征的偏度,请使用seaborn对图。
sns.pairplot(dataframe)
Sns热图:
import seaborn as sns f, ax = pl.subplots(figsize=(10, 8)) corr = dataframe.corr() sns.heatmap(corr, mask=np.zeros_like(corr, dtype=np.bool), cmap=sns.diverging_palette(220, 10, as_cmap=True), square=True, ax=ax)
输出将是特征的相关图。 即看到下面的例子。
食品和洗涤剂之间的相关性很高。 同理:
产品高度相关:
- 杂货和洗涤剂。
中等相关产品:
- 牛奶和杂货
- 牛奶和洗涤剂_纸
低相关产品:
- 牛奶和熟食
- 冷冻和新鲜。
- 冷冻和熟食。
来自Pairplots:您可以从对偶图或散布matrix观察相同的一组关系。 但是从这些我们可以说数据是否是正态分布的。
注意:以上是从数据中获取的相同graphics,用于绘制热图。