使用Caret和SparkR?

时间:2017-04-24 16:07:41

标签: r r-caret sparkr

或许与this question有些相似,但似乎SparkR数据帧与插入符号包兼容。

当我尝试训练我的模型时,我收到以下错误:

    Error in as.data.frame.default(data) : 
  cannot coerce class "structure("SparkDataFrame", package = "SparkR")" to a data.frame

这有什么办法吗?以下是使用虹膜的可重复示例:

#load libraries
library(caret)
library(randomForest)
set.seed(42)

#point R session to Spark
Sys.setenv(SPARK_HOME = "your/spark/installation/here")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))

#load SparkR
library(SparkR)

#initialize Spark context
sc <- sparkR.init(master = "local",sparkEnvir = list(spark.driver.memory="2g"))

#initialize SQL context
sqlContext <- sparkRSQL.init(sc)

train2 <- createDataFrame(sqlContext, iris)

#train the model
model <- train(Species ~ Sepal_Length + Petal_Length,
               data = train2,
               method = "rf",
               trControl = trainControl(method = "cv", number = 5)

)

再说一遍,这有什么办法吗?如果不是,那么使用SparkR进行机器学习的最直接途径是什么?

1 个答案:

答案 0 :(得分:1)

您无法在caret上使用SparkDataFrames的培训方法,就像您已经发现的那样。但是,您可以使用Spark-ml的算法,例如使用SparkR::spark.randomForest训练随机森林分类器:

#train the model
model <- spark.randomForest(train2,
                            type="classification",  
                            Species ~ Sepal_Length + Petal_Length,
                            maxDepth = 5,
                            numTrees = 100)

summary(model)