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. . 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
Post a Comment