【问题标题】:scikit-learn column transformer- columns with different discrete valuesscikit-learn column transformer- 具有不同离散值的列
【发布时间】:2022-11-28 21:26:17
【问题描述】:

我有大约 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,但我不确定这是否是个好主意,我更改了示例代码以从列中获取数据,但出现信息错误:输入只能是字典

我也试过类似的东西:

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

但它也不起作用

有人可以给我一些提示或链接以获得好的教程吗?找了很多但是好像都不符合我的情况

【问题讨论】:

    标签: python pandas machine-learning scikit-learn column-tansformer


    【解决方案1】:

    ColumnTransformerOneHotEncoder 就差不多了,请参阅此处的示例以及它们各自的文档以使其正常工作。

    https://www.geeksforgeeks.org/prediction-using-columntransformer-onehotencoder-and-pipeline/

    使用 OneHotEncoder 表示猫的名义特征,使用 OrdinalEncoder 表示有序的猫特征。

    使用 pandas.get_dummies() 有一个更简单的选择(但通常只用于笔记本和 EDA,而不是用于生产环境),它在语法上更简单。

    您最初用于 LabelEncoder 的代码行,您可以以相同的方式应用 OneHotEncoder,而不必使用 ColumnTransformer。所以这对你也有用。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 2021-07-26
      • 2018-11-21
      • 2017-05-02
      • 2018-07-30
      • 1970-01-01
      • 2017-03-09
      • 2017-07-31
      相关资源
      最近更新 更多