• 什么是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. 添加高精度计时器测量处理能力
  2. 知识图谱(知识图谱构建)
  3. table_line
  4. Qt修炼手册9_Ui名字空间及setupUi()原理解读
  5. 剑网三虽然是游戏,但场面堪比电影大片,发布会会带来什么惊喜?
  6. 微分方程在matlab中的实现,Matlab微分方程参数优化的Forcal实现
  7. 每隔10秒执行一次_(立下flag)每日10道前端面试题12 关于BOM十问
  8. 使用mkdir创建同级多目录
  9. Java,使用泛型构建自己的工具包——包装System.out
  10. Java——Map 集合
  11. 性能优化的常见模式及趋势
  12. E+H流量计5P3B15-BBDBAAAFADEA1S1AA1+AK
  13. 【微软雅黑字体的简单介绍】
  14. html给图片添加边框
  15. ubuntu 图形化桌面
  16. 论文翻译之Enriched Feature Guided Refinement Network for Object Detection
  17. ctcpejmu单词_微生物英文单词
  18. SpringMVC 用对象接收 ajax提交form表单
  19. ls -l 字段意思
  20. 中国支付结算体系全貌

热门文章

  1. 为什么微信分享的链接有的会有logo图和描述,有人分享的却没有呢?
  2. VB6-对数值的舍入-四舍五入/四舍六入五留双-及推广
  3. openssh windows10 download 下载与安装
  4. 在windows 上安装 openSSH
  5. 暑期学习 DCGAN 笔记
  6. SOLIDWORKS Toolbox如何设置中文
  7. Mysql SQLyog连接远程数据库
  8. iPhone为什么不推出屏下指纹?
  9. CMU Stanford 课程
  10. 十大运动蓝牙耳机品牌排行榜,排名最靠前的运动耳机推荐