2024-06-01 01:05:31 发布
网友
我正在使用一个包含39个属性(38个独立特征+类属性)的数据集处理一个分类问题。当我试图计算相关矩阵时,没有考虑class属性。据我所知,它也应该包括在矩阵中
len(heartdata.columns) 39
由于我的数据帧中的列数是39,那么相关矩阵应该是形状(39,39),但我得到的是:
cor = heartdata.corr() cor.shape (38, 38)
我的class属性有一个分类类型,这就是为什么corr()函数没有考虑它的原因。一个简单的对话解决了这个问题
le = LabelEncoder() heartdata['class'] = le.fit_transform(heartdata['class'])
如果功能是分类的,那么应该使用LabelEncoding
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:
Correlation Matrix
cor = x.corr() print(cor)
如果您想使用plot显示特征之间的相关性,我建议使用heatmapplot:
heatmap
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()
输出:
我的class属性有一个分类类型,这就是为什么corr()函数没有考虑它的原因。一个简单的对话解决了这个问题
如果功能是分类的,那么应该使用
LabelEncoding
然后您可以得到
Correlation Matrix
:如果您想使用plot显示特征之间的相关性,我建议使用
heatmap
plot:输出:
相关问题 更多 >
编程相关推荐