或许与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进行机器学习的最直接途径是什么?
答案 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)