【发布时间】:2015-07-04 12:45:49
【问题描述】:
我正在尝试训练 SVM 对两个螺旋数据进行分类。
我的输入是一个 3 列的 CSV 文件,前两列是螺旋上一个点的 (x, y) 坐标(未标准化),第三列是该点所属的螺旋(类) .
我首先对 CSV 文件进行规范化,使前两列介于 0 和 1 之间(第三列保持不变)。
然后我创建并训练一个 SVM,如下所示
CSVNeuralDataSet trainingSet = new CSVNeuralDataSer(normaliseCSV("/path/to/data/file"), 2, 1, false);
SVM svm = new SVM(2, false);
final SVMSearchTrain train = new SVMSearchTrain(svm, trainingSet);
int epoch = 0;
do {
train.iteration();
System.out.println("Epoch $: " + epoch + " Error: " + train.getError());
epoch++;
} while(train.getError() > 0.01);
train.finishTraining();
但是,do...while 循环最终成为一个无限循环,因为训练误差约为 0.4,而且它永远不会改变。
数据集包含大约 200 个样本,只有两个类(0 和 1)。
谁能告诉我为什么会失败?
编辑:Here is a pastebin link 到大约 10% 的训练数据。
【问题讨论】:
-
能否分享一段标准化数据?
-
已编辑以将 pastebin 链接添加到示例数据。