Я пытаюсь обучить SVM, чтобы классифицировать две спиральные данные.Encog SVM wont train
Мой вход представляет собой файл с тремя столбцами 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();
Однако делать ... в то время как цикл заканчивает тем, что бесконечный цикл, как ошибка обучения составляет около 0,4, и это никогда не изменится.
Набор данных содержит около 200 выборок и существует только два класса (0 и 1).
Может ли кто-нибудь сказать мне, почему это не удается?
EDIT: Here is a pastebin link примерно до 10% от данных обучения.
С наилучшими пожеланиями
Bidski
Можете ли вы поделиться фрагментом нормализованных данных? –
Отредактировано для добавления ссылки на образцы данных. – Bidski