2016-04-17 10 views
0

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

答えて

2

org.apache.spark.ml.classification.LogisticRegressionを拡張して新しいクラスを作成し、ソースコードを変更せずにそれぞれのメソッドをオーバーライドする必要があります。新しいCustomLogisticRegressionクラスとロジスティック回帰を実行

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

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 
+0

はどうもありがとう、これは本当に便利です! –