pandas中的相关矩阵没有考虑某些列

2024-06-01 01:05:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个包含39个属性(38个独立特征+类属性)的数据集处理一个分类问题。当我试图计算相关矩阵时,没有考虑class属性。据我所知,它也应该包括在矩阵中

len(heartdata.columns)
39

由于我的数据帧中的列数是39,那么相关矩阵应该是形状(39,39),但我得到的是:

cor = heartdata.corr()
cor.shape
(38, 38)

Tags: columns数据len属性分类矩阵特征class
2条回答

我的class属性有一个分类类型,这就是为什么corr()函数没有考虑它的原因。一个简单的对话解决了这个问题

le = LabelEncoder()
heartdata['class'] = le.fit_transform(heartdata['class'])

如果功能是分类的,那么应该使用LabelEncoding

from sklearn.preprocessing import LabelEncoder

train = train_df   
label_encoder = LabelEncoder()

for i in range(len(train.columns)):
    column = train_df.columns[i]
    train[column] = label_encoder.fit_transform(train_df[column])
    print(f"train {column} uniques: {len(train[column].unique())} ")

x = train
y = train_df['gender'].to_frame(name='gender')

然后您可以得到Correlation Matrix

cor = x.corr()
print(cor)

如果您想使用plot显示特征之间的相关性,我建议使用heatmapplot:

import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(10,8),linewidth=10,edgecolor="#04253a" )
sns.heatmap(cor, annot=True, cmap=plt.cm.Reds)
plt.show()

输出enter image description here

相关问题 更多 >