关于python模型的部署,目前有以下几种方式
- flask等python为服务框架,无需跨语言
- xgb4j,lgb4j等Java包,需跨语言,但只支持xgb/lgb
- PMML,跨语言,支持所有sklearn接口的模型
综上所述,当遇到跨语言部署时,PMML是个万金油方式,可以将所有sklearn接口的模型转换为PMML文件,并用JAVA/SCALA相关的包进行解析,然而经过一番调研,网上关于python如何转为PMML的信息却极为有限,故在此总结。
1、DataFrameMapper
- 目前DataFrameMapper支持sklearn.preprocessing中的若干类,如MinMaxScaler()、OneHotEncoder()等
- DataFrameMapper支持自定义函数,可使用FunctionTransformer(),将自定义函数转换为类似MinMaxScaler()类的格式
- DataFrameMapper支持单列或多列级联变换
- sklearn.preprocessing中的函数输入为numpy.ndarray
mapper = DataFrameMapper([
(["Sepal.Length"],FunctionTransformer(np.abs)),
(["Sepal.Width"],[MinMaxScaler(), Imputer()]),
(["Petal.Length"],None),
(["Petal.Width"],OneHotEncoder()),
(['Petal.Length', 'Petal.Width'], [MinMaxScaler(),StandardScaler