一、背景
本地Python训练LR模型,做了WOE分箱,需转成PMML文件上线,希望PMML文件既包含数据处理部分又包含模型打分部分。
二、实现过程
思路:通过 DataFrameMappe r创建 mapper --> 通过 PMMLpipeline 创建 pipeline --> sklearn2pmml 转成 PMML
DataFrameMapper 可支持 sklearn 中自带的数据处理函数,自定义函数需要使用 FunctionTransformer 来转换,自定义函数有如下几种方式:
1)数组函数,对整列做变换;
2)ufunc函数,先写针对某一元素的函数,再通过 np.frompyfunc 或 np.vectorize 转成可以作用在整列上的函数;
3)直接在 FunctionTransformer 里面写lambda函数,注意这种方式不支持转成 pickle 文件(sklearn2pmml 中包含转化 pickle 的步骤)。
代码如下:
import numpy as np
from sklearn.linear_model import LogisticRegression
import sklearn2pmml
from sklearn2pmml.pipeline import PMMLPipeline
from sklearn_pandas import DataFrameMapper
from sklearn.preprocessing import FunctionTransformer
from sklearn import preprocessing
#1.自定义函数
#1)数组函数
def func_x2(x):
y =