當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。