pandas scikit-learn列转换器-具有不同离散值的列

sycxhyv7  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(167)

我有一个包含大约10列离散数据的数据集,我在将它们转换为可以执行机器学习的形式时遇到了麻烦
我能够以这种方式转换一个只包含YES/NO值列:

le = LabelEncoder()
X['ABC'] = le.fit_transform(X['ABC'])

看起来还可以
但是,如果我有不同于YES/NO的内容,例如,具有10个不同值的本地化,我只有错误

from sklearn.feature_extraction import FeatureHasher
h = FeatureHasher(n_features=)
D = [{'dog': 1, 'cat':2, 'elephant':4},{'dog': 2, 'run': 5}]
f = h.transform(D)
f.toarray()

我尝试使用featurehasher bun我不确定这是否是个好主意,我已经更改了示例代码以从列中获取数据,但得到了一个信息错误:输入只能是dict
我也试过类似的方法:

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = np.array(ct.fit_transform(X))
X

但它也不起作用
有没有人能给我一些提示或lonk好教程?我发现了很多,但他们似乎不符合我的情况

zf9nrax1

zf9nrax11#

您几乎已经使用了ColumnTransformerOneHotEncoder,请参考此处的示例(https://www.geeksforgeeks.org/prediction-using-columntransformer-onehotencoder-and-pipeline/)以及它们各自的文档来使其工作。另外,当您说它不工作时,请分享错误是什么。
使用OneHotEncoder表示名义猫特征,使用OrdinalEncoder表示顺序猫特征。
有一个更简单的选择,使用pandas.get_dummies()(但通常只用于笔记本电脑和EDA,而不是生产环境),语法更简单。
您最初用于LabelEncoder的代码行,您也可以以相同的方式应用OneHotEncoder,而不必使用ColumnTransformer。因此,这也可以为您工作。

相关问题