gpt4 book ai didi

python - 如何使用 OneHotEncoder categorical_features

转载 作者:行者123 更新时间:2023-12-01 04:00:20 27 4
gpt4 key购买 nike

我在使用 OneHotEncoder 仅编码分类列并忽略连续列时遇到问题。无论我在 categorical_features 中指定什么,编码器都会对所有列进行编码。例如:

enc = preprocessing.OneHotEncoder()
enc.fit([[0, 40, 3], [1, 50, 0], [0, 45, 1], [1, 30, 2]])
OneHotEncoder(categorical_features=[0,2],
handle_unknown='error', n_values='auto', sparse=True)
print enc.n_values_
print enc.feature_indices_
enc.transform([[0, 45, 3]]).toarray()

我只想对第 1 列和第 3 列进行编码,将中间列(值 40、50、45、30)保留为连续值。所以我指定categorical_features=[0,2],但无论我做什么,这段代码的输出仍然是:

[ 2 51  4]
[ 0 2 53 57]
Out[129]:
array([[ 1., 0., 0., 0., 1., 0., 0., 0., 0., 1.]])

最佳答案

为什么要两次调用 OneHotEncoder 构造函数? enc 已由默认构造函数创建,因此对于 enc 你有 categorical_features='all' (所有特征都是分类的)。据我了解,您需要这样的东西:

enc = OneHotEncoder(categorical_features=[0,2],
handle_unknown='error', n_values='auto', sparse=True)
enc.fit([[0, 40, 3], [1, 50, 0], [0, 45, 1], [1, 30, 2]])
print(enc.n_values_)
print(enc.feature_indices_)
enc.transform([[0, 45, 3]]).toarray()

你将会拥有

[2 4]
[0 2 6]
Out[23]: array([[ 1., 0., 0., 0., 0., 1., 45.]])

关于python - 如何使用 OneHotEncoder categorical_features,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667539/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com