我正在尝试为spark中的SVM初始化分配自己的权重。但是在训练模型后我得到了错误的预测值。如果我使用默认值,即不提供初始权重向量,我会得到一个好的预测模型。
我检查了github上的代码,但是在我们没有传递任何内容的情况下无法弄清楚如何完成初始化。 https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/classification/SVM.scala
有什么建议吗?
编辑:我有使用scala的经验
答案 0 :(得分:2)
SVMWithSGD
从run
继承了GeneralizedLinearAlgorithm
方法。如果未提供权重向量,则只需initialized using vector of zeros:
val initialWeights = {
if (numOfLinearPredictor == 1) {
Vectors.zeros(numFeatures)
} else if (addIntercept) {
Vectors.zeros((numFeatures + 1) * numOfLinearPredictor)
} else {
Vectors.zeros(numFeatures * numOfLinearPredictor)
}
}