• 什么是pmml

  1. predictive model markup language  预测模型标记语言
  2. 1997年7月提出
  3. xml格式
  4. 通用性(跨平台)、规范性(规范化模型描述语言)、异构性(xml本身的异构性)、独立性(独立于数据挖掘工具和)、易用性(编辑xml文档)
  • fit / transform / fit_transform的区别

  1. fit:从数据中生成参数
  2. tranform:根据fit生成的参数,应用到数据集中,并转换
  3. fit_transform:fit 和 transform的结合
  4. 不能直接对测试数据集按公式进行归一化,而是要使用训练数据集的均值和方差对测试数据集归一化,见下图

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

  1. 顾名思义,管道,就是把各种transfrom的操作 加上 estimator 有序的组合在一起
  2. 最后一个必须为 estimator
  3. 作用: 对于一个模型来说,如果要比对不同参数之间的区别,那么就比较方便简化很多代码,比如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)

  1. steps:是一个列表,列表的元素为tuple,tuple的第一个值是tranform的自定义的别名,第二个值是tranform的名字,例如 Pipeline([('anova', anova_filter), ('svc', clf)]
  2. fit:基于前面的transform后的数据集,用最后一个estimator在该数据集上做fit(拟合)
  3. fit_predict:基于前面的transform后的数据集,用最后一个estimator在该数据集上做fit 和 predict ;比如在训练集上,那么就得到训练集上的预测结果
  4. fit_transform: 基于前面的transform后的数据集,用最后一个estimator在该数据集上做fit 和 transform
  5. get_params: 获取estimator的参数
  6. predict:基于transform后的数据集,做预测
  7. predict_log_proba:基于transform后的数据集,estimator估计结果的对数概率值
  8. predict_proba:基于transform后的数据集,estimator估计结果的概率值
  9. score:基于transform后的数据集,estimator估计结果的得分
  10. score_samples:部分样本的得分
  11. set_params:对estimator设置参数
  12. 一个栗子
# 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文件相关推荐

  1. python数据生成pdf,Python生成pdf文件的方法

    摘要:这篇Python开发技术栏目下的"Python生成pdf文件的方法",介绍的技术点是"python生成pdf文件.python生成pdf.生成pdf文件.Pytho ...

  2. Python 生成 GIF 文件

    Python 生成 GIF 文件 使用 Python 合成 gif 动态图,程序如下: 原图片需具有相同大小 import imageio import cv2 import osdef compre ...

  3. python生成迁移文件

    ubuntu 20.04b版本,python生成迁移文件时,即python manage.py makemigrations命令 提示"No changes detected",分 ...

  4. Python 生成大量文件及大文件

    Python 生成大量文件及大文件 很多时候测试需要大量的文件和很大的文件,这些手动操作是非常麻烦的,现在来看看使用python自动生成 一次生成大量小文件(速度很慢) import os impor ...

  5. Python生成exe文件的方法

    python生成exe文件的方法: 一.安装 pyinstaller pip install pyinstaller 二.使用 pyinstaller 命令 # 打包成exe,并设置图标 pyinst ...

  6. python生成exe文件运行闪退解决方法

    ** python生成exe文件运行闪退解决方法: ** 使用pyinstaller生成.exe文件: pyinstaller -F filename.py 用python写了一个程序,在python ...

  7. python生成json文件

    @python生成json文件 python生成json文件 import json control={"bw":100,"delay": "10ms ...

  8. python生成pyc文件可以互用吗_Python生成pyc文件

    Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...

  9. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

最新文章

  1. CCNP ONT LAB之PQ WFQ
  2. 【转】Asp.net控件开发学习笔记整理篇 - Asp.net客户端状态管理
  3. 关于标签系统的又一点想法。
  4. REALTEK 2.5G PCIE网卡 RTL8125BG-CG支持PXE免驱简介
  5. RGBD论文阅读笔记
  6. linux如何解除密码,如何在Linux下解除PDF文件的密码?
  7. 关于apache的虚拟主机配置
  8. c#虹软2.0免费人脸识别 实例
  9. 装机软件搜狗拼音输入法v11.5.0.5352去广告精简优化版
  10. win与安卓同步剪切板 快传照片
  11. JAVA Swing界面美化 -付费界面库
  12. sql update
  13. 混沌算法 matlab,混沌算法优化BAS算法
  14. 春节期间,“熊小孩”闯祸要赔偿怎么办?
  15. wpsa4排版_如何用WPS快速排版
  16. 关于iOS中UITableView下拉距离短刷新没事,下拉距离长就会崩溃的问题解决方案
  17. 学系统集成项目管理工程师(中项)系列15_质量管理
  18. 怎样去掉word2007中的回车符?
  19. 项目经理如何面对困境
  20. 绝对不变性原理、内模原理

热门文章

  1. MySQL索引实现原理分析
  2. suseLinux下安装oracle12c
  3. 新冠疫情严重,居家远程办公
  4. Ios 13.1.1值得更新吗?网友体验反馈汇总,续航及发热有所改善
  5. JavaScript深拷贝与浅拷贝
  6. 阿里巴巴集团《首届中国农民丰收节电商数据报告》发布
  7. 5月14日第壹简报,星期六,农历四月十四
  8. 京东构建需求响应式亿级商品详情页技术分析
  9. 登录页面添加回车和单击登录事件 jQuery.ajax中的 beforeSend:function () 回调函数【日常记录】
  10. 小马哥---高仿三星W2017 主板Y966 6735芯片 刷机机型外观图 多图赏析鉴别