私はSparkのロジスティック回帰をトレーニングしています。しかし、私の訓練データの特徴から、モデルを手動で調整する必要があります。つまり、切片を変更する必要があります。 RDD APIで行うのは簡単だったSpark DataFrame APIロジスティック回帰モデルの代入を調整する
- ちょうど新しいLogisticRegressionModelをインスタンス化:
val intercept = model.intercept() + adjustment
val model = new LogisticRegressionModel(model.weights(), intercept)
しかし、データフレームのAPIでLogisticRegressionModelコンストラクタはプライベート行われました。モデルを手動で調整するにはどうすればよいですか?
スパークをフォークして、傍受をシフトできるパラメータで独自のコピー機能を追加することができます。それも動作します。おそらくもっと美しいでしょう。 –
明らかに、リフレクションでより簡単に(まだ汚れて)行うことができます: 'val modelClass = classOf [LogisticRegressionModel]; val const = modelClass.getDeclaredConstructor(classOf [String]、classOf [Vector]、classOf [Double]); val切片=訓練された切片 - 調整; val newModel = const.newInstance(trained.uid、trained.coefficients、intercept:java.lang.Double)) ' –