0

我已经在 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保存不起作用

4

1 回答 1

2

至于现在(Spark 1.6.0 / 2.0.0 SNAPSHOT)这是不可能的,因为GBTClassificationModelMLWritable尝试toOld使用的方法是私有的ML

如果要保存模型,则必须MLlib直接使用模型,即savable

final GradientBoostedTreesModel model = ...;
model.save(jsc.sc(), "some-path");
于 2016-03-01T10:47:21.223 回答