【发布时间】:2022-01-16 12:47:28
【问题描述】:
我正在做一个房价回归模型,我从 Kaggle 获得了 data,当我尝试将分类变量转换为虚拟变量时,我得到了一些不寻常的训练数据,我得到了 (1460, 270) 的形状
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1,4,5,6,7,8,9,10,11,12,13,14,
19,20,21,22,23,25,26,27,28,29,30,31,
33,37,38,39,40,51,53,55,57,60,61,62,72,73
])], remainder='passthrough',sparse_threshold=0)
X = np.array(ct.fit_transform(X))
X.shape
(1460, 270)
当我对测试数据做同样的事情时,我得到了(1459, 254)的形状
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1,4,5,6,7,8,9,10,11,12,13,14,
19,20,21,22,23,25,26,27,28,29,30,31,
33,37,38,39,40,51,53,55,57,60,61,62,72,73
])], remainder='passthrough',sparse_threshold=0)
X_actual = np.array(ct.fit_transform(X_actual))
X_actual.shape
(1459, 254)
为什么在为训练数据和测试数据转换相同的分类变量后形状不同。
请注意,在转换分类变量之前,两个数据具有相同的形状是没有问题的;这个问题只发生在我为两个数据集转换相同的分类变量时,我得到了不同的形状。
我做了一个解决方案,但我不太喜欢它,我将X_actual.shape调整为(1459,270),算法运行良好,但我认为它对算法质量的影响太大。而且,如果在转换两个不同数据集的分类变量时是正常的,我怎样才能使两个数据集具有相同的维度?
【问题讨论】:
-
您能否正确格式化代码,以便我们可以使用更多信息?
-
欢迎来到 SO;请相应地format*你的代码sn-ps
标签: python machine-learning scikit-learn encoding