2017-04-24 6 views
0

Vielleicht etwas ähnlich wie this question, scheint es nicht wie SparkR Dataframes sind mit dem Caret-Paket kompatibel.Verwenden von Caret mit SparkR?

Wenn ich versuche, mein Modell zu trainieren, bekomme ich folgende Fehlermeldung:

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

Gibt es eine Möglichkeit, um dieses? Im Folgenden ist ein reproduzierbares Beispiel unter Verwendung von Iris:

#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) 

) 

Wieder eine Möglichkeit, um dies? Wenn nicht, was ist der einfachste Weg zum maschinellen Lernen mit SparkR?

+0

dies nicht möglich ist. – mtoto

+0

@mtoto Ich denke, ich habe das definitiv entdeckt - aber welche Alternativen gibt es, um mit SparkR maschinell zu lernen? Sind da irgendwelche? – skathan

+0

ja: http://spark.apache.org/docs/latest/sparkr.html#machine-learning – mtoto

Antwort

1

können Sie nicht caret Trainingsmethoden auf SparkDataFrames verwenden, wie Sie entdeckt haben. Sie können jedoch Spark-ml ‚s Algorithmen, zum Beispiel verwenden, um einen zufälligen Wald Klassifikator zu trainieren, mit SparkR::spark.randomForest:

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

summary(model)