如何加速Encog.NET中的规范化

时间:2014-04-11 19:56:36

标签: c# machine-learning normalization encog

我有以下代码来规范化我的文档。我的文档包含以下方法来规范化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);
}

我只是试图规范化一个列,因为它花了这么长时间。

我的文档有332k行和25列。

除了将其分解为越来越小的文档之外,还有加速规范化过程吗?

如果我确实将其分解,我怎么可能将它们合并到一个文档中,因为规范化需要查看所有记录以找到给定列的最高值和最低值?

1 个答案:

答案 0 :(得分:1)

首先,谢谢!缓慢是一种不可扩展性"在CSV向导的分析阶段发出问题。这将显示在特别大的文件上。我能够使用上面的代码重现该问题。我刚刚在GitHub中检查了一个修复程序。你可以在这里看到提交。

https://github.com/encog/encog-dotnet-core/commit/4f168c04cfd85d647f18dca5c7a2a77fff50c1e5

这将进入Encog 3.3(尚未发布)。但你可以从GitHub获取修复程序。通过此修复,我可以在几分钟内规范化类似大小的文件。

其他一些建议。

如果你添加这一行:

norm.Report = new ConsoleStatusReportable();

您将获得进度更新。

您还需要指定预测字段,否则稍后会遇到错误。像这样:

wizard.TargetFieldName ="字段:1&#34 ;;