执行代码时:(摘自《使用Scikit Learn、Keras和TensorFlow进行机器学习:构建智能系统的概念、工具和技术》第69页Aurelien Geron的书"(
housing_cat_encoded = ordinal_encoder.fit_transform(housing_cat)
housing_cat_encoded[:10]
我得到错误:-
ValueError: Expected 2D array, got 1D array instead:
array=['<1H OCEAN' '<1H OCEAN' 'NEAR OCEAN' ... 'INLAND' '<1H OCEAN' 'NEAR BAY'].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
我该如何修复它?
在这种情况下,错误描述了问题和解决方法。函数.fit_transform()
需要一个2D数组,而不是1D数组。实现这一点的一种方法是使用.reshape()
。由于我们传递的是单列(特性(,因此我们应该使用-1,1
。
housing_cat_encoded = ordinal_encoder.fit_transform(housing_cat.reshape(-1,1))
如果housing_cat
是熊猫系列,那么您可能必须使用:
housing_cat_encoded = ordinal_encoder.fit_transform(housing_cat.values.reshape(-1,1))