2

我在 r 中有一个数据框,其中有一些 NA 值。如何使用 pmmlTransformations 为这些字段设置缺失值处理。我已经看到您可以在转换数据(规范化、字段映射等)时设置缺失值处理,但我想知道如何设置缺失值而不必对数据进行规范化。

    library(pmml)
    library(pmmlTransformations)

    df <- data.frame(id=1:5, y=1:5, x=c(2,4,3,NA,8))
    dataBox <- WrapData(df)

    # update the wrapped data to set x=1 when it its NA

    fit <- glm(formula=y~x, data = dataBox$data)

    pmml(fit, transforms=dataBox)

提前谢谢了

安德鲁

4

2 回答 2

0

如果您只想将missingValueReplacement=1属性添加到MiningFieldPMML 文档中的所有元素,则附加unknownValue = 1到您的pmml::pmml.glm函数调用:

library(pmml)
df <- data.frame(id=1:5, y=1:5, x=c(2,4,3,NA,8))
# Set missing values to 1 before training a GLM model
df$x[is.na(df$x)] = 1
fit <- glm(formula=y~x, data = df)
# Encode information about the missing value transformation into the PMML document
pmml = pmml.glm(fit, unknownValue = 1)
saveXML(pmml, "glm.pmml")

当然,该unknownValue参数似乎已被弃用,但它完全可以满足您的需要,而无需启动复杂的转换序列。

于 2015-05-11T14:10:51.950 回答
0

您可以使用 unknownValue 参数: pmml.glm(glm, transforms = dataBox, unknownValue = 0) 但这将应用于您的所有变量,包括您的目标变量。

我编写了一个修复程序,允许为每个变量指定替换值: https ://github.com/guleaatoma/pmml

使用此版本的软件包,您可以执行以下操作:

pmml.glm(glm, transforms = dataBox, unknownValue = list("x1" = 0, "x2" = 100))

于 2017-09-20T16:38:38.557 回答