我正在Spark中训练逻辑回归。但是,由于我的训练数据的特殊性,我需要在之后手动调整模型,即改变截距。
使用RDD api很容易做到——只需实例化一个新的LogisticRegressionModel:
val intercept = model.intercept() + adjustment
val model = new LogisticRegressionModel(model.weights(), intercept)
然而,DataFrame API中的LogisticRegressionModel构造函数是私有的。我如何手动调整模型?
今天下午我遇到了同样的问题,我处于测试模式,试图使它发生,所以我不在乎它有多脏:从你的模型中获得系数,获得截距,调整它,然后用他们在Spark中使用的代码手工做你的预测(寻找BLAS.dot
, margin
和score
)。在某些情况下他们使用BLAS.dot
, BLAS
是私有的火花。再次做同样的事情,检索dot
的代码,处理SparseVector
/DenseVector
,您就可以完成它了。很脏,但很管用