2016-05-06 7 views
0

私はDRFModelを訓練しており、例外を受け取っていると評価しています:Exception in thread "main" java.lang.ClassCastException: hex.ModelMetricsRegression cannot be cast to hex.ModelMetricsBinomialInteger型のH2OFrame列を強制的にスカラー形式にする方法はありますか?

データには、0または1を含む "label"という列があり、これはターゲット列であるdRFParameters._response_column = "label"です。モデルが目標の列の値を実数として扱うように見えます。

この問題はPython APIでも発生していましたが、H2OFramehdf['label'] = hdf['label'].asfactor()で次のように修正しました。私はscalaとh2oを初めて使っています。 H2OFrameのターゲット列を2進(Integer)にするようにh2oに強制する最良の方法は何か不思議でした。

(これは、スタックオーバーフローの私の最初の質問です。私はより具体的または全体のコードを添付する必要があるなら、私に教えてください。ありがとうございました。)

答えて

1

誰もがまだ私の元の質問にエレガントな答えを提供することができた場合は、それは高く評価されるだろう。しかしH2OFrame.replace()メソッドが役に立ちました。私は何かを使用しなければならなかった

for(i <- 0 until h2oFrame.numCols()) h2oFrame.replace(i, h2oFrame.vec(i).toCategoricalVec) 

私の問題を解決しました。

0

あなたが言及した解決策は、現時点でH2Oで利用可能な解決策です。

このVecがもう必要ない場合は、返されたVecを削除することで少し改善することができます。内部H2OのDKVストアから前のベクターを削除します。削除は自動的には行われません。古いVecも保持することを決定する場合があるためです。

for(i <- 0 until h2oFrame.numCols()){ 
    h2oFrame.replace(i, h2oFrame.vec(i).toCategoricalVec).remove() 
} 

あなただけの範疇する一つの列をオンにしたい場合は、

h2oFrame.replace(h2oFrame.find("target"),h2oFrame.vec("target").toCategoricalVec).remove() 
+0

感謝を行うことができます。 '.remove()'の良いヒント! –

関連する問題