【发布时间】:2017-02-25 06:38:00
【问题描述】:
如何在 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,每个都有自己的参数,即权重和偏差以及分别对应于 3 个类的 3 个单独的输出。在训练 SVM-A 时,另外两个类 B 和 C 作为负训练集,而 A 作为正训练集,那么在训练 SVM-B 时,A 和 C 是负训练集,而对于 SVM-C,A 和 B 是负训练集。这就是所谓的 one vs all 训练过程。
我试了,结果出错了
我的训练文件是 .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
70103
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
【问题讨论】:
标签: machine-learning svm libsvm