测试分类变量使用sk-learn

时间:2016-03-03 21:21:28

标签: scikit-learn

我正在尝试使用sci-kit learn生成并测试分类变量的模型。我感兴趣的是在插入数据之后和随机森林之前,使用one-hot encoder函数在sklearn管道中对这些分类变量进行编码。

estimator = Pipeline([
                    ("imputer", Imputer(missing_values='NaN', strategy="median",axis=0)),
                    ("dummy", OneHotEncoder(categorical_features=np.where(mask), handle_unknown = 'ignore')),
                  ("forest", RF())])

培训工作正常,但当我尝试在新数据上测试生成的模型时遇到了麻烦。此问题可能存在的分类变量不受限制,并且并非所有可能的分类变量都显示在训练数据集中。因此,可能存在包含模型从未见过的分类变量的测试数据,由于尺寸不匹配导致预测过程中的崩溃。

作为一个具体的例子,假设我正在训练的一个功能是fruit_name。该模型培养了许多各种水果的例子,包括香蕉,苹果和橙子。 fruit_name在管道中是单热编码的。但是,假设我的测试数据包含模型以前从未见过的fruit_name,例如kiwi。然后,测试数据将有一个额外的列到训练数据。或者,说测试数据实际上不包含香蕉,苹果或橙子。然后它将有更少的列到训练数据。无论哪种方式,模型测试都会崩溃。

如何使用sklearn管道处理分类变量的此问题?

0 个答案:

没有答案