Java Examples for org.encog.ml.data.basic.BasicMLData
The following java examples will help you to understand the usage of org.encog.ml.data.basic.BasicMLData. These source code samples are taken from different open source projects.
Example 1
| Project: encog-java-core-master File: BasicNetwork.java View source code |
/**
* Compute the output for a given input to the neural network.
*
* @param input
* The input to the neural network.
* @return The output from the neural network.
*/
@Override
public MLData compute(final MLData input) {
try {
final MLData result = new BasicMLData(this.structure.getFlat().getOutputCount());
this.structure.getFlat().compute(input.getData(), result.getData());
return result;
} catch (final ArrayIndexOutOfBoundsException ex) {
throw new NeuralNetworkError("Index exception: there was likely a mismatch between layer sizes, or the size of the input presented to the network.", ex);
}
}Example 2
| Project: shifu-master File: CommonUtils.java View source code |
/**
* Assemble map data to Encog standard input format. If no variable selected(noVarSel = true), all candidate
* variables will be selected.
*
* @param binCategoryMap
* categorical map
* @param noVarSel
* if after var select
* @param modelConfig
* model config instance
* @param columnConfigList
* column config list
* @param rawNsDataMap
* raw NSColumn data
* @param cutoff
* cut off value
* @param alg
* algorithm used in model
* @return data pair instance
* @throws NullPointerException
* if input is null
* @throws NumberFormatException
* if column value is not number format.
*/
public static MLDataPair assembleNsDataPair(Map<Integer, Map<String, Integer>> binCategoryMap, boolean noVarSel, ModelConfig modelConfig, List<ColumnConfig> columnConfigList, Map<NSColumn, String> rawNsDataMap, double cutoff, String alg) {
double[] ideal = { Constants.DEFAULT_IDEAL_VALUE };
List<Double> inputList = new ArrayList<Double>();
for (ColumnConfig config : columnConfigList) {
if (config == null) {
continue;
}
NSColumn key = new NSColumn(config.getColumnName());
if (config.isFinalSelect() && !rawNsDataMap.containsKey(key)) {
throw new IllegalStateException(String.format("Variable Missing in Test Data: %s", key));
}
if (config.isTarget()) {
continue;
} else {
if (!noVarSel) {
if (config != null && !config.isMeta() && !config.isTarget() && config.isFinalSelect()) {
String val = rawNsDataMap.get(key) == null ? null : rawNsDataMap.get(key).toString();
if (CommonUtils.isTreeModel(alg) && config.isCategorical()) {
Integer index = binCategoryMap.get(config.getColumnNum()).get(val == null ? "" : val);
if (index == null) {
// not in binCategories, should be missing value
// -1 as missing value
inputList.add(-1d);
} else {
inputList.add(index * 1d);
}
} else {
inputList.add(computeNumericNormResult(modelConfig, cutoff, config, val));
}
}
} else {
if (!config.isMeta() && !config.isTarget() && CommonUtils.isGoodCandidate(config)) {
String val = rawNsDataMap.get(key) == null ? null : rawNsDataMap.get(key).toString();
if (CommonUtils.isTreeModel(alg) && config.isCategorical()) {
Integer index = binCategoryMap.get(config.getColumnNum()).get(val == null ? "" : val);
if (index == null) {
// not in binCategories, should be missing value
// -1 as missing value
inputList.add(-1d);
} else {
inputList.add(index * 1d);
}
} else {
inputList.add(computeNumericNormResult(modelConfig, cutoff, config, val));
}
}
}
}
}
// god, Double [] cannot be casted to double[], toArray doesn't work
int size = inputList.size();
double[] input = new double[size];
for (int i = 0; i < size; i++) {
input[i] = inputList.get(i);
}
return new BasicMLDataPair(new BasicMLData(input), new BasicMLData(ideal));
}Example 3
| Project: encog-java-examples-master File: OCR.java View source code |
/**
* Used to map neurons to actual letters.
*
* @return The current mapping between neurons and letters as an array.
*/
char[] mapNeurons() {
final char map[] = new char[this.letterListModel.size()];
for (int i = 0; i < map.length; i++) {
map[i] = '?';
}
for (int i = 0; i < this.letterListModel.size(); i++) {
final MLData input = new BasicMLData(5 * 7);
int idx = 0;
final SampleData ds = (SampleData) this.letterListModel.getElementAt(i);
for (int y = 0; y < ds.getHeight(); y++) {
for (int x = 0; x < ds.getWidth(); x++) {
input.setData(idx++, ds.getData(x, y) ? .5 : -.5);
}
}
final int best = this.net.classify(input);
map[best] = ds.getLetter();
}
return map;
}Example 4
| Project: dailyBot-master File: NeuralNetworkAnalysis.java View source code |
private static BasicNetwork generateNeuralNetwork(StrategyId id, Pair currency, boolean isBuy, int iterations, int middleNeurons) throws IOException {
List<SignalHistoryRecord> allEntries = Utils.getStrategyRecords(id, currency);
Collections.shuffle(allEntries);
int validationSize = (int) Math.round(allEntries.size() * 0.2);
double[][] inputs = new double[allEntries.size() - validationSize][];
double[][] outputs = new double[allEntries.size() - validationSize][];
double[][] inputsValidation = new double[validationSize][];
double[][] outputsValidation = new double[validationSize][];
int index = 0;
int indexValidation = 0;
for (SignalHistoryRecord entry : allEntries) {
if (index < inputs.length) {
inputs[index] = entry.getCharacteristics();
outputs[index++] = entry.getOutput();
} else {
inputsValidation[indexValidation] = entry.getCharacteristics();
outputsValidation[indexValidation++] = entry.getOutput();
}
}
test(inputs, outputs);
BasicNetwork network = EncogUtility.simpleFeedForward(inputs[0].length, 50, 0, outputs[0].length, true);
MLDataSet trainingSet = new BasicMLDataSet(inputs, outputs);
System.out.println("Neural Network Results:");
EncogUtility.trainConsole(network, trainingSet, 1);
for (int i = 0; i < inputs.length; i++) {
final MLData output = network.compute(new BasicMLData(inputs[i]));
System.out.println(Arrays.toString(inputs[i]) + ", actual=" + output.getData(0) + ", ideal=" + outputs[i][0]);
}
System.out.println("Validation:");
System.out.println("Validation:");
System.out.println("Validation:");
System.out.println("Validation:");
for (int i = 0; i < inputsValidation.length; i++) {
final MLData output = network.compute(new BasicMLData(inputsValidation[i]));
System.out.println(Arrays.toString(inputsValidation[i]) + ", actual=" + output.getData(0) + ", ideal=" + outputsValidation[i][0]);
}
return network;
}Example 5
| Project: jskat-multimodule-master File: EncogNetworkWrapperTest.java View source code |
/**
* Tests the {@link BasicNetwork} directly with an XOR example.
*/
@Test
@Ignore
public final void testXORDirect() {
BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 2));
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 3));
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 1));
network.getStructure().finalizeStructure();
network.reset();
BasicMLDataSet trainingSet = new BasicMLDataSet();
double[][] input = { { 1.0, 1.0 }, { 1.0, 0.0 }, { 0.0, 1.0 }, { 0.0, 0.0 } };
double[][] output = { // A XOR B
{ 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } };
for (int i = 0; i < input.length; i++) {
trainingSet.add(new BasicMLDataPair(new BasicMLData(input[i]), new BasicMLData(output[i])));
}
double error = 1000.0;
int i = 0;
int iteration = 0;
while (error > MIN_DIFF && iteration < MAX_ITERATIONS) {
i = (i + 1) % trainingSet.size();
Backpropagation trainer = new Backpropagation(network, new BasicMLDataSet(Arrays.asList(trainingSet.get(i))));
trainer.setBatchSize(1);
trainer.iteration();
error = trainer.getError();
iteration++;
}
if (iteration == MAX_ITERATIONS) {
fail("Needed more than " + MAX_ITERATIONS + " iterations. Error: " + error);
} else {
log.debug("Needed " + iteration + " iterations to learn.");
log.debug("Testing network:");
for (int n = 0; n < input.length; n++) {
log.debug("Input: " + input[n][0] + " " + input[n][1] + " Expected output: " + output[n][0] + " Predicted output: " + network.compute(new BasicMLData(input[n])));
}
}
}Example 6
| Project: encog-java-workbench-master File: CreateTrainingData.java View source code |
public static void generateLinear(String name) {
CreateLinearTrainingDialog dialog = new CreateLinearTrainingDialog(EncogWorkBench.getInstance().getMainWindow());
if (dialog.process()) {
double xBegin = dialog.getxBegin().getValue();
double xEnd = dialog.getxEnd().getValue();
int elements = dialog.getElements().getValue();
double b = dialog.getIntercept().getValue();
double m = dialog.getSlope().getValue();
double range = xEnd - xBegin;
double incr = range / elements;
File targetFile = new File(EncogWorkBench.getInstance().getProjectDirectory(), name);
MLDataSet trainingData = new BasicMLDataSet();
for (int i = 0; i < elements; i++) {
double x = xBegin + (i * incr);
double y = (m * x) + b;
MLData inputData = new BasicMLData(new double[] { x });
MLData idealData = new BasicMLData(new double[] { y });
trainingData.add(inputData, idealData);
}
EncogUtility.saveCSV(targetFile, CSVFormat.ENGLISH, trainingData);
}
}Example 7
| Project: guagua-master File: NNWorker.java View source code |
@Override
public void load(GuaguaWritableAdapter<LongWritable> currentKey, GuaguaWritableAdapter<Text> currentValue, WorkerContext<NNParams, NNParams> workerContext) {
++this.count;
if ((this.count) % 100000 == 0) {
LOG.info("Read {} records.", this.count);
}
// use guava to iterate only once
double[] ideal = new double[1];
int inputNodes = NumberFormatUtils.getInt(workerContext.getProps().getProperty(NNConstants.GUAGUA_NN_INPUT_NODES), NNConstants.GUAGUA_NN_DEFAULT_INPUT_NODES);
double[] inputs = new double[inputNodes];
int i = 0;
for (String input : Splitter.on(NNConstants.NN_DEFAULT_COLUMN_SEPARATOR).split(currentValue.getWritable().toString())) {
if (i == 0) {
ideal[i++] = NumberFormatUtils.getDouble(input, 0.0d);
} else {
int inputsIndex = (i++) - 1;
if (inputsIndex >= inputNodes) {
break;
}
inputs[inputsIndex] = NumberFormatUtils.getDouble(input, 0.0d);
}
}
if (i < (inputNodes + 1)) {
throw new GuaguaRuntimeException(String.format("Not enough data columns, input nodes setting:%s, data column:%s", inputNodes, i));
}
int scale = NumberFormatUtils.getInt(workerContext.getProps().getProperty(NNConstants.NN_RECORD_SCALE), 1);
for (int j = 0; j < scale; j++) {
double[] tmpInputs = j == 0 ? inputs : new double[inputs.length];
double[] tmpIdeal = j == 0 ? ideal : new double[ideal.length];
System.arraycopy(inputs, 0, tmpInputs, 0, inputs.length);
MLDataPair pair = new BasicMLDataPair(new BasicMLData(tmpInputs), new BasicMLData(tmpIdeal));
double r = Math.random();
if (r >= 0.5d) {
this.trainingData.add(pair);
} else {
this.testingData.add(pair);
}
}
}Example 8
| Project: AutoEncoder-master File: AutoEncoder.java View source code |
public void setData(double[][] p) {
for (int i = 0; i < p.length; i++) {
double[] input = p[i];
MLDataPair pair = new BasicMLDataPair(new BasicMLData(input), new BasicMLData(input));
dataset.add(pair);
}
}