在生产中部署预测模型似乎没有太多选择,这在大数据爆炸式增长的情况下令人惊讶.
据我所知,开源PMML可用于将模型导出为XML规范.然后,这可以用于数据库内评分/预测.但是,为了完成这项工作,您需要使用Zementis的PMML插件,这意味着该解决方案不是真正的开源.是否有更简单的开放方式将PMML映射到SQL进行评分?
另一种选择是使用JSON而不是XML来输出模型预测.但在这种情况下,R模型会在哪里?我假设它总是需要映射到SQL ...除非R模型可以与数据位于同一服务器上,然后使用R脚本运行该传入数据?
还有其他选择吗?
作为机器学习部署项目的一部分,我构建了一个概念验证,我使用R glm
函数和python 为二进制分类任务创建了两个简单的逻辑回归模型scikit-learn
.之后,我PMML
使用pmml
R中的from sklearn2pmml.pipeline import PMMLPipeline
函数和Python中的函数将训练好的简单模型转换为s .
接下来,我在KNIME中打开了一个非常简单的工作流程,看看我是否可以将这两个人PMML
付诸行动.基本上,这种概念验证的目标是测试IT是否可以使用PMML
我简单地交给他们的s来获取新数据.这个练习必须产生概率,就像原始的逻辑回归一样.
在KNIME,我只读4使用行的测试数据CSV Reader
节点,请阅读PMML
使用PMML Reader
节点,最后得到该模型用得分测试数据PMML Predictor
节点.问题是预测不是我想要的最终概率,而是在此之前的一步(系数之和乘以自变量值,我猜是XBETA?).请参阅下图中的工作流程和预测:
要获得最终概率,需要通过sigmoid函数运行这些数字.所以基本上对于第一个记录,而不是2.654,我需要1/(1+exp(-2.654)) = 0.93
.我确信该PMML
文件包含启用KNIME(或任何其他类似平台)为我执行此sigmoid操作所需的信息,但我找不到它.那是我迫切需要帮助的地方.
我查看了回归和一般回归 PMML
文档,我的PMML看起来很好,但我无法弄清楚为什么我无法获得这些概率.
任何帮助都非常感谢!
age credit payfreq gmi
25 550 4 1500
27 650 4 3400
35 600 2 3200
40 680 2 4000
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0"?>
<PMML version="4.2" xmlns="http://www.dmg.org/PMML-4_2" …
Run Code Online (Sandbox Code Playgroud) 我是PMML的新手:Predictive Model Markup Language(www.dmg.org),我想知道是否有某种Java支持(开源/专业)用于创建/解析PMML文件.
最初,我只考虑从Java环境以编程方式创建/解析PMML文件的可能性.
我一直在"谷歌搜索",我发现了几种可能性:
开源:
来自Java.
专业的.
DIY
我感谢您的所有意见.
提前致谢
奥斯卡
我有一个PMML文件,我试图在R中导入/读取它,根据它进行一些分析.虽然我发现了一个与PMML相关的软件包,但我找不到合适的函数来读取模型.有一种简单的方法可以将这种类型的文件读入R吗?
谢谢,
我正在使用Maven,我在编译和构建项目时遇到错误.这是评估一些pmml文件的jpmml项目.现在我收到了这个错误:
规则0:org.apache.maven.plugins.enforcer.RequireMavenVersion失败并显示消息:Detected Maven Version:3.0.5不在允许的范围内3.2.
检查链接以查看图像:https: //www.dropbox.com/s/3r9d8g8l4r1zctp/maven_error.png?dl = 0
请帮忙!我对Java和Maven没有太多经验.
我构建了一个scikit-learn模型,我想在每日python cron作业中重用(注意:没有涉及其他平台 - 没有R,没有Java和c).
我腌制它(实际上,我腌制了我自己的对象,其中一个字段是a GradientBoostingClassifier
),我在cron作业中取消它.到目前为止一直这么好(并且已经在Scikit-Learn中将保存分类器讨论到磁盘并在Scikit-Learn中进行模型持久性讨论了吗?).
但是,我升级了sklearn
,现在我收到了这些警告:
.../.local/lib/python2.7/site-packages/sklearn/base.py:315:
UserWarning: Trying to unpickle estimator DecisionTreeRegressor from version 0.18.1 when using version 0.18.2. This might lead to breaking code or invalid results. Use at your own risk.
UserWarning)
.../.local/lib/python2.7/site-packages/sklearn/base.py:315:
UserWarning: Trying to unpickle estimator PriorProbabilityEstimator from version 0.18.1 when using version 0.18.2. This might lead to breaking code or invalid results. Use at your own …
Run Code Online (Sandbox Code Playgroud) 是否有标准(或可用)方法在R中导出时间序列模型?PMML可以工作,但当II尝试使用pmml库时,可能不正确,我收到一个错误:
例如,我的代码看起来类似于:
require(fpp)
library(forecast)
library(pmml)
data <- ts(livestock, start = 1970, end = 2000,frequency=3)
model <- ses(data , h=10 )
export <- pmml(model)
Run Code Online (Sandbox Code Playgroud)
而我得到的错误是:
Error in UseMethod("pmml") : no applicable method for 'pmml' applied to an object of class "forecast"
Run Code Online (Sandbox Code Playgroud) 我使用r2pmml将R模型转换为PMML.
我现在应该在机器的C++计算模块中使用这个模型,但我有点迷失(我之前从未使用过C++).我不能使用Java PMML评估引擎(如本答案中所提出的),所以我想我必须找到一个" 基于C++的PMML评估引擎 ".
PMMLlib似乎用于从C++创建PMML文件,而不是用来读取它们.我找到了许多用于C++的XML解析器(pugixml,tinyxml2,XmlLite),但我不知道是否有任何这些可用于读取PMML.
如果他们能够和我正确理解工作方式,他们将创建一个包含我的模型的文档对象模型,我将能够在XPath中使用这个对象吗?
否则,我想知道如何用C++解析PMML文件以及如何使用生成的对象.
我知道这是可能的模型导出为PMML
用Spark-MLlib
,但怎么样Spark-ML
?
是否有可能转换LinearRegressionModel
从org.apache.spark.ml.regression
到LinearRegressionModel
从org.apache.spark.mllib.regression
到能够调用的toPMML()
方法?
pmml ×10
r ×5
java ×3
python ×3
scikit-learn ×2
xml ×2
apache-spark ×1
c++ ×1
data-mining ×1
data-science ×1
deployment ×1
file ×1
import ×1
knime ×1
maven ×1
prediction ×1
python-2.7 ×1