这里的df形状为(190,2),其中第一列是x,是分类值,第二列是整数。
X = df.iloc[:,0].valuesy = df.iloc[:,-1].values# Encoding categorical datafrom sklearn.preprocessing import LabelEncoder, OneHotEncoderlabelencoder = LabelEncoder()X = labelencoder.fit_transform(X)X.reshape(-1,1)onehotencoder = OneHotEncoder(categories = [0])X = onehotencoder.fit_transform(X).toarray()
在这里,我想使用OneHotEncoder转换分类值X来预测y。但是当我运行这段代码时,出现了错误。
ValueError: bad input shape ()
有人可以帮助我解决这个问题吗?谢谢
回答:
目前OneHotEncoder
不需要输入特征是数值的。因此,您可以直接输入分类特征:
onehotencoder = OneHotEncoder()X_oh = onehotencoder.fit_transform(X).toarray()
如果输入是一个1D
数组,像y
通常的情况一样,您需要将数组重塑为2D
数组:
onehotencoder = OneHotEncoder()X_oh = onehotencoder.fit_transform(X.reshape(-1,1)).toarray()
但是请注意以下代码:
X.reshape(-1,1)
并没有做任何事情。这不是一个就地操作。您必须将其重新赋值给一个变量。