使用OneHotEncoder进行机器学习时出现“ ValueError:无法将字符串转换为浮点型”

时间:2019-04-09 20:23:32

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

我正在使用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:无法将字符串转换为float:'Diesel'”。 我不知道我要去哪里错了。请帮忙。谢谢!

2 个答案:

答案 0 :(得分:3)

categorical_features已过时,而是直接转换您的分类特征

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

答案 1 :(得分:0)

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

“因此,您要做的是对X中的所有分类列进行LabelEncode,然后将一个热编码器应用于所需的列”