我有一个数据框。许多变量的名称如下:
/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
型号类型呢。因此,最好的选择如下:
data.frame
列。将变量名映射列表保存到文本文件中。rpart
使用该pmml
软件包将模型导出到PMML文件中。org.jpmml.model.visitors.FieldRenamer
)。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句