我有以下代码来规范我的文档。我的文档包含以下方法来规范我的SmallShuffledTrainingData
CSV。
static void Normalize()
{
Console.WriteLine("Normalizing...");
var analyst = new EncogAnalyst();
var wizard = new AnalystWizard(analyst);
wizard.Wizard(SmallShuffledTrainingData, true, AnalystFileFormat.DecpntComma);
// customer id
analyst.Script.Normalize.NormalizedFields[0].Action = Encog.Util.Arrayutil.NormalizationAction.PassThrough;
var norm = new AnalystNormalizeCSV();
norm.Analyze(SmallShuffledTrainingData, true, CSVFormat.English, analyst);
norm.ProduceOutputHeaders = true;
norm.Normalize(SmallShuffledTrainingDataNormalized);
analyst.Save(AnalystFile);
}
我只想规范化一列,因为它花费了这么长时间。
我的文档有332,000行和25列。
除了将其分解成越来越小的文档之外,还有什么方法可以加快标准化过程吗?
如果我将其分解,由于规范化需要查看所有记录以找到给定列的最高和最低值,我怎么可能将它们组合到一个文档中?
最佳答案
首先,谢谢!速度缓慢是CSV向导分析阶段的“不可扩展性”问题。这将显示在特别大的文件上。我可以使用上面的代码重现该问题。我刚刚在GitHub中检查了此修复程序。您可以在此处查看提交。
https://github.com/encog/encog-dotnet-core/commit/4f168c04cfd85d647f18dca5c7a2a77fff50c1e5
这将进入Encog 3.3(尚未发布)。但是您可以从GitHub获取修复程序。有了此修复程序,我可以在短短几分钟内标准化大小相似的文件。
其他一些建议。
如果添加此行:
norm.Report = new ConsoleStatusReportable();
您将获得进度更新。
您还需要指定预测字段,否则稍后将遇到错误。像这样的东西:
wizard.TargetFieldName =“ field:1”;