如何在svm多标签中进行文件培训和测试?

时间:2016-10-16 04:07:23

标签: machine-learning svm libsvm

如何在svm多标签中进行文件培训和测试? 我的问题是https://www.quora.com/Can-anyone-give-me-some-pointers-for-using-SVM-for-user-recognition-using-keystroke-timing/answer/Chomba-Bupe?snid3=364610243&nsrc=1&filter=all

我的项目是动态键盘,用户与所有用户进行培训 例如,如果你有三个类A,B和C,那么你将拥有3个SVM,每个SVM都有自己的参数,即权重和偏差,3个独立的输出分别对应3个类。当训练SVM-A时,另外两个B类和C类作为负训练集而A作为正数,那么当训练SVM-B A和C是负训练集时,对于SVM-C A和B则是负数。这就是所谓的一对一培训程序。

我尝试但结果出错了

我的培训文件是.csv并包含:

  

65 134,+ 1

     

70 98,+ 1

     

73 69,+ 1

     

82 122,+ 1

     

82 95,+ 1

     

83 127,+ 1

     

84 7,+ 1

     

85 64,+ 1

     

65 123,-1

     

71 115,-1

     

73 154,-1

     

73 156,-1

     

77 164,-1

     

77 144,-1

     

79 112,-1

     

83 91,-1

     

我的测试文件是.csv,内容是:

     

65 111

     

68 88

     

70 103

     

73 89

     

82 111

     

82 79

     

83 112

     

84 36

     

85 71

我的代码是

    'use strict';

var so = require('stringify-object');
var Q = require('q');
var svm = require('../lib');
var trainingFile = './archivos/training/340.txt';
var testingFile = './archivos/present/340.txt';

var clf = new svm.CSVC({
    gamma: 0.25,
    c: 1, // allow you to evaluate several values during training
    normalize: false,
    reduce: false,
    kFold: 1 // disable k-fold cross-validation
});

Q.all([
    svm.read(trainingFile),
    svm.read(testingFile)
]).spread(function (trainingSet, testingSet) {
    return clf.train(trainingSet)
        .progress(function(progress){
            console.log('training progress: %d%', Math.round(progress*100));
        })
        .then(function () {
            return clf.evaluate(testingSet);
        });
}).done(function (evaluationReport) {
    console.log('Accuracy against the testset:\n', so(evaluationReport));
});

enter code here

1 个答案:

答案 0 :(得分:1)

你的标签是1还是-1?如果是这样,您还需要知道这些类的测试数据。测试分类器的目的是看它能预测看不见的数据的程度。

作为一个小例子,您可以使用您的训练数据构建分类器:     x_train = [65, 134], [70,98]....... [79, 112], [83, 91]     y_train = [ 1, 1, ....-1, -1]

然后通过传入测试数据来测试分类器。假设您传递了测试数据中的前三个示例,并进行了以下预测。 [65, 111] --> 1 [68, 88] -->-1 [70,103] -->-1 然后计算出它预测的测试数据的数量,但为了做到这一点,您需要先了解测试数据的类别。如果你没有这个,也许你想尝试对你的训练数据进行交叉验证。