2 回答

TA贡献1824条经验 获得超8个赞
您必须先清空缺失值。handle_unknown='ignore'不涉及 NaN 值,但不涉及新类别ohe。
您可以将 NaN 视为一个不同的类别,如下所示:
train = train.fillna("NaN")
test = test.fillna("NaN")

TA贡献1796条经验 获得超7个赞
我不知道该函数的用途,但运行代码并查看结果告诉我以下信息:
您收到的 ValueError 告诉您,该函数需要数字数据 - 而不是字符串。
另请注意,“handle_unknown”标志并不意味着该函数采用 None 或 nan 值,而是管理如何处理测试数据中不存在于训练数据中的类别(参见下面的示例)。
以下包括未知类别的代码正在运行:
import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder
train = pd.DataFrame({
'users':[1,2,3,4],'users2':[1,2,3,4]
})
test = pd.DataFrame({
'users':[0,1,3,4,10],'users3':[1,2,3,4,5]
})
ohe = OneHotEncoder(sparse=False,handle_unknown='ignore')
ohe.fit(train)
train_transformed = ohe.fit_transform(train)
test_transformed = ohe.transform(test)
print(test_transformed)
希望有帮助。替换缺失数据的工作类似于先前答案所建议的。
添加回答
举报