R变量名称包含分号

用户2921682

我有一个数据框。许多变量的名称如下:

/messages/with/:userid/
/:id/

我使用以下方法读取数据:

read.csv(file="file-path", header=TRUE,
           sep=",", check.names = F)

以便保留原始名称(使用check.names = F)。我使用rpart从数据中训练了决策树模型,然后尝试使用以下方法将树模型保存为pmml格式:

saveXML(pmml(dt.model, model.name = "DecisionTree_Model",
         app.name = "model_lr.pmml",
         description = "Decision Tree Model",
         unknownValue=0), "dt_model.pmml")

但是,这导致以下错误:

field $ class [[field $ name [i]]]中的错误:下标超出范围

我相信原因是,变量名称包含:在内,因此列索引被弄乱了。

我可以用读取数据check.names = T,以便变量名看起来像:

X.messages.with..userid.   
X..id."

但是,由于我需要pmml文件的原始变量名,因此我想保持变量名不变。有什么办法可以解决这个问题?

用户名

pmml程序包内部不稳定-毕竟,在R中进行XML操作不是一个好主意。如果您有兴趣将R模型导出为PMML数据格式,则可以尝试r2pmml软件包它是用Java编写的(因此不会受到R语言怪癖的影响),并且速度更快,功能更强大。

与麻烦的r2pmml包是它不支持的rpart::rpart型号类型呢。因此,最好的选择如下:

  1. 重命名data.frame列。将变量名映射列表保存到文本文件中。
  2. rpart使用该pmml软件包模型导出到PMML文件中
  3. 使用JPMML-Model库打开PMML文件,并还原原始变量名(基于上述映射文件)。JPMML-Model为此提供了特殊的API(Visitor类org.jpmml.model.visitors.FieldRenamer)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章