gpt4 book ai didi

machine-learning - NaN 在 scikit-learn 的 OneHotEncoder 中给出 ValueError

转载 作者:行者123 更新时间:2023-11-30 09:25:08 27 4
gpt4 key购买 nike

这是我的代码

import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder

train = pd.DataFrame({
'users':['John Johnson','John Smith','Mary Williams']
})
test = pd.DataFrame({
'users':[None,np.nan,'John Smith','Mary Williams']
})

ohe = OneHotEncoder(sparse=False,handle_unknown='ignore')
ohe.fit(train)
train_transformed = ohe.fit_transform(train)

test_transformed = ohe.transform(test)
print(test_transformed)

我希望 OneHotEncoder 能够处理测试数据集中的 np.nan,因为

handle_unknown='ignore'

但它给出了 ValueError。但它能够处理 None 值。为什么它失败了?我该如何解决它(除了 Imputer 之外)?

来自文档 ( https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html )看来这就是handle_unknown 的用途。

最佳答案

当测试集在训练集中具有看不见的分类值时,此选项提供了解决方案。如果您将“steve stevenson”放入测试集中,它不会返回错误,它会返回全零的列。

    train = pd.DataFrame({
'users':['John Johnson','John Smith','Mary Williams']
})
test = pd.DataFrame({
'users':['John Smith','Mary Williams', 'Steve Stevenson']
})

ohe = OneHotEncoder(sparse=False, handle_unknown = 'ignore')
ohe.fit(train)

test_transformed = ohe.transform(test)
print(test_transformed)

“None”问题的解决方案是将“None”值替换为某些类别,例如“未知”。

希望这有帮助

关于machine-learning - NaN 在 scikit-learn 的 OneHotEncoder 中给出 ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58222008/

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