我正在研究来自 Kaggle 的数据集(房价预测)。我已经对数据进行了一些预处理(缺失值、类别聚合、选择序数与单热)。我正在尝试实现一个管道来简化代码。管道由具有两个组件的 ColumnTransformer 组成:一个组件包含应用于数字和序数特征的标准缩放器;第二个组件有一个用于其余功能集的 one-hot 编码器。我将此转换器传递给 GridSearchCV 对象以调整超参数。在这种情况下,它是 LASSO 模型。所以,我正在尝试调整惩罚项的系数。问题是一些 one-hot 编码的特征与主要在一个类别中的计数高度偏差。当 GridSearchCV 尝试运行交叉验证时,它会引发一个错误,指出在验证模型时发现了未知类别。我认为这是因为在拟合 one-hot 编码器时,训练集不包含带有特定标签的数据点,这些标签显示在验证集中。处理此问题的一种明显方法是安装一个单热编码器,将其放在一边,然后构建管道并继续执行网格搜索(/验证)步骤。考虑到管道的概念正是为此目的而定义的,这对我来说似乎有点脱节。也许我在这里遗漏了一些东西。是否有更好(/有效)的方法来实现上述目标,而不是将 one-hot 编码器与管道分离?t 包含带有特定标签的数据点,这些标签显示在验证集中。处理此问题的一种明显方法是安装一个单热编码器,将其放在一边,然后构建管道并继续执行网格搜索(/验证)步骤。考虑到管道的概念正是为此目的而定义的,这对我来说似乎有点脱节。也许我在这里遗漏了一些东西。是否有更好(/有效)的方法来实现上述目标,而不是将 one-hot 编码器与管道分离?t 包含带有特定标签的数据点,这些标签显示在验证集中。处理此问题的一种明显方法是安装一个单热编码器,将其放在一边,然后构建管道并继续执行网格搜索(/验证)步骤。考虑到管道的概念正是为此目的而定义的,这对我来说似乎有点脱节。也许我在这里遗漏了一些东西。是否有更好(/有效)的方法来实现上述目标,而不是将 one-hot 编码器与管道分离?
作为参考,上述直方图的数据,
- 类别计数
- CompShg 1434
- 焦油&Grv 11
- 焦油&Grv 11
- WdShngl 6
- WdShake 5
- 卷 1
- ClyTile 1
- 金属 1
- 膜 1
