【问题标题】:sklearn - ValueError: could not convert string to float: 'yes'sklearn - ValueError:无法将字符串转换为浮点数:'是'
【发布时间】:2019-02-08 15:52:38
【问题描述】:

我有一个数据集,其中包含以下分类数据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-learning scikit-learn


【解决方案1】:

取自sklearns OneHotEncoder documentation强调我的):

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

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

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

您需要先factorize 您的数据,这意味着您将字符串转换为分类数字(整数)。然后就可以进行一次热编码了。

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 2018-09-20
    • 2019-02-06
    • 2020-08-26
    • 2020-05-05
    • 2020-01-22
    • 2019-04-27
    • 2018-04-03
    • 1970-01-01
    相关资源
    最近更新 更多