Есть ли способ переименовать производное имя поля в локальных преобразованиях при использовании SVM в R с масштабом = ИСТИНА (по умолчанию)

При использовании пакета e1071 классификация SVM с набором данных Iris. Я вижу, что модель/pmml, сгенерированная с масштабированием = TRUE, всегда нормализует атрибуты набора данных с такими именами, как 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>

person Binu    schedule 05.02.2019    source источник


Ответы (1)


Согласно исходному коду пакета pmml, имена производных полей жестко закодированы:

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

Почему именование DerivedField элементов вообще проблематично? Их область действия ограничена телом элемента SupportVectorMachineModel, поэтому конечный пользователь никогда не увидит их и не должен заботиться о них.

Вы всегда можете выполнить постобработку результирующих файлов PMML с помощью инструментов обработки XML или обычного текста. Например, было бы просто заменить «algorithm_derived_nc_» на «adn_» (или что-то другое, что кажется подходящим).

person user1808924    schedule 05.02.2019
comment
хорошо..Спасибо за входные данные..Да, помимо постобработки..pmmltransformation и xformInfo также можно использовать. - person Binu; 05.02.2019