我有一个包含大约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好教程?我发现了很多,但他们似乎不符合我的情况
1条答案
按热度按时间zf9nrax11#
您几乎已经使用了
ColumnTransformer
和OneHotEncoder
,请参考此处的示例(https://www.geeksforgeeks.org/prediction-using-columntransformer-onehotencoder-and-pipeline/)以及它们各自的文档来使其工作。另外,当您说它不工作时,请分享错误是什么。使用
OneHotEncoder
表示名义猫特征,使用OrdinalEncoder
表示顺序猫特征。有一个更简单的选择,使用
pandas.get_dummies()
(但通常只用于笔记本电脑和EDA,而不是生产环境),语法更简单。您最初用于LabelEncoder的代码行,您也可以以相同的方式应用OneHotEncoder,而不必使用ColumnTransformer。因此,这也可以为您工作。