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
のでサービスは、文字列を期待ように見えますが、私は把握することはできませんそれを実際のモデルに渡す方法。どんな助けでも大歓迎です!
私はGBMモデルを使用しており、モデルが数値変数ではなくそれらの変数の文字列を受け入れることを知っているように、 'Enum'カテゴリ処理を使用しています。 –
こんにちはマット、私はコードをfloatとして解析できない場合に、その文字列を使用するように変更しました。コードがプッシュされているので、これはあなたのために今働くはずです。 – Magnus
私はこの変更をstrMapToRowData関数に追加するためにPR(https://github.com/h2oai/steam/pull/375)を提出しました。私が使用しているGBMモデルは、sparseToRowData関数ではなくstrMapToRowDataにデフォルト設定されているようです –