289

膨大な数の特徴を持つデータ セットがあるため、相関行列の分析が非常に困難になっています。dataframe.corr()pandas ライブラリの関数を使用して取得した相関行列をプロットしたいと思います。この行列をプロットするために pandas ライブラリによって提供される組み込み関数はありますか?

4

16 に答える 16

111

Seaborn のヒートマップ バージョン:

import seaborn as sns
corr = dataframe.corr()
sns.heatmap(corr, 
            xticklabels=corr.columns.values,
            yticklabels=corr.columns.values)
于 2016-10-24T22:45:06.460 に答える
93

seaborn からヒート マップを描画するか、pandas から散布マトリックスを描画することにより、フィーチャ間の関係を観察できます。

散布図:

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)

出力は、フィーチャの相関マップになります。つまり、以下の例を参照してください。

ここに画像の説明を入力

食料品と洗剤の相関は高い。同様に:

相関性の高い製品:
  1. 食料品と洗剤。
相関が中程度の製品:
  1. 牛乳と食料品
  2. 牛乳と洗剤_紙
相関の低い製品:
  1. 牛乳とデリ
  2. 冷凍と生。
  3. 冷凍とデリ。

ペアプロットから: ペアプロットまたは散布図から同じ関係のセットを観察できます。しかし、これらから、データが正規分布しているかどうかを判断できます。

ここに画像の説明を入力

注: 上記はデータから取得した同じグラフで、ヒートマップの描画に使用されます。

于 2017-03-23T13:48:20.603 に答える
17

完全を期すために、Jupyterを使用している場合、2019年後半の時点でseabornで知っている最も簡単ソリューション

import seaborn as sns
sns.heatmap(dataframe.corr())
于 2019-11-08T08:01:37.680 に答える
3

他の方法に加えて、すべてのケースの散布図を提供するペアプロットを使用することもお勧めします-

import pandas as pd
import numpy as np
import seaborn as sns
rs = np.random.RandomState(0)
df = pd.DataFrame(rs.rand(10, 10))
sns.pairplot(df)
于 2020-01-24T07:11:20.067 に答える
1

Form correlation matrix, in my case zdf is the dataframe which i need perform correlation matrix.

corrMatrix =zdf.corr()
corrMatrix.to_csv('sm_zscaled_correlation_matrix.csv');
html = corrMatrix.style.background_gradient(cmap='RdBu').set_precision(2).render()

# Writing the output to a html file.
with open('test.html', 'w') as f:
   print('<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-widthinitial-scale=1.0"><title>Document</title></head><style>table{word-break: break-all;}</style><body>' + html+'</body></html>', file=f)

Then we can take screenshot. or convert html to an image file.

于 2020-03-05T04:56:26.250 に答える
-2

以下の読み取り可能なコードを確認してください

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(36, 26))
heatmap = sns.heatmap(df.corr(), vmin=-1, vmax=1, annot=True)
heatmap.set_title('Correlation Heatmap', fontdict={'fontsize':12}, pad=12)```

  [1]: https://i.stack.imgur.com/I5SeR.png
于 2021-05-05T11:57:19.807 に答える
-2
corrmatrix = df.corr()
corrmatrix *= np.tri(*corrmatrix.values.shape, k=-1).T
corrmatrix = corrmatrix.stack().sort_values(ascending = False).reset_index()
corrmatrix.columns = ['Признак 1', 'Признак 2', 'Корреляция']
corrmatrix[(corrmatrix['Корреляция'] >= 0.7) + (corrmatrix['Корреляция'] <= -0.7)]
drop_columns = corrmatrix[(corrmatrix['Корреляция'] >= 0.82) + (corrmatrix['Корреляция'] <= -0.7)]['Признак 2']
df.drop(drop_columns, axis=1, inplace=True)
corrmatrix[(corrmatrix['Корреляция'] >= 0.7) + (corrmatrix['Корреляция'] <= -0.7)]
于 2021-11-11T18:45:58.110 に答える