Skip to main content
 首页 » 编程设计

python之如何在 Python 上使用 PMML 文件和 Augustus 对线性模型进行评分

2025年05月04日14lvdongjie

我是 python、PMML 和 augustus 的新手,所以这个问题有点像新手。我有一个 PMML 文件,我想在每次新的数据迭代后从中评分。我必须将 Python 与 Augustus 结合使用才能完成本练习。我已经阅读了各种文章,其中一些值得一提,因为它们很好。

( http://augustusdocs.appspot.com/docs/v06/model_abstraction/augustus_and_pmml.html , http://augustus.googlecode.com/svn-history/r191/trunk/augustus/modellib/regression/producer/Producer.py )

我已阅读与评分相关的 augustus 文档以了解其工作原理,但我无法解决此问题。

示例 PMML 文件是使用 R 中的汽车数据生成的,其中“dist”是相关变量,“speed”是自变量。现在,每当我从方程式(dist = -17.5790948905109 + speed*3.93240875912408)接收速度数据时,我都想预测 dist 。我知道它可以在 R 中使用预测功能轻松完成,但问题是我在后端没有 R,只有 python 和 augustus 可以评分。非常感谢任何帮助,并提前致谢。

示例 PMML 文件:

     <?xml version="1.0"?> 
     <PMML version="4.1" xmlns="http://www.dmg.org/PMML-4_1"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.dmg.org/PMML-4_1 http://www.dmg.org/v4-1/pmml-4-1.xsd"> 
         <Header copyright="Copyright (c) 2013 user" description="Linear Regression Model"> 
          <Extension name="user" value="user" extender="Rattle/PMML"/> 
          <Application name="Rattle/PMML" version="1.4"/> 
          <Timestamp>2013-11-07 09:24:06</Timestamp> 
         </Header> 
        <DataDictionary numberOfFields="2"> 
         <DataField name="dist" optype="continuous" dataType="double"/> 
         <DataField name="speed" optype="continuous" dataType="double"/> 
        </DataDictionary> 
        <RegressionModel modelName="Linear_Regression_Model" functionName="regression"   algorithmName="least squares"> 
         <MiningSchema> 
          <MiningField name="dist" usageType="predicted"/> 
          <MiningField name="speed" usageType="active"/> 
         </MiningSchema> 
         <Output> 
          <OutputField name="Predicted_dist" feature="predictedValue"/> 
         </Output> 
         <RegressionTable intercept="-17.5790948905109"> 
          <NumericPredictor name="speed" exponent="1" coefficient="3.93240875912408"/> 
         </RegressionTable> 
        </RegressionModel> 
     </PMML> 

请您参考如下方法:

你可以使用 PyPMML在 Python 中对 PMML 模型进行评分,例如:

from pypmml import Model 
 
model = Model.fromString('''<?xml version="1.0"?> 
     <PMML version="4.1" xmlns="http://www.dmg.org/PMML-4_1"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.dmg.org/PMML-4_1 http://www.dmg.org/v4-1/pmml-4-1.xsd"> 
         <Header copyright="Copyright (c) 2013 user" description="Linear Regression Model"> 
          <Extension name="user" value="user" extender="Rattle/PMML"/> 
          <Application name="Rattle/PMML" version="1.4"/> 
          <Timestamp>2013-11-07 09:24:06</Timestamp> 
         </Header> 
        <DataDictionary numberOfFields="2"> 
         <DataField name="dist" optype="continuous" dataType="double"/> 
         <DataField name="speed" optype="continuous" dataType="double"/> 
        </DataDictionary> 
        <RegressionModel modelName="Linear_Regression_Model" functionName="regression"   algorithmName="least squares"> 
         <MiningSchema> 
          <MiningField name="dist" usageType="predicted"/> 
          <MiningField name="speed" usageType="active"/> 
         </MiningSchema> 
         <Output> 
          <OutputField name="Predicted_dist" feature="predictedValue"/> 
         </Output> 
         <RegressionTable intercept="-17.5790948905109"> 
          <NumericPredictor name="speed" exponent="1" coefficient="3.93240875912408"/> 
         </RegressionTable> 
        </RegressionModel> 
     </PMML>''') 
result = model.predict({'speed': 1.0}) 

结果是带有 Predicted_dist 的字典:

{'Predicted_dist': -13.646686131386819}