2016-08-25 5 views
0

私のpmmlに派生フィールドがあります。それらをoutputfieldsとして使用したいと思います。ですから、私はderivedfieldからoutputfieldを参照したいと思います。しかし、sasアプリケーションはエラーをスローします。エラーはpmmlのderivedfieldからoutputfieldを参照する方法

ERROR: Variable Z_DD_OCCUPATION_ID is not defined.

派生フィールドからどのように設定できますか?ここ は、私が代わりに派生フィールドのデータ辞書の列を使用している場合、それは完璧に動作

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 

    <PMML version="4.2" 

    xmlns="http://www.dmg.org/PMML-4_2" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <Header copyright="Copyright(c) 2002 SAS Institute Inc., Cary, NC, USA. All Rights Reserved."> 

    <Application name="SAS(r)" version="9.4"/> 

    <Timestamp>2016-06-23 15:36:04</Timestamp> 

    </Header> 

    <DataDictionary numberOfFields="26"> 

     <DataField name="CH_INT_FLG_CRR" optype="continuous" dataType="double"/> 

     <DataField name="TD_SALE_FLG_00M_5" optype="categorical" dataType="string"/> 

     <DataField name="TARGET_NUM" optype="categorical" dataType="double"/> 

    </DataDictionary> 

    <TransformationDictionary> 

    </TransformationDictionary> 

    <RegressionModel functionName="classification" targetFieldName="TARGET_NUM" normalizationMethod="logit"> 

     <MiningSchema> 

     <MiningField name="CH_INT_FLG_CRR" usageType="active" optype="continuous"/> 

     <MiningField name="TD_SALE_FLG_00M_5" usageType="active" optype="categorical"/> 

     <MiningField name="TARGET_NUM" usageType="target" optype="categorical"/> 

     </MiningSchema> 

     <Output> 

     <OutputField name="I_TARGET_NUM" displayName="Into: TARGET_NUM" optype="categorical" dataType="string" targetField="TARGET_NUM" feature="predictedValue"/> 

     <OutputField name="U_TARGET_NUM" displayName="Unnormalized Into: TARGET_NUM" optype="categorical" dataType="string" targetField="TARGET_NUM" feature="predictedDisplayValue"/> 

     <OutputField name="P_TARGET_NUM1" displayName="Predicted: TARGET_NUM=1" optype="continuous" dataType="double" targetField="TARGET_NUM" feature="probability" value="1"/> 

     <OutputField name="P_TARGET_NUM0" displayName="Predicted: TARGET_NUM=0" optype="continuous" dataType="double" targetField="TARGET_NUM" feature="probability" value="0"/> 


       <OutputField name="out_1" optype="continuous" dataType="double" feature="transformedValue"> 
     <FieldRef field="Z_DD_OCCUPATION_ID"/> 
    </OutputField> 

    <OutputField name="out_2" optype="continuous" dataType="double" feature="transformedValue"> 
     <FieldRef field="Z_CH_INT_FLG_CRR"/> 
    </OutputField> 


     </Output> 

     <Targets> 

     <Target field="TARGET_NUM" optype="categorical"> 

      <TargetValue value="1" displayValue="1" priorProbability="0.5000049143"/> 

      <TargetValue value="0" displayValue="0" priorProbability="0.4999950857"/> 

     </Target> 

     </Targets> 

     <LocalTransformations> 

     <DerivedField name="Z_DD_OCCUPATION_ID" displayName="Z_DD_OCCUPATION_ID" optype="continuous" dataType="double" > 
     <MapValues outputColumn="return" defaultValue="99.9"> 
     <FieldColumnPair column="condition" field="TD_SALE_FLG_00M_5"/> 
     <InlineTable> 
     <row> 
     <condition>9999</condition> 
     <return>-0.0992686543837357</return> 
     </row> 
     <row> 
     <condition>7130</condition> 
     <return>-0.010300374749499</return> 
     </row> 
     </InlineTable> 
     </MapValues> 
     </DerivedField> 


     <DerivedField name="Z_CH_INT_FLG_CRR" displayName="Z_CH_INT_FLG_CRR" optype="continuous" dataType="double"> 

      <Discretize field="CH_INT_FLG_CRR" > 

       <DiscretizeBin binValue="0.0154213834"> 

        <Interval closure="openOpen" rightMargin="0"/> 

       </DiscretizeBin> 

       <DiscretizeBin binValue="-0.025845983"> 

        <Interval closure="closedClosed" leftMargin="0" rightMargin="0"/> 

       </DiscretizeBin> 

       <DiscretizeBin binValue="0.0154213834"> 

        <Interval closure="openOpen" leftMargin="0"/> 

       </DiscretizeBin> 

      </Discretize> 

     </DerivedField> 

     </LocalTransformations> 

     <RegressionTable intercept="0.0203226371" targetCategory="1"> 

     <NumericPredictor name="Z_CH_INT_FLG_CRR" coefficient="7.5086455767" /> 

     <NumericPredictor name="Z_DD_OCCUPATION_ID" coefficient="3.2" /> 


     </RegressionTable> 

     <RegressionTable intercept="0" targetCategory="0"/> 

    </RegressionModel> 

    </PMML> 

動作しない私のPMMLです。例えば

私は

<OutputField name="out_1" optype="continuous" dataType="double" feature="transformedValue"> 
    <FieldRef field="TD_SALE_FLG_00M_5"/> 
</OutputField> 

<OutputField name="out_2" optype="continuous" dataType="double" feature="transformedValue"> 
    <FieldRef field="CH_INT_FLG_CRR"/> 
</OutputField> 

<OutputField name="out_1" optype="continuous" dataType="double" feature="transformedValue"> 
     <FieldRef field="Z_DD_OCCUPATION_ID"/> 
    </OutputField> 

    <OutputField name="out_2" optype="continuous" dataType="double" feature="transformedValue"> 
     <FieldRef field="Z_CH_INT_FLG_CRR"/> 
    </OutputField> 

を変換する場合、それは動作します。この場合、私はdatadictionaryカラムからoutputfieldを参照します。しかし実際には、私は出力フィールドで派生フィールドを使用する必要があります。派生したフィールドから出力フィールドを参照するにはどうすればよいですか?

+0

@ user1808924 – neverwinter

+0

受信しているエラーを指定する必要があります。 – Joe

+0

あなたは正しいです。私は私の質問を更新しました。 @ジョー – neverwinter

答えて

1

派生フィールドをLocalTransformations(つまりローカルスコープ)からTransformationDictionary(グローバルスコープ)に移動する必要があります。

PMML 4.2では、出力フィールドのローカル派生フィールドを参照することができません。 「論理」は、PMMLパーサーがフィールドを参照する前にフィールドを参照できないことです。あなたの例では、[email protected]=out_1要素は[email protected]=Z_DD_OCCUPATION_ID要素の前に出現します。

PMML 4.3このルールを緩和しました。詳細はhttp://mantis.dmg.org/view.php?id=142を参照してください。

関連する問題