OneHotEncoder类别参数

问题描述 投票:1回答:1

使用sklearn 0.22时,categorical_features参数将被删除,因此以下代码不再可执行:

import numpy as np
from sklearn.preprocessing import OneHotEncoder

X = np.array([[1, 1], [2, 2], [1, 3]])
encoder = OneHotEncoder(categorical_features=[1], sparse=False)

print(encoder.fit_transform(X))

问题是,我如何使用Categories参数实现与上述代码相同的行为,因为OneHotEncoder(categories=[[1, 2], [1, 2, 3]], sparse=False)还将对第一列进行编码,并且OneHotEncoder(categories=[[1, 2, 3]], sparse=False)会引发错误

python machine-learning scikit-learn preprocessor one-hot-encoding
1个回答
0
投票

[确定,所以基本上您想对第二列[1,2,3]进行一次热编码,并保持第一列[1,2,1]为直通。在较新的sklearn版本中,您可以使用ColumnTransformer来组合不同的预处理过程,如下所示:

import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

X = np.array([[1, 1], [2, 2], [1, 3]])
encoder = ColumnTransformer(
    [('number1', OneHotEncoder(dtype='int'), [1])],
    remainder="passthrough"
)

print(encoder.fit_transform(X))

然后,您不必指定类别的值范围。有关更多详细信息,请参阅文档。

ColumnTransformer

© www.soinside.com 2019 - 2024. All rights reserved.