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