是否可以在Spark 1.6中保存GBTClassifier?

时间:2016-03-01 10:34:04

标签: apache-spark machine-learning save apache-spark-mllib apache-spark-ml

我已经在Spark 1.6中使用Pipeline抽象训练了一个GBTClassifier,我对如何保存它感到困惑。

如果我这样做:

GBTClassificationModel gbt = trainClassifierGBT(data);
Model Accuracy = 0.8306451612903226
Test Error = 0.16935483870967738
GradientBoostedTreesModel oldGBT = gbt.toOld();
oldGBT.save(jsc.sc(), "data/gbtModel");

我明白了:

java.lang.NullPointerException

如果我这样做:

PipelineModel pipeModel = pipeline.fit(training);
pipeline.save("data/gbtModel");

我明白了:

Exception in thread "main" java.lang.UnsupportedOperationException: Pipeline write will fail on this Pipeline because it contains a stage which does not implement Writable. 

我将测试这个解决方案但是想知道它是否可以用另一种方式解决。 Spark ML Pipeline api save not working

1 个答案:

答案 0 :(得分:2)

至于现在(Spark 1.6.0 / 2.0.0 SNAPSHOT)是不可能的,因为GBTClassificationModel不是MLWritable而你尝试使用的toOld方法在{{{ 1}}

如果您想保存模特,您必须直接使用ML模型MLlib

savable