Мені найбільше сподобався пост Аддісона Клінке, як найпростіший, але я використав пропозицію Войцеха Мощинська для фільтрації та складання діаграм, але розширив фільтр, щоб уникнути абсолютних значень, тому, отримавши велику кореляційну матрицю, відфільтруй, сформулюй, а потім вирівняй:
Створено, відфільтровано та складено схему
dfCorr = df.corr()
filteredDf = dfCorr[((dfCorr >= .5) | (dfCorr <= -.5)) & (dfCorr !=1.000)]
plt.figure(figsize=(30,10))
sn.heatmap(filteredDf, annot=True, cmap="Reds")
plt.show()
Функція
Врешті-решт, я створив невелику функцію, щоб створити кореляційну матрицю, відфільтрувати її, а потім згладити. Як ідея, її можна легко розширити, наприклад, асиметричні верхні та нижні межі тощо.
def corrFilter(x: pd.DataFrame, bound: float):
xCorr = x.corr()
xFiltered = xCorr[((xCorr >= bound) | (xCorr <= -bound)) & (xCorr !=1.000)]
xFlattened = xFiltered.unstack().sort_values().drop_duplicates()
return xFlattened
corrFilter(df, .7)