首页 > 解决方案 > 交叉验证和测试数据的拟合和转换错误

问题描述

我需要这里的代码帮助。我正在尝试拟合和转换训练数据,然后转换交叉验证和测试数据。但是当我这样做时,我得到的错误是 - ValueError: X has 24155 features,但 Normalizer 期望 49041 features 作为输入。

有人可以帮我解决这个问题。

我的代码片段-

from sklearn.preprocessing import Normalizer
normalizer = Normalizer()

X_train_price_norm = normalizer.fit_transform(X_train['price'].values.reshape(1,-1))
X_cv_price_norm = normalizer.transform(X_cv['price'].values.reshape(1,-1))
X_test_price_norm = normalizer.transform(X_test['price'].values.reshape(1,-1))


print("After vectorizations")
print(X_train_price_norm.shape, y_train.shape)
print(X_cv_price_norm.shape, y_cv.shape)
print(X_test_price_norm.shape, y_test.shape)
print("="*100)

标签: pythonscikit-learndata-preprocessing

解决方案


变换函数需要一个二维数组(samples, features)

该错误表明X_train['price']and x_cv['price']orx_test['price']的第二维不同。

正如代码所反映的,您有 1 个 feature (price)和许多示例。所以,正如上面的解释(样本,特征),你的输入形状应该是这样(n_samples,1)的,因为你有一个特征。现在,考虑将 reshape 更改为(-1,1)而不是(1,-1).

X_train_price_norm = normalizer.fit_transform(X_train['price'].values.reshape(-1,1))
X_cv_price_norm = normalizer.transform(X_cv['price'].values.reshape(-1,1))
X_test_price_norm = normalizer.transform(X_test['price'].values.reshape(-1,1))

推荐阅读