2013-02-26 36 views
6

我需要規範化一個CSV文件。 I followed this article written by Jeff Heaton。這是我的代碼(部分):如何使用Encog標準化CSV文件?

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) 

回答

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); 
} 
+2

哇...我正在尋找這個功能,因爲我失去了原來使用它的項目。我忘記了我是在3月份寫回來的!我使用Encog庫搜索了一個標準化的CSV文件,並且找到了我自己的文章!我幫助我的未來自我...完美!如果我能我會upvote我過去的自我的答案! – 2015-12-13 22:36:37