如何使用Encog标准化CSV文件?

时间:2013-02-26 04:55:26

标签: java neural-network encog

我需要规范化CSV文件。 I followed this article written by Jeff Heaton。这是(部分)我的代码:

File sourceFile = new File("Book1.csv");
File targetFile = new File("Book1_norm.csv");
EncogAnalyst analyst = new EncogAnalyst();
AnalystWizard wizard = new AnalystWizard(analyst);
wizard.wizard(sourceFile, true, AnalystFileFormat.DECPNT_COMMA);
final AnalystNormalizeCSV norm = new AnalystNormalizeCSV();
norm.analyze(sourceFile, false, CSVFormat.ENGLISH, analyst);
norm.setProduceOutputHeaders(false);
norm.normalize(targetFile);

我的代码和文章之间的唯一区别是这一行:

norm.setOutputFormat(CSVFormat.ENGLISH);

我试图使用它,但似乎在Encog 3.1.0中,该方法不存在。我得到的错误就是这个(看起来问题出在行norm.normalize(targetFile)

Exception in thread "main" org.encog.app.analyst.AnalystError: Can't find column: 11700
    at org.encog.app.analyst.util.CSVHeaders.find(CSVHeaders.java:187)
    at org.encog.app.analyst.csv.normalize.AnalystNormalizeCSV.extractFields(AnalystNormalizeCSV.java:77)
    at org.encog.app.analyst.csv.normalize.AnalystNormalizeCSV.normalize(AnalystNormalizeCSV.java:192)
    at IEinSoftware.main(IEinSoftware.java:55)

2 个答案:

答案 0 :(得分:5)

我添加了一个常见问题解答,介绍了如何规范化CSV文件。 http://www.heatonresearch.com/faq/4/2

答案 1 :(得分:1)

这是一个功能......当然你需要创建一个分析师

private EncogAnalyst _analyst;

public void NormalizeFile(FileInfo SourceDataFile, FileInfo NormalizedDataFile)
{
    var wizard = new AnalystWizard(_analyst);
    wizard.Wizard(SourceDataFile, _useHeaders, AnalystFileFormat.DecpntComma);
    var norm = new AnalystNormalizeCSV();
    norm.Analyze(SourceDataFile, _useHeaders, CSVFormat.English, _analyst);
    norm.ProduceOutputHeaders = _useHeaders;
    norm.Normalize(NormalizedDataFile);
}