【发布时间】:2021-10-19 02:30:26
【问题描述】:
我有一个带有一些列的 pandas 数据框,其中 10 个是分类的,我想使用 LabelEncoder 对它们进行标记编码。但是,我想在训练和测试集上使用相同的转换。我正在这样做:
categorical_columns = train.columns[:10].tolist() # List of categorical columns: [c0, c1, c2 ... c9]
le = LabelEncoder()
le.fit(categorical_columns)
train[categorical_columns] = le.transform(train[categorical_columns])
test[categorical_columns] = le.transform(test[categorical_columns])
但是这段代码给了我错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-42-a43d4dd9a428> in <module>
4 le.fit(categorical_columns)
5
----> 6 train[categorical_columns] = le.transform(train[categorical_columns])
7 test[categorical_columns] = le.transform(test[categorical_columns])
/opt/conda/lib/python3.7/site-packages/sklearn/preprocessing/_label.py in transform(self, y)
270 """
271 check_is_fitted(self)
--> 272 y = column_or_1d(y, warn=True)
273 # transform of empty array is empty array
274 if _num_samples(y) == 0:
/opt/conda/lib/python3.7/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs)
70 FutureWarning)
71 kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 72 return f(**kwargs)
73 return inner_f
74
/opt/conda/lib/python3.7/site-packages/sklearn/utils/validation.py in column_or_1d(y, warn)
845 raise ValueError(
846 "y should be a 1d array, "
--> 847 "got an array of shape {} instead.".format(shape))
848
849
ValueError: y should be a 1d array, got an array of shape (300000, 10) instead.
我应该如何正确地做?
【问题讨论】:
标签: pandas machine-learning scikit-learn