我已经在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
答案 0 :(得分:2)
至于现在(Spark 1.6.0 / 2.0.0 SNAPSHOT)是不可能的,因为GBTClassificationModel
不是MLWritable
而你尝试使用的toOld
方法在{{{ 1}}
如果您想保存模特,您必须直接使用ML
模型MLlib
:
savable