如何修复 One hot encoder 的类型错误

How can I fix type error for One hot encoder

我的问题是我需要将一些分类列组更改为数字以供机器学习使用。 我不想使用 LabelEncoding,因为我听说它不如 OnehotEncoder 高效。

所以我使用了这个代码

X = df.drop("SalePrice", axis=1)
y = df['SalePrice']
one_hot = OneHotEncoder()
transformer = ColumnTransformer([("one_hot", one_hot,categorical_features)], remainder="passthrough")
transformed_X = transformer.fit_transform(df)

其中分类特征是我想在

上使用 onehotencoder 的列的列表

但是我得到一个多行错误作为输出,整体问题如下:

TypeError: Encoders require their input to be uniformly strings or numbers. Got ['float', 'str']

有人遇到了类似的问题,被要求清理他的数据以删除 nan 值,我已经这样做了,但没有改变。我还被要求将我的列的数据类型更改为字符串,我写了一个循环来这样做:

这个错误很严重 self-explainatory:您不能在您的列S 中包含 strfloat 来使用编码器。

Where the categorical features are the list of columns i want to use the onehotencoder on

确保所有列也共享相同的类型。

您可以尝试这样做以强制所有内容成为字符串

for e in categorical_features:
    df[e]=df[e].astype(str)

或者如果所有内容 'should' 都是浮动的,那么您的数据可能还有其他问题。在这种情况下使用 isnumeric