package org.neuroph.samples;
import java.util.Arrays;
import org.neuroph.core.NeuralNetwork;
import org.neuroph.core.data.DataSet;
import org.neuroph.core.data.DataSetRow;
import org.neuroph.core.events.LearningEvent;
import org.neuroph.core.events.LearningEventListener;
import org.neuroph.nnet.RBFNetwork;
import org.neuroph.nnet.learning.LMS;
import org.neuroph.nnet.learning.RBFLearning;
/**
* TODO: use k-nearest neighbour to tweak sigma
* @author zoran
*/
public class RBFClassificationSample implements LearningEventListener {
/**
* Runs this sample
*/
public static void main(String[] args) {
(new RBFClassificationSample()).run();
}
public void run() {
// get the path to file with data
String inputFileName = "data_sets/sine.csv";
// create MultiLayerPerceptron neural network
RBFNetwork neuralNet = new RBFNetwork(1, 15, 1);
// create training set from file
DataSet dataSet = DataSet.createFromFile(inputFileName, 1, 1, ",", false);
RBFLearning learningRule = ((RBFLearning)neuralNet.getLearningRule());
learningRule.setLearningRate(0.02);
learningRule.setMaxError(0.01);
learningRule.addListener(this);
// train the network with training set
neuralNet.learn(dataSet);
System.out.println("Done training.");
System.out.println("Testing network...");
testNeuralNetwork(neuralNet, dataSet);
}
/**
* Prints network output for the each element from the specified training set.
* @param neuralNet neural network
* @param testSet test data set
*/
public void testNeuralNetwork(NeuralNetwork neuralNet, DataSet testSet) {
for(DataSetRow testSetRow : testSet.getRows()) {
neuralNet.setInput(testSetRow.getInput());
neuralNet.calculate();
double[] networkOutput = neuralNet.getOutput();
System.out.print("Input: " + Arrays.toString( testSetRow.getInput() ) );
System.out.println(" Output: " + Arrays.toString( networkOutput) );
}
}
@Override
public void handleLearningEvent(LearningEvent event) {
LMS lr = (LMS) event.getSource();
System.out.println(lr.getCurrentIteration() + ". iteration | Total network error: " + lr.getTotalNetworkError());
}
}
Ads help maintain this website.