成功解决StandardScaler().fit()报错ValueError: Expected 2D array, got 1D array instead

错误信息

在训练一个Xgboost模型时,使用StandardScaler().fit()对数据进行处理,代码如下:

scaler.fit(list(train[col])+list(test[col]))

然后报出如下错误:
ValueError: Expected 2D array, got 1D array instead:
array=[1.000e+00 2.000e+00 3.000e+00 … 1.113e+03 1.114e+03 1.115e+03].
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.

错误原因

这是因为sklearn版本更新的原因,在新版本的sklearn中,要求的数据是二维的,而list是一维的数据,所以应该进行reshape。

解决方法

将代码稍做修改即可解决

        scaler.fit(np.array(list(train[col])+list(test[col])).reshape(-1,1))

你可能感兴趣的:(python,bug,机器学习,人工智能)