Как оценить линейную модель, используя файл PMML и Augustus на Python

Я новичок в Python,PMML и augustus, так что этот вопрос вроде новичка. У меня есть файл PMML, из которого я хочу получать оценки после каждой новой итерации данных. Я должен использовать Python с Августом только для выполнения этого упражнения. Я прочитал различные статьи, некоторые из которых заслуживают упоминания, поскольку они хороши.

( 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)

Я прочитал августовскую документацию, подходящую для оценки, чтобы понять, как она работает, но я не могу решить эту проблему.

Образец файла PMML генерируется с использованием данных автомобилей в R., где "dist" зависит, а "speed" является независимой переменной. Теперь я хочу предсказывать dist каждый раз, когда получаю данные для скорости из уравнения (это dist = -17.5790948905109 + скорость *3.93240875912408) . Я знаю, что это легко сделать в 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>

0 ответов

Вы можете использовать PyPMML для оценки модели PMML в Python, например:

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}
Другие вопросы по тегам