在R中以scale = TRUE(默认值)使用SVM时,是否可以重命名“本地转换”中的派生字段名称

时间:2019-02-05 08:41:00

标签: r svm pmml

在使用e1071软件包时,带有Iris数据集的SVM分类。我看到使用scale = TRUE生成的model / pmml总是使用诸如algorithm_derived_nc_之类的名称来规范化数据集属性。有没有一种方法可以指定特定名称,例如“ attr1_foo”,而不是默认名称。

library(pmml)
library(e1071)
svmModel<-svm(Species~.,data=iris)
pmml(svmModel)

shows..
<PMML...>
..
<Output>
   <OutputField name="Predicted_Species" feature="predictedValue"/>
  </Output>
  <LocalTransformations>
   <DerivedField name="algorithm_derived_nc_Sepal.Length" dataType="double" optype="continuous">
    <NormContinuous field="Sepal.Length">
     <LinearNorm orig="0" norm="-7.05660228803556"/>
     <LinearNorm orig="5.84333333333333" norm="0"/>
    </NormContinuous>
   </DerivedField>
...

</PMML>

1 个答案:

答案 0 :(得分:0)

根据pmml包源代码,派生字段的名称是硬编码的:

dfName <- paste("algorithm_derived_nc_",inputNames[i],sep="")

为什么DerivedField元素的命名根本没有问题?它们的范围仅限于SupportVectorMachineModel元素的正文,因此最终用户永远不会看到或不必关心它们。

您始终可以使用XML或纯文本操作工具对结果PMML文件进行后处理。例如,将“ algorithm_derived_nc_”替换为“ adn _”(或任何其他合适的方法)将很简单。