簡體   English   中英

如何 plot 相關矩陣/熱圖與分類和數值變量

[英]How to plot correlation matrix/heatmap with categorical and numerical variables

我有 4 個變量,其中 2 個變量是標稱的(dtype=object),2 個是數字的(dtypes=int 和 float)。

df.head(1)

OUT:
OS_type|Week_day|clicks|avg_app_speed
iOS|Monday|400|3.4

現在,我想將 dataframe 放入 seaborn 熱圖可視化中。

import numpy as np
import seaborn as sns
ax = sns.heatmap(df)

但是我收到一條錯誤消息,指出我不能使用分類變量,只能使用數字。 我如何正確處理它然后將其反饋到熱圖中?

要繪制的熱圖需要介於 0 和 1 之間的值。對於數值變量之間的相關性,您可以使用 Pearson 的 R,對於分類變量(修正后的)Cramer's V,對於分類變量和數值變量之間的相關性,您可以使用相關率。

至於創建分類變量的數值表示,有多種方法可以做到這一點:

import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.read_csv('some_source.csv')  # has categorical var 'categ_var'

# method 1: uses pandas
df['numerized1'] = df['categ_var'].astype('category').cat.codes

# method 2: uses pandas, sorts values descending by frequency
df['numerized2'] = df['categ_var'].apply(lambda x: df['categ_var'].value_counts().index.get_loc(x))

# method 3: uses sklearn, result is the same as method 1
lbl = LabelEncoder()
df['numerized3'] = lbl.fit_transform(df['categ_var'])

# method 4: uses pandas; xyz captures a list of the unique values 
df['numerized4'], xyz = pd.factorize(df['categ_var'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM