Python生成pmml文件
什么是pmml
- predictive model markup language 预测模型标记语言
- 1997年7月提出
- xml格式
- 通用性(跨平台)、规范性(规范化模型描述语言)、异构性(xml本身的异构性)、独立性(独立于数据挖掘工具和)、易用性(编辑xml文档)
fit / transform / fit_transform的区别
- fit:从数据中生成参数
- tranform:根据fit生成的参数,应用到数据集中,并转换
- fit_transform:fit 和 transform的结合
- 不能直接对测试数据集按公式进行归一化,而是要使用训练数据集的均值和方差对测试数据集归一化,见下图
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaleriris = load_iris()
X=iris.data
Y=iris.target
xtrain,xtest,ytrain,ytest=train_test_split(X,Y,test_size=0.3)#
ss=StandardScaler()##1 在同一个数据集上,比对直接fit_transform 和 fit+transform 的结果
ss_fit=ss.fit(xtrain) # 先fit
result1=ss_fit.transform(xtrain) #然后transform
result2=ss.fit_transform(xtrain) # 一起fit,transform
print(result1==result2) # 显示相等##2 在一个数据集上fit,在另外一个数据集上transform,比对直接fit_transform 和 fit+transform 的结果
ss_fit=ss.fit(xtrain) # 先fit
result1=ss_fit.transform(xtest) #然后transform
result2=ss.fit_transform(xtest) # 一起fit,transform
print(result1==result2) # 显示不相等
pipline
- 顾名思义,管道,就是把各种transfrom的操作 加上 estimator 有序的组合在一起
- 最后一个必须为 estimator
- 作用: 对于一个模型来说,如果要比对不同参数之间的区别,那么就比较方便简化很多代码,比如stackoverflow里面一个说明例子,按正常的流程,我们是按照如下方式做的
vect = CountVectorizer()tfidf = TfidfTransformer()clf = SGDClassifier()vX = vect.fit_transform(Xtrain)tfidfX = tfidf.fit_transform(vX)predicted = clf.fit_predict(tfidfX)# Now evaluate all steps on test setvX = vect.fit_transform(Xtest)tfidfX = tfidf.fit_transform(vX)predicted = clf.fit_predict(tfidfX)
4.使用了pipline之后,那么我们需要更少的代码,说白了,就是把一些通用的流程给封装好
pipeline = Pipeline([('vect', CountVectorizer()),('tfidf', TfidfTransformer()),('clf', SGDClassifier()),
])
predicted = pipeline.fit(Xtrain).predict(Xtrain)
# Now evaluate all steps on test set
predicted = pipeline.predict(Xtest)
语法说明(https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline)
- steps:是一个列表,列表的元素为tuple,tuple的第一个值是tranform的自定义的别名,第二个值是tranform的名字,例如 Pipeline([('anova', anova_filter), ('svc', clf)]
- fit:基于前面的transform后的数据集,用最后一个estimator在该数据集上做fit(拟合)
- fit_predict:基于前面的transform后的数据集,用最后一个estimator在该数据集上做fit 和 predict ;比如在训练集上,那么就得到训练集上的预测结果
- fit_transform: 基于前面的transform后的数据集,用最后一个estimator在该数据集上做fit 和 transform
- get_params: 获取estimator的参数
- predict:基于transform后的数据集,做预测
- predict_log_proba:基于transform后的数据集,estimator估计结果的对数概率值
- predict_proba:基于transform后的数据集,estimator估计结果的概率值
- score:基于transform后的数据集,estimator估计结果的得分
- score_samples:部分样本的得分
- set_params:对estimator设置参数
- 一个栗子
# SelectKBest + svm 组成piplinefrom sklearn import svm
from sklearn.datasets import make_classification
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression
from sklearn.pipeline import Pipeline
# generate some data to play with
X, y = make_classification(n_informative=5, n_redundant=0, random_state=42)
# ANOVA SVM-C
anova_filter = SelectKBest(f_regression, k=5)
clf = svm.SVC(kernel='linear')
anova_svm = Pipeline(steps=[('anova', anova_filter), ('svc', clf)])
# You can set the parameters using the names issued
# For instance, fit using a k of 10 in the SelectKBest
# and a parameter 'C' of the svm
anova_svm.set_params(anova__k=10, svc__C=.1).fit(X, y)
prediction = anova_svm.predict(X)
print(prediction)
print(anova_svm.score(X,y))
如何生成pmml文件? 通过 nyoka模块 + pipline
生成xgboost的pmml文件
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
import pandas as pd
from xgboost import XGBClassifier
from nyoka import xgboost_to_pmmlseed = 123456iris = datasets.load_iris()
target = 'Species'
features = iris.feature_names
iris_df = pd.DataFrame(iris.data, columns=features)
iris_df[target] = iris.targetX, y = iris_df[features], iris_df[target]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=seed)pipeline = Pipeline([('scaling', StandardScaler()),('xgb', XGBClassifier(n_estimators=5, seed=seed))
])pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
y_pred_proba = pipeline.predict_proba(X_test)xgboost_to_pmml(pipeline, features, target, "/Users/hqh/pycharm/pmml/xgb-iris.pmml")
生成svm的pmml文件
import pandas as pd
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from nyoka import skl_to_pmmliris = datasets.load_iris()
irisd = pd.DataFrame(iris.data,columns=iris.feature_names)
irisd['Species'] = iris.target
features = irisd.columns.drop('Species')
target = 'Species'pipeline_obj = Pipeline([('scaler', StandardScaler()),('svm',SVC())
])
pipeline_obj.set_params(svm__C=.1)
pipeline_obj.fit(irisd[features],irisd[target])
skl_to_pmml(pipeline_obj,features,target,"svc_pmml.pmml")
生成Isolation Forest的pmml文件
from sklearn.ensemble import IsolationForest
import numpy as np
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
from sklearn import datasets
from sklearn.pipeline import Pipeline
from nyoka import skl_to_pmmliris = datasets.load_iris()
irisd = pd.DataFrame(iris.data,columns=iris.feature_names)
irisd['Species'] = iris.target
features = irisd.columns.drop('Species')
target = 'Species'iforest = IsolationForest(n_estimators=40, max_samples=3000, contamination=0, random_state=np.random.RandomState(42))
model_type="iforest"
pipeline = Pipeline([(model_type, iforest)
])
pipeline.fit(iris.data)
skl_to_pmml(pipeline, features, "","forest.pmml")
利用pmml文件进行预测
from pypmml import Modelmodel = Model.fromFile('/Users/hqh/pycharm/pmml/forest.pmml')
result = model.predict({'sepal length (cm)':1,
"sepal width (cm)":1,"petal length (cm)":1,"petal width (cm)":1})
print(result)'''
{'outlier': True, 'anomalyScore': 0.625736561904991}
'''
Python生成pmml文件相关推荐
- python数据生成pdf,Python生成pdf文件的方法
摘要:这篇Python开发技术栏目下的"Python生成pdf文件的方法",介绍的技术点是"python生成pdf文件.python生成pdf.生成pdf文件.Pytho ...
- Python 生成 GIF 文件
Python 生成 GIF 文件 使用 Python 合成 gif 动态图,程序如下: 原图片需具有相同大小 import imageio import cv2 import osdef compre ...
- python生成迁移文件
ubuntu 20.04b版本,python生成迁移文件时,即python manage.py makemigrations命令 提示"No changes detected",分 ...
- Python 生成大量文件及大文件
Python 生成大量文件及大文件 很多时候测试需要大量的文件和很大的文件,这些手动操作是非常麻烦的,现在来看看使用python自动生成 一次生成大量小文件(速度很慢) import os impor ...
- Python生成exe文件的方法
python生成exe文件的方法: 一.安装 pyinstaller pip install pyinstaller 二.使用 pyinstaller 命令 # 打包成exe,并设置图标 pyinst ...
- python生成exe文件运行闪退解决方法
** python生成exe文件运行闪退解决方法: ** 使用pyinstaller生成.exe文件: pyinstaller -F filename.py 用python写了一个程序,在python ...
- python生成json文件
@python生成json文件 python生成json文件 import json control={"bw":100,"delay": "10ms ...
- python生成pyc文件可以互用吗_Python生成pyc文件
Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...
- python生成表格文件_python 读取excel文件生成sql文件实例详解
python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...
最新文章
- CCNP ONT LAB之PQ WFQ
- 【转】Asp.net控件开发学习笔记整理篇 - Asp.net客户端状态管理
- 关于标签系统的又一点想法。
- REALTEK 2.5G PCIE网卡 RTL8125BG-CG支持PXE免驱简介
- RGBD论文阅读笔记
- linux如何解除密码,如何在Linux下解除PDF文件的密码?
- 关于apache的虚拟主机配置
- c#虹软2.0免费人脸识别 实例
- 装机软件搜狗拼音输入法v11.5.0.5352去广告精简优化版
- win与安卓同步剪切板 快传照片
- JAVA Swing界面美化 -付费界面库
- sql update
- 混沌算法 matlab,混沌算法优化BAS算法
- 春节期间,“熊小孩”闯祸要赔偿怎么办?
- wpsa4排版_如何用WPS快速排版
- 关于iOS中UITableView下拉距离短刷新没事,下拉距离长就会崩溃的问题解决方案
- 学系统集成项目管理工程师(中项)系列15_质量管理
- 怎样去掉word2007中的回车符?
- 项目经理如何面对困境
- 绝对不变性原理、内模原理
热门文章
- MySQL索引实现原理分析
- suseLinux下安装oracle12c
- 新冠疫情严重,居家远程办公
- Ios 13.1.1值得更新吗?网友体验反馈汇总,续航及发热有所改善
- JavaScript深拷贝与浅拷贝
- 阿里巴巴集团《首届中国农民丰收节电商数据报告》发布
- 5月14日第壹简报,星期六,农历四月十四
- 京东构建需求响应式亿级商品详情页技术分析
- 登录页面添加回车和单击登录事件 jQuery.ajax中的 beforeSend:function () 回调函数【日常记录】
- 小马哥---高仿三星W2017 主板Y966 6735芯片 刷机机型外观图 多图赏析鉴别