我正在使用一个包含39个属性(38个独立特征+类属性)的数据集处理一个分类问题。当我尝试计算相关矩阵时,没有考虑class属性。据我所知,它也应该包括在矩阵中。
len(heartdata.columns)
39
由于我的数据帧中的列数是39,因此相关矩阵的形状应该是(39,39),但我得到的结果是:
cor = heartdata.corr()
cor.shape
(38, 38)
发布于 2021-04-25 10:23:15
我的class属性有一个分类类型,这就是corr()函数没有考虑它的原因。一个简单的代码就解决了这个问题。
le = LabelEncoder()
heartdata['class'] = le.fit_transform(heartdata['class'])
发布于 2021-04-25 10:33:33
如果您的要素是分类要素,则应使用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来显示特征之间的相关性,我建议使用heatmap
plot:
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()
输出:
https://stackoverflow.com/questions/67252076
复制相似问题