java - Encog SVM wont train -


i trying train svm classify 2 spiral data.

my input 3 column csv file, first 2 columns (x, y)-coordinates of point on spiral (not normalised) , third column spiral (class) point belongs to.

i first normalise csv file first 2 columns between 0 , 1 (third column remains unchanged).

then create , train svm follows

    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;  {   train.iteration();   system.out.println("epoch $: " + epoch + " error: " + train.geterror());   epoch++; } while(train.geterror() > 0.01);  train.finishtraining(); 

however, do...while loop ends being infinite loop training error around 0.4 , never changes.

the data set contains around 200 samples , there 2 classes (0 , 1).

can tell me why failing?

edit: here pastebin link 10% of training data.

best regards

bidski

wonderful question. problem svm can't built separation curve spiral data. propose try normalization trick, normalize not according x, y coordinates straight lines, switch polar system of coordinates. , consider archimedean spiral, logarithmic spiral, etc. enter image description here. please @ picture. spiral data require svm built function separate data between class 1 , class 2, , i'm pretty sure not easy task svm. if find way switch spiral data representation linear, svm need built separation between 2 curves, easier.


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -