我正在使用Pyspark的一些变形金刚,比如StringIndexer,StandardScaler等等。我首先将这些应用于训练集,然后再使用相同的变换对象(StringIndexerModel,StandardScalerModel的相同参数),以便将它们应用于测试集。因此,我正在寻找一种方法将这些转换函数保存为一个文件。但是,我找不到任何相关的方法,但只能使用诸如LogisticRegression之类的ml函数。你知道任何可能的方式来做到这一点吗?谢谢。Pyspark:保存变形金刚
回答
StringIndexer和StandardScaler的输出都是RDD,因此您可以将模型直接保存到文件中,或者更可能是您想要的,您可以保留结果以供以后计算。
要保存到实木复合地板文件调用(您可能还需要附加架构)sqlContext.createDataFrame(string_indexed_rdd).write.parquet("indexer.parquet")
。然后,您需要编程加载这个结果,当你需要时从文件中加载回来。
坚持致电string_indexed_rdd.persist()
。这会将中间结果保存在内存中供以后重用。如果内存有限,您也可以传递选项以保存到磁盘。
如果你只想坚持模型本身,你被困在了API(PR)现有错误/缺少能力。如果潜在问题已解决并且未提供新方法,则需要手动调用一些基础方法来获取和设置模型参数。查看模型代码,可以看到模型从一系列类中继承,其中一个类是Params
。这个类有extractParamMap
,它提取模型中使用的参数。然后,您可以用任何您希望保留python字典的方式保存它。然后,您需要创建一个空的模型对象,然后通过调用copy(saved_params)
将持久参数传递给对象。
东西沿着这些路线应该工作:
def save_params(model, filename):
d = shelve.open(filename)
try:
return d.update(model.extractParamMap())
finally:
d.close()
def load_params(ModelClass, filename):
d = shelve.open(filename)
try:
return ModelClass().copy(dict(d))
finally:
d.close()
我对保存转换的数据不感兴趣,但模型本身。例如,我想保存不是RDD的StandardScalerModel。 –
啊,你的问题在这一点上还不清楚 - 我扫描了源代码,并添加了我认为会实现你想要的内容。 – Pyrce
我会试试看,谢谢! –
我发现了一个简单的解决方案。
将索引器模型保存到文件(在HDFS上)。
writer = indexerModel._call_java("write")
writer.save("indexerModel")
从文件(保存在HDFS上)加载索引器模型。
indexer = StringIndexerModel._new_java_obj("org.apache.spark.ml.feature.StringIndexerModel.load", "indexerModel")
indexerModel = StringIndexerModel(indexer)
- 1. Mule ESB:XSLT变形金刚还是Java变形金刚?
- 2. 猫Monad变形金刚
- 3. Monad变形金刚电梯
- 4. 嵌套XML变形金刚
- 5. 变形金刚从哪里来?
- 6. AngularJS循环依赖 - 变形金刚
- 7. Haskell:Monad变形金刚和全局状态
- 8. Scala中的Monad变形金刚
- 9. Laravel 5.1,Dingo - 嵌套变形金刚
- 10. 变形金刚是什么意思?
- 11. 的NodeJS:数据变形金刚喜欢在Laravel的PHP框架
- 12. Dashcode - 与价值变形金刚的乐趣
- 13. 如何为solr DataImportHandler创建自定义变形金刚?
- 14. 达特朗:pubspec.yaml中的开发变形金刚
- 15. 为什么babel-node CLI似乎包含所有变形金刚?
- 16. Monad变形金刚图书馆 - 哪一个使用?
- 17. “Monad变形金刚比效果更强大” - 示例?
- 18. 实体中获取集合使用变形金刚
- 19. 刚刚保存的Java MongoDB ID
- 20. cabal未能安装mtl缺少变形金刚的依赖关系
- 21. 自定义类型/转换器结合休眠的变形金刚.aliasToBean
- 22. 为什么在编写新的Monad变形金刚时使用样板
- 23. 无法改变保证金
- 24. Mongoose与mongodb如何返回刚刚保存的对象?
- 25. 如何保存我刚刚在mongodb中修改的小文件?
- 26. 获取刚过父已被保存
- 27. ORMlite也不回我刚才保存
- 28. 保存形式哈希改变事件
- 29. Pyspark保存RDD卡桑德拉
- 30. 什么是保存在星火\ PySpark
你能说清楚你是否使用MLlib或ML? – zero323
哎呀,对不起。我正在与pyspark.ml合作。 –