在 R 中使用 SVM 且 scale=TRUE(默认)时,是不是可以重命名本地转换中的派生字段名称
Posted
技术标签:
【中文标题】在 R 中使用 SVM 且 scale=TRUE(默认)时,是不是可以重命名本地转换中的派生字段名称【英文标题】:Is there a way to rename the derived field name in Local Transformations when using SVM in R with scale=TRUE (default)在 R 中使用 SVM 且 scale=TRUE(默认)时,是否可以重命名本地转换中的派生字段名称 【发布时间】:2019-06-29 00:59:13 【问题描述】:关于使用 e1071 包,使用 Iris 数据集进行 SVM 分类。我看到使用 scale=TRUE 生成的模型/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】:根据pmml
包源码,派生字段的名称是硬编码的:
dfName <- paste("algorithm_derived_nc_",inputNames[i],sep="")
为什么DerivedField
元素的命名完全是个问题?它们的范围仅限于 SupportVectorMachineModel
元素的主体,因此最终用户永远不会看到或不必关心它们。
您始终可以使用 XML 或纯文本操作工具对结果 PMML 文件进行后处理。例如,将“algorithm_derived_nc_”替换为“adn_”(或其他任何认为合适的内容)会很简单。
【讨论】:
ok..Thx 输入..是的,除了后处理..pmmltransformation 和 xformInfo 也可以利用。以上是关于在 R 中使用 SVM 且 scale=TRUE(默认)时,是不是可以重命名本地转换中的派生字段名称的主要内容,如果未能解决你的问题,请参考以下文章