首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加载PMML模型?

如何加载PMML模型?
EN

Stack Overflow用户
提问于 2016-06-15 22:35:39
回答 4查看 1.9K关注 0票数 7

我正在按照PMML model export - spark.mllib的说明创建K均值模型。

代码语言:javascript
复制
val numClusters = 10
val numIterations = 10
val clusters = KMeans.train(data, numClusters, numIterations)
// Save and load model: export to PMML
println("PMML Model:\n" + clusters.toPMML("/kmeans.xml"))

但是在那之后我不知道如何加载PMML。

我在努力

代码语言:javascript
复制
val sameModel = KMeansModel.load(sc, "/kmeans.xml")

并显示为:

代码语言:javascript
复制
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/kmeans.xml/metadata

有什么想法吗?

诚挚的问候

EN

回答 4

Stack Overflow用户

发布于 2017-05-30 21:13:44

正如文档中所述(对于您感兴趣的版本- 1.6.1和最新版本- 2.1.0),Spark仅支持导出到PMML。load方法实际上期望检索以Spark own格式保存的模型,这就是为什么load方法期望某个路径存在,以及抛出异常的原因。

如果您使用Spark对模型进行了训练,则可以稍后对其进行saveload

如果您需要加载未在Spark中训练的模型,并且已另存为PMML,则可以使用jpmml-spark加载和评估它。

票数 1
EN

Stack Overflow用户

发布于 2017-05-31 15:08:55

我在这个Spark.mllib的KMeans空间的有限经验是,这是不可能的,但你可以自己开发这个特性。

Spark.mllib的KMeansModel is PMMLExportable

代码语言:javascript
复制
class KMeansModel @Since("1.1.0") (@Since("1.0.0") val clusterCenters: Array[Vector])
  extends Saveable with Serializable with PMMLExportable {

这就是为什么可以使用toPMML将模型保存为PMML XML格式的原因。

(同样,我对Spark MLlib有很少的经验)我的理解是,KMeans都是关于质心的,这就是当你执行KMeansModel.load时加载的东西,它使用读取质心并创建KMeansModelKMeansModel.SaveLoadV1_0.load

代码语言:javascript
复制
new KMeansModel(localCentroids.sortBy(_.id).map(_.point))

对于KMeansModel.toPMML,Spark MLlib使用pmml- PMML的模型(如here所示):

代码语言:javascript
复制
new PMML("4.2", header, null)

我推荐探索pmml- PMML的模型如何进行保存和加载,因为这超出了Spark的范围。

旁注

为什么你要在训练模型之后使用Spark来拥有它呢?这确实是可能的,但您可能是在浪费集群资源让Spark托管该模型。

在我有限的理解中,Spark MLlib的唯一目的是使用Spark的特性,如分布式和并行性来处理大数据集来构建模型,并在以后使用它们而不使用Spark机器。

在我狭隘的视野里,我一定错过了一些重要的东西。

票数 1
EN

Stack Overflow用户

发布于 2019-08-22 09:29:25

您可以使用PMML4S-Spark加载PMML模型以在Spark中对其进行评估,例如:

代码语言:javascript
复制
import org.pmml4s.spark.ScoreModel

val model = ScoreModel.fromFile("/kmeans.xml")

model是一个SparkML转换器,因此您可以根据数据帧进行预测:

代码语言:javascript
复制
val scoreDf = model.transform(df)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37838480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档