我尝试用flink-ml svm实现做一些二进制分类.当我评估分类时,我在训练数据集上得到了大约85%的错误率.我绘制了3D数据,看起来你可以用超平面很好地分离数据.
当我试图从svm中获取权重向量时,我只看到了获取权重向量而没有截取超平面的选项.所以只是超平面通过(0,0,0).
我没有任何线索,错误可能是什么,并欣赏每一个线索.
val env = ExecutionEnvironment.getExecutionEnvironment
val input: DataSet[(Int, Int, Boolean, Double, Double, Double)] = env.readCsvFile(filepathTraining, ignoreFirstLine = true, fieldDelimiter = ";")
val inputLV = input.map(
t => { LabeledVector({if(t._3) 1.0 else -1.0}, DenseVector(Array(t._4, t._5, t._6)))}
)
val trainTestDataSet = Splitter.trainTestSplit(inputLV, 0.8, precise = true, seed = 100)
val trainLV = trainTestDataSet.training
val testLV = trainTestDataSet.testing
val svm = SVM()
svm.fit(trainLV)
val testVD = testLV.map(lv => (lv.vector, lv.label))
val evalSet = svm.evaluate(testVD)
// groups the data in false …Run Code Online (Sandbox Code Playgroud)