我正在使用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. 嵌套XML變形金剛
- 3. Monad變形金剛電梯
- 4. 貓Monad變形金剛
- 5. 變形金剛下的變形
- 6. Haskell:Monad變形金剛和全局狀態
- 7. Laravel 5.1,Dingo - 嵌套變形金剛
- 8. AngularJS循環依賴 - 變形金剛
- 9. Scala中的Monad變形金剛
- 10. 變形金剛從哪裏來?
- 11. 變形金剛是什麼意思?
- 12. Monad變形金剛圖書館 - 哪一個使用?
- 13. Laravel Dingo API - 如何應對多個收藏品/變形金剛?
- 14. 實體中獲取集合使用變形金剛
- 15. RavenDB - 變形金剛有奇怪的行爲
- 16. 哈斯克爾GTK和單子變形金剛
- 17. 如何爲solr DataImportHandler創建自定義變形金剛?
- 18. 爲什麼babel-node CLI似乎包含所有變形金剛?
- 19. 「Monad變形金剛比效果更強大」 - 示例?
- 20. 的NodeJS:數據變形金剛喜歡在Laravel的PHP框架
- 21. Dashcode - 與價值變形金剛的樂趣
- 22. 在框架2中使用Json變形金剛編寫空值
- 23. 達特朗:pubspec.yaml中的開發變形金剛
- 24. 剛剛保存的Java MongoDB ID
- 25. 如何保存IDFmodel與PySpark
- 26. pySpark:保存ML模型
- 27. 爲什麼在編寫新的Monad變形金剛時使用樣板
- 28. Monad變形金剛 - 隨機+錯誤+日誌爲棋盤遊戲服務
- 29. 使用MOXY解析混合標記,也許使用變形金剛
- 30. 自定義類型/轉換器結合休眠的變形金剛.aliasToBean
你能說清楚你是否使用MLlib或ML? – zero323
哎呀,對不起。我正在與pyspark.ml合作。 –