首页 > 解决方案 > sklearn - ValueError:无法将字符串转换为浮点数:'是'

问题描述

我有一个具有以下分类数据colname的数据集。使用 sklearn 执行 one_hot_encoding 时出现错误。

def ohe_encode(train, test, index):
    Onehot = OneHotEncoder(categorical_features='all', handle_unknown='error')
    x_train_1 = train
    x_test_1 = test
    colname = df.columns[index]
    Onehot.fit(train[colname].astype(str))
    x_trans = Onehot.transform(train[columnns].astype(str))
    new_features = Onehot.transform(test[colname].astype(str))
    return (x_transform, new_features)

屏幕显示出现错误,

ValueError: could not convert string to float: 'yes'

无法得到错误的原因。

提前致谢,

标签: machine-learningscikit-learn

解决方案


取自sklearns OneHotEncoder 文档重点是我的):

使用 one-hot aka one-of-K 方案对分类整数特征进行编码。

这个转换器的输入应该是一个整数矩阵,表示分类(离散)特征所采用的值。

但是,您输入原始分类值,例如。像«yes»和«no»这样的字符串。因此,您会得到 ValueError。

您需要先对数据进行因式分解,这意味着您将字符串转换为分类数字(整数)。然后你可以做一个热编码。


推荐阅读