当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R SparkR spark.glm用法及代码示例


说明:

针对 SparkDataFrame 拟合广义线性模型。用户可以调用summary打印拟合模型的摘要,调用predict对新数据进行预测,调用write.ml/read.ml保存/加载拟合模型。

用法:

spark.glm(data, formula, ...)

## S4 method for signature 'SparkDataFrame,formula'
spark.glm(
  data,
  formula,
  family = gaussian,
  tol = 1e-06,
  maxIter = 25,
  weightCol = NULL,
  regParam = 0,
  var.power = 0,
  link.power = 1 - var.power,
  stringIndexerOrderType = c("frequencyDesc", "frequencyAsc", "alphabetDesc",
    "alphabetAsc"),
  offsetCol = NULL
)

## S4 method for signature 'GeneralizedLinearRegressionModel'
summary(object)

## S3 method for class 'summary.GeneralizedLinearRegressionModel'
print(x, ...)

## S4 method for signature 'GeneralizedLinearRegressionModel'
predict(object, newData)

## S4 method for signature 'GeneralizedLinearRegressionModel,character'
write.ml(object, path, overwrite = FALSE)

参数:

  • data 用于训练的 SparkDataFrame。
  • formula 要拟合的模型的符号说明。目前仅支持少数公式运算符,包括'~'、'.'、':'、'+'、'-'、'*'和'^'。
  • ... 传递给该方法的附加参数。
  • family 模型中要使用的误差分布和链接函数的说明。这可以是命名族函数、族函数或调用族函数的结果的字符串。在 https://stat.ethz.ch/R-manual/R-devel/library/stats/html/family.html 参考 R 系列。目前支持以下系列:binomial , gaussian , Gamma , poissontweedie 请注意,有两种方法可以指定花呢系列。
    • 设置family = "tweedie"并指定var.power和link.power;
    • 当包 statmod 被加载时,tweedie 系列是使用其中的系列定义指定的,即 tweedie(var.power, link.power)
  • tol 迭代的正收敛容差。
  • maxIter 给出最大 IRLS 迭代次数的整数。
  • weightCol 权重列名称。如果未设置或 NULL ,我们将所有实例权重视为 1.0。
  • regParam L2 正则化的正则化参数。
  • var.power Tweedie 分布的方差函数中的幂,它提供了分布的方差和均值之间的关系。仅适用于 Tweedie 系列。
  • link.power 电源链接函数中的索引。仅适用于 Tweedie 系列。
  • stringIndexerOrderType 如何对字符串特征列的类别进行排序。这用于确定字符串特征的基本级别,作为编码字符串时删除排序后的最后一个类别。支持的选项有 "frequencyDesc"、"frequencyAsc"、"alphabetDesc" 和 "alphabetAsc"。默认值为"frequencyDesc"。当 ordering 设置为 "alphabetDesc" 时,这会在编码字符串时丢弃与 R 相同的类别。
  • offsetCol 偏移列名称。如果未设置或为空,我们将所有实例偏移量视为 0.0。指定为偏移量的特征具有 1.0 的常数系数。
  • object 拟合的广义线性模型。
  • x summary 函数返回的拟合广义线性模型的摘要对象。
  • newData 用于测试的 SparkDataFrame。
  • path 保存模型的目录。
  • overwrite 如果输出路径已经存在,是否覆盖。默认为 FALSE,这意味着如果输出路径存在则抛出异常。

返回:

spark.glm 返回拟合的广义线性模型。

summary 返回拟合模型的汇总信息,是一个列表。组件列表至少包括coefficients(系数矩阵,其中包括系数、系数的标准误差、t 值和 p 值)、null.deviance(空/剩余自由度)、aic (AIC) 和iter(IRLS 进行的迭代次数)。如果数据中有共线列,则系数矩阵仅提供系数。

predict 在名为"prediction" 的列中返回包含预测标签的 SparkDataFrame。

注意:

spark.glm 从 2.0.0 开始

摘要(GeneralizedLinearRegressionModel)自 2.0.0 起

从 2.0.0 开始的 print.summary.GeneralizedLinearRegressionModel

从 1.5.0 开始预测(GeneralizedLinearRegressionModel)

write.ml(GeneralizedLinearRegressionModel, character) 自 2.0.0

例子:

sparkR.session()
t <- as.data.frame(Titanic, stringsAsFactors = FALSE)
df <- createDataFrame(t)
model <- spark.glm(df, Freq ~ Sex + Age, family = "gaussian")
summary(model)

# fitted values on training data
fitted <- predict(model, df)
head(select(fitted, "Freq", "prediction"))

# save fitted model to input path
path <- "path/to/model"
write.ml(model, path)

# can also read back the saved model and print
savedModel <- read.ml(path)
summary(savedModel)

# note that the default string encoding is different from R's glm
model2 <- glm(Freq ~ Sex + Age, family = "gaussian", data = t)
summary(model2)
# use stringIndexerOrderType = "alphabetDesc" to force string encoding
# to be consistent with R
model3 <- spark.glm(df, Freq ~ Sex + Age, family = "gaussian",
                   stringIndexerOrderType = "alphabetDesc")
summary(model3)

# fit tweedie model
model <- spark.glm(df, Freq ~ Sex + Age, family = "tweedie",
                   var.power = 1.2, link.power = 0)
summary(model)

# use the tweedie family from statmod
library(statmod)
model <- spark.glm(df, Freq ~ Sex + Age, family = tweedie(1.2, 0))
summary(model)

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 Generalized Linear Models。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。