【问题标题】:"ValueError: could not convert string to float" while using OneHotEncoder for machine learning使用 OneHotEncoder 进行机器学习时出现“ValueError:无法将字符串转换为浮点数”
【发布时间】:2019-08-31 05:12:35
【问题描述】:

我正在使用 LabelEncoder 和 OneHotEncoder 来处理我的数据集中的“分类数据”。在我的数据集中,有一列可以有两个值“汽油”或“柴油”,我想对该列进行编码。我正在运行这段代码,它给出了一个错误。

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

dataset = pd.read_csv('ToyotaCorolla.csv')
X = dataset.iloc[:, 1:10].values
y = dataset.iloc[:, 0].values

labelencoder_X = LabelEncoder()
X[:, 3] = labelencoder_X.fit_transform(X[:, 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()

Column[3] 是具有分类值的列。但它显示错误“ValueError:无法将字符串转换为浮点数:'Diesel'”。 我不知道我要去哪里错了。请帮忙。谢谢!

【问题讨论】:

  • 问题与spyder 无关 - 请不要向无关标签发送垃圾邮件(已删除并替换为scikit-learn)。

标签: machine-learning scikit-learn one-hot-encoding


【解决方案1】:

当您的 x 有一列包含字符串格式的类别时,会出现此错误 当我遇到这个错误时 我对 X 中的所有分类列使用标签编码器,就像对第 3 列所做的那样 然后将一个热编码器应用于第 3 列

“所以你要做的就是对 X 中的所有分类列进行 LabelEncode,然后将一个热编码器应用于你想要的列”

【讨论】:

    【解决方案2】:

    categorical_features 已弃用,而是直接转换您的分类特征

    onehotencoder = OneHotEncoder(categories='auto')
    feature = onehotencoder.fit_transform(X[:, 3].reshape(-1, 1))
    

    【讨论】:

      猜你喜欢
      • 2019-11-07
      • 2019-10-14
      • 2019-04-27
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 2020-08-09
      • 2018-10-06
      相关资源
      最近更新 更多