私はStringIndexer、StandardScalerなどのPysparkの変圧器を使用しています。最初にそれらをトレーニングセットに適用し、その後、同じ変換オブジェクト(StringIndexerModel、StandardScalerModelの同じパラメータ)を使用してテストセットに適用します。したがって、これらの変換関数をファイルとして保存する方法を探しています。しかし、私はLogisticRegressionのようなml関数だけで関連する方法を見つけることはできません。あなたはそれを行う可能な方法を知っていますか?ありがとう。Pyspark:変圧器を保存
答えて
StringIndexerとStandardScalerの出力は両方ともRDDなので、ファイルに直接モデルを保存することも、必要に応じて後で計算するために結果を保持することもできます。
寄木細工ファイルの呼び出しに保存するには(スキーマも必要です)sqlContext.createDataFrame(string_indexed_rdd).write.parquet("indexer.parquet")
。この結果をファイルからロードするようプログラムする必要があります。
string_indexed_rdd.persist()
を呼び出します。これにより、後で再利用するために中間結果がメモリに保存されます。メモリが限られている場合でも、ディスクに保存するオプションを渡すことができます。
あなただけのモデル自体を保持したい場合は、API(PR)での既存のバグ/欠けている機能に立ち往生しています。根本的な問題が解決され、新しいメソッドを提供しなかった場合、モデルパラメータを取得および設定するために、いくつかの基本メソッドを手動で呼び出す必要があります。モデルコードを見てみると、モデルは一連のクラスから継承されており、そのうちの1つはParams
です。このクラスには、モデルで使用されるパラメータを引き出すextractParamMap
があります。これは、Pythonのdictsを永続化するために望む方法でこれを保存することができます。次に、空のモデルオブジェクトを作成し、それに続いて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に保存された)ファイルからインデクサーモデルをロードします。
- 1. Alfrescoシェア - 変圧器
- 2. スカラストリームのモナド変圧器
- 3. モナド対モナド変圧器
- 4. Pyspark S3にデータフレームを保存
- 5. モナド変圧器の例外をキャッチ
- 6. アイデンティティモナドを持つモナド変圧器
- 7. PysparkがS3に保存
- 8. 自分のモナド変圧器と
- 9. Laravel Dingo入れ子の変圧器
- 10. モナド変圧器モナドの複製
- 11. 任意のモナド変圧器スタック
- 12. 圧縮イメージの保存
- 13. pyspark:並行保存し、順序保存を収集する
- 14. pysparkにバッチのデータを保存する
- 15. PysparkデータフレームにPandasタイムスタンプタイプを保存する
- 16. いくつかのモナド変圧器スタックを検討モナド変換
- 17. 保存後のPyspark Logistic回帰モデルの変更精度
- 18. 分度器でスクリーンショットを保存する
- 19. ファイルを分度器で保存する
- 20. プレーヤーの機器を保存する
- 21. スカラ、JSONの変圧器を再生する条件
- 22. Scalaz:それは私はモナド変圧器を勉強なし
- 23. なぜボイラープレート新しいモナド変圧器を書き
- 24. Pyspark 1.6ファイル圧縮の問題
- 25. IdentityT変圧器の目的は何ですか?
- 26. Groovy変圧器は無視されたようでした
- 27. 2つのモナド変圧器の違いは何ですか?
- 28. 変圧器でのクラスの使用方法
- 29. デザインヘルプ!列挙型の工場変圧器のJavaジェネリックス!
- 30. 変圧器としてのモナド組成の抽象化
MLlibまたはMLで作業するかどうかを明確にすることはできますか? – zero323
おっと、申し訳ありません。私はpyspark.mlで作業しています。 –