我正在尝试在 Iris 数据集中的目标列(“物种”)上使用一个热编码器。
但我收到以下错误:
ValueError:预期的二维数组,得到的是一维数组:
如果您的数据具有单个特征,则使用 array.reshape(-1, 1) 重塑您的数据,如果它包含单个样本,则使用 array.reshape(1, -1) 。
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
0 1 5.1 3.5 1.4 0.2 Iris-setosa
1 2 4.9 3.0 1.4 0.2 Iris-setosa
2 3 4.7 3.2 1.3 0.2 Iris-setosa
3 4 4.6 3.1 1.5 0.2 Iris-setosa
4 5 5.0 3.6 1.4 0.2 Iris-setosa
我用谷歌搜索了这个问题,我发现大多数 scikit 学习估计器需要一个二维数组而不是一维数组。
同时,我还发现我们可以尝试传递带有索引的数据框来对单列进行编码,但是没有用
onehotencoder = OneHotEncoder(categorical_features=[df.columns.tolist().index('pattern_id')
X = dataset.iloc[:,1:5].values
y = dataset.iloc[:, 5].values
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder= LabelEncoder()
y = labelencoder.fit_transform(y)
onehotencoder = OneHotEncoder(categorical_features=[0])
y = onehotencoder.fit_transform(y)
我正在尝试对单个分类列进行编码并拆分为多个列(编码通常的工作方式)
原文由 ARC 发布,翻译遵循 CC BY-SA 4.0 许可协议
说您需要将数组转换为向量。您可以通过以下方式做到这一点:
您也可以使用
get_dummies
函数( 文档)希望有帮助!