如何避免 sklearn2pmml 转换的虚拟变量陷阱
How to avoid dummy variable trap for sklearn2pmml transformation
在尝试创建 sklearn2pmml 管道时,我使用以下代码进行自定义映射,然后使用 PMMLLabelBinarizer 创建虚拟变量。事情是,我想避免虚拟变量陷阱。有没有办法使用 PMMLPipelines 来做到这一点并避免使用任何自定义 FunctionTransformer 函数(我想最终将管道转换为 PMML 文件)
我找不到使用现成的 PMML 兼容函数来删除我的最后一列的方法。 (DataframeMapper 是一个 sklearn_pandas 函数)。
DataFrameMapper([
('Merchant', [CategoricalDomain(missing_values=[None, np.nan])
, LookupTransformer(map_dict, 'ZZ'), PMMLLabelBinarizer()
])
])
可以使用sklearn.compose.ColumnTransformer
来限制列数;这个想法是指定 ColumnTransformer.remainder = "drop"
.
例如,如果您的管道以生成 5 列矩阵的 DataFrameMapper 开始,但您只想保留前四列:
pipeline = PMMLPipeline([
("mapper", DataFrameMapper[...]),
("slicer", ColumnTransformer([
("keep", "passthrough", [0, 1, 2, 3])
], remainder = "drop"),
("estimator", ...)
])
从最新的 SkLearn2PMML 版本 0.42.0 开始支持 ColumnTransformer
,因此您可能需要先升级到它。
在尝试创建 sklearn2pmml 管道时,我使用以下代码进行自定义映射,然后使用 PMMLLabelBinarizer 创建虚拟变量。事情是,我想避免虚拟变量陷阱。有没有办法使用 PMMLPipelines 来做到这一点并避免使用任何自定义 FunctionTransformer 函数(我想最终将管道转换为 PMML 文件)
我找不到使用现成的 PMML 兼容函数来删除我的最后一列的方法。 (DataframeMapper 是一个 sklearn_pandas 函数)。
DataFrameMapper([
('Merchant', [CategoricalDomain(missing_values=[None, np.nan])
, LookupTransformer(map_dict, 'ZZ'), PMMLLabelBinarizer()
])
])
可以使用sklearn.compose.ColumnTransformer
来限制列数;这个想法是指定 ColumnTransformer.remainder = "drop"
.
例如,如果您的管道以生成 5 列矩阵的 DataFrameMapper 开始,但您只想保留前四列:
pipeline = PMMLPipeline([
("mapper", DataFrameMapper[...]),
("slicer", ColumnTransformer([
("keep", "passthrough", [0, 1, 2, 3])
], remainder = "drop"),
("estimator", ...)
])
从最新的 SkLearn2PMML 版本 0.42.0 开始支持 ColumnTransformer
,因此您可能需要先升级到它。