编写此代码后:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
错误是
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-99-55872220c4e4> in <module>()
5 X_train = scaler.fit_transform(X_train)
6
----> 7 X_test = scaler.transform(X_test)
/usr/local/lib/python3.6/dist-packages/sklearn/preprocessing/data.py in transform(self, X)
387 force_all_finite="allow-nan")
388
--> 389 X *= self.scale_
390 X += self.min_
391 return X
ValueError: operands could not be broadcast together with shapes (74,58) (66,) (74,58)
救命啊,求你了
发生此错误的原因是^{} 希望
X_test
具有与其训练数据相同数量的特征维度,在您的示例中:66。你知道吗更正式地说,它必须持有
X_train.shape[1]==X_test.shape[1]
。这是sklearn
提供的大多数(如果不是全部)类型的估计量(变换器、分类器、回归器)的常见假设。换句话说,对于训练和测试数据,特征空间的配置要求是相同的。你知道吗要解决您的问题,您需要修改创建} 。你知道吗
X_train
和X_test
的方式。在sklearn
数据矩阵中,行表示样本,列表示特征或预测值。当将完整的数据集X_all
拆分为X_train
和X_test
时,通常将行拆分为两个不同的子集,同时保持特征空间的维数(即列数)不变。实现这一点的一种方法是使用^{如果您在机器学习或统计的上下文中工作,您可能希望在交叉验证方案中嵌入数据分割。
sklearn
根据您正在处理的问题类型,提供了几种这样的验证方案。有关一些示例,请参见this tutorial。你知道吗相关问题 更多 >
编程相关推荐