2017-05-26 7 views
0

Steamを使用して、Pythonプリプロセススクリプトを使用して予測サービスを構築しようとしています。 Pythonは(Spam Detection Exampleに見られるように)h2o Steam PredictionサーブレットがPythonスクリプトの文字値を受け付けない

variable:value var2:value2 var3:value3 

形式で予測サービスに清浄化データを渡すとき、私はサービスから

ERROR PredictPythonServlet - Failed to parse 

エラーを得ます。

for (String p : pairs) { 
    String[] a = p.split(":"); 
    String term = a[0]; 
    double value = Float.parseFloat(a[1]); 
    row.put(term, value); 
    } 

は、文字の値は、この形式で送信することが許可されていない:私はPredictPythonServlet.javaファイルを見てみると、それだけで入力文字列内のすべての値が数値であると仮定しstrMapToRowData機能を使用しているようですか?その場合、PredictPythonServletファイルに定義されていて使用されていないcsvToRowData関数を使用する方法がありますか?私のモデルにOne-Hotエンコーディングを使用する必要はないので、実際の文字列表現を渡すことが理想的です。

はまた、私は、カテゴリ変数のモデルPOJOファイルで検出された数値表現に合格し、エラーを受け取った:

hex.genmodel.easy.exception.PredictUnknownTypeException: Unexpected object type java.lang.Double for categorical column home_team 

のでサービスは、文字列を期待ように見えますが、私は把握することはできませんそれを実際のモデルに渡す方法。どんな助けでも大歓迎です!

答えて

1

予測サービスはEasyPredictModelWrapperを使用しており、基になるモデルが使用するものだけを使用できます。ここではどのモデルを使うのかはっきりしていませんが、ほとんどの場合、数値の浮動小数点値が使用されます。 forループコードスニペットでは、数値が浮動小数点でなければならないことがわかります。

+0

私はGBMモデルを使用しており、モデルが数値変数ではなくそれらの変数の文字列を受け入れることを知っているように、 'Enum'カテゴリ処理を使用しています。 –

+1

こんにちはマット、私はコードをfloatとして解析できない場合に、その文字列を使用するように変更しました。コードがプッシュされているので、これはあなたのために今働くはずです。 – Magnus

+0

私はこの変更をstrMapToRowData関数に追加するためにPR(https://github.com/h2oai/steam/pull/375)を提出しました。私が使用しているGBMモデルは、sparseToRowData関数ではなくstrMapToRowDataにデフォルト設定されているようです –

関連する問題