我準備了神經網絡輸入數據的csv文件,以及可以測試我的神經網絡的csv文件。結果並不令人滿意。我試圖增加/減少輸入數據的大小。也許我失去了一些東西,我會很高興,如果有人能的一些技巧等。這裏是我的encog代碼:我在右笏嗎?預測股票價格
//input data
File file = new File("path to file");
CSVFormat format = new CSVFormat('.', ',');
VersatileDataSource source = new CSVDataSource(file, false, format);
VersatileMLDataSet data = new VersatileMLDataSet(source);
data.getNormHelper().setFormat(format);
ColumnDefinition wig20OpenN = data.defineSourceColumn("wig20OpenN", 0, ColumnType.continuous);
(...)
ColumnDefinition futureClose = data.defineSourceColumn("futureClose", 81, ColumnType.continuous);
data.analyze();
data.defineSingleOutputOthersInput(futureClose);
EncogModel model = new EncogModel(data);
//TYPE_RBFNETWORK, TYPE_SVM, TYPE_NEAT, TYPE_FEEDFORWARD <- this type of method i was trying
model.selectMethod(data, MLMethodFactory.TYPE_SVM);
model.setReport(new ConsoleStatusReportable());
data.normalize();
model.holdBackValidation(0.001, true, 10);
model.selectTrainingType(data);
MLRegression bestMethod = (MLRegression)model.crossvalidate(20, true);
// Display the training and validation errors.
System.out.println("Training error: " + model.calculateError(bestMethod, model.getTrainingDataset()));
System.out.println("Validation error: " + model.calculateError(bestMethod, model.getValidationDataset()));
NormalizationHelper helper = data.getNormHelper();
File testingData = new File("path to testing file");
ReadCSV csv = new ReadCSV(testingData, false, format);
String[] line = new String[81];
MLData input = helper.allocateInputVector();
while(csv.next()) {
StringBuilder result = new StringBuilder();
for(int i = 0; i <81; i++){
line[i] = csv.get(i);
}
String correct = csv.get(81);
helper.normalizeInputVector(line,input.getData(),false);
MLData output = bestMethod.compute(input);
String irisChosen = helper.denormalizeOutputVectorToString(output)[0];
result.append(Arrays.toString(line));
result.append(" -> predicted: ");
result.append(irisChosen);
result.append("(correct: ");
result.append(correct);
result.append(")");
System.out.println(result.toString());
}
// Delete data file and shut down.
filename.delete();
Encog.getInstance().shutdown();
我試圖到目前爲止是改變MLMethodFactory
,但這裏有問題,只有TYPE_RBFNETWORK
,TYPE_SVM
,TYPE_NEAT
,TYPE_FEEDFORWARD
這種類型的正常工作,例如,如果我把它改成TYPE_PNN
我有例外以下:
Exception in thread "main" org.encog.EncogError: Please call selectTraining first to choose how to train.
好吧,我從我應該使用這種方法的文檔知道:
selectTraining(VersatileMLDataSet dataset, String trainingType, String trainingArgs)
但是,traningtype和triningArgs的字符串類型很混亂。
最後一個問題如何在訓練到文件後保存神經,並加載它來檢查訓練數據?因爲我想分開。
編輯:我忘了輸入數據的大小是1500
你能介紹一下你的文本文件中有什麼嗎?什麼是標準化的結果? –
從輸入或輸出?或兩者? – Pulkownik
從這兩個文件 –