OneHotEncoder 类别参数
OneHotEncoder categories argument
在 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))
问题是,我如何使用类别参数实现与上述代码相同的行为,因为 OneHotEncoder(categories=[[1, 2], [1, 2, 3]], sparse=False)
也会对第一列进行编码,而 OneHotEncoder(categories=[[1, 2, 3]], sparse=False)
会抛出一个错误
好的,所以基本上你想对第二列 [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))
那你就不用指定类别的取值范围了。有关详细信息,请参阅文档。
在 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))
问题是,我如何使用类别参数实现与上述代码相同的行为,因为 OneHotEncoder(categories=[[1, 2], [1, 2, 3]], sparse=False)
也会对第一列进行编码,而 OneHotEncoder(categories=[[1, 2, 3]], sparse=False)
会抛出一个错误
好的,所以基本上你想对第二列 [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))
那你就不用指定类别的取值范围了。有关详细信息,请参阅文档。