0

spark.ml.classification.LogisticRegressionSpark 全体を再構築せずに、scala コードにいくつかの変更を加えたいと考えています。spark-submit または pySpark の実行に jar ファイルを追加できるためです。変更されたコピーをコンパイルしてLogisticRegression.javaSpark のデフォルト メソッドをオーバーライドすること、または少なくとも新しいメソッドを作成することは可能ですか? ありがとう。

4

1 に答える 1

2

を拡張する新しいクラスを作成しorg.apache.spark.ml.classification.LogisticRegression、ソースコードを変更せずにそれぞれのメソッドをオーバーライドすると機能するはずです。

class CustomLogisticRegression
  extends
    LogisticRegression {
  override def toString(): String = "This is overridden Logistic Regression Class"
}

CustomLogisticRegression新しいクラスでロジスティック回帰を実行する

val data = sqlCtx.createDataFrame(MLUtils.loadLibSVMFile(sc, "/opt/spark/spark-1.5.2-bin-hadoop2.6/data/mllib/sample_libsvm_data.txt"))

val customLR = new CustomLogisticRegression()
  .setMaxIter(10)
  .setRegParam(0.3)
  .setElasticNetParam(0.8)

val customLRModel = customLR.fit(data)

val originalLR = new LogisticRegression()
  .setMaxIter(10)
  .setRegParam(0.3)
  .setElasticNetParam(0.8)

val originalLRModel = originalLR.fit(data)

// Print the intercept for logistic regression
println(s"Custom Class's Intercept: ${customLRModel.intercept}")
println(s"Original Class's Intercept: ${originalLRModel.intercept}")
println(customLR.toString())
println(originalLR.toString())

出力:

Custom Class's Intercept: 0.22456315961250317
Original Class's Intercept: 0.22456315961250317
This is overridden Logistic Regression Class
logreg_1cd811a145d7
于 2016-04-18T10:46:26.150 に答える