首页 > 解决方案 > 使用 OneHotEncoder 后在 Pandas 数据框中添加 encoder.categores_ 作为列名

问题描述

我正在使用泰坦尼克号数据集。我已经对幸存的 3 个类别进行了一次热编码,性别,客舱。

encoder = OneHotEncoder(categories='auto',
                   drop='first', 
                   sparse=False,
                   handle_unknown='error')
encoder.fit(X_train.fillna('Missing'))

tmp = encoder.transform(X_train.fillna('Missing'))

onepd = pd.DataFrame(tmp, columns= encoder.categories_)

ecoder.categories_ 数组大小与 tmp 不同。有什么办法吗?

标签: pandasmachine-learningscikit-learnone-hot-encodingfeature-engineering

解决方案


encoder.categories_ 可能是一个矩阵,尝试索引第一个元素:

尝试这个:

encoder = OneHotEncoder(categories='auto',
                   drop='first', 
                   sparse=False,
                   handle_unknown='error')
encoder.fit(X_train.fillna('Missing'))

tmp = encoder.transform(X_train.fillna('Missing'))

onepd = pd.DataFrame(tmp, columns= encoder.categories_[0])

推荐阅读