Spark: 覆盖库方法

我想对spark.ml.classification.LogisticRegression的Scala代码进行一些修改,而不需要重新构建整个Spark。因为我们可以在spark-submit或pySpark执行时追加jar文件。是否可以编译一个修改后的LogisticRegression.java副本,并覆盖Spark的默认方法,或者至少创建新的方法?谢谢。


回答:

创建一个新的类,继承自org.apache.spark.ml.classification.LogisticRegression,并覆盖相应的方法,而无需修改源代码,应该是可行的。

class CustomLogisticRegression  extends    LogisticRegression {  override def toString(): String = "这是被覆盖的Logistic Regression类"}

使用新的CustomLogisticRegression类运行Logistic Regression

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)// 打印逻辑回归的截距println(s"自定义类的截距: ${customLRModel.intercept}")println(s"原始类的截距: ${originalLRModel.intercept}")println(customLR.toString())println(originalLR.toString())

输出:

自定义类的截距: 0.22456315961250317原始类的截距: 0.22456315961250317这是被覆盖的Logistic Regression类logreg_1cd811a145d7

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注