c# - 如何加快 Encog.NET 中的标准化速度

标签 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 列。

除了将其分解为越来越小的文档之外,还有什么办法可以加快规范化过程吗?

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

最佳答案

首先,谢谢!在 CSV 向导的分析阶段,速度缓慢是一个“不可扩展性”问题。这会出现在特别大的文件上。我能够使用上面的代码重现该问题。我刚刚在 GitHub 上检查了这个问题的修复。您可以在此处查看提交。

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

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

其他一些建议。

如果添加此行:

norm.Report = new ConsoleStatusReportable();

您将收到进度更新。

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

wizard.TargetFieldName = "字段:1";

关于c# - 如何加快 Encog.NET 中的标准化速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23021492/

相关文章:

c# - 使用 BsonSerializer 将 Json 反序列化为 Dictionary<string,object> 会导致 FileFormatException

r - 从 SparkR ML 分类函数中提取类概率

mysql - 数据库规范化: How can I tabulate the data?

sql-server - 如何在sql server中存储国家和州

sql - 设计——第六范式

c# - 程序集名称、程序集信息标题和程序集信息产品之间的区别?

C# 泛型和约束

C# 如何使用 Interop 重命名 Excel 工作表

python - 无法预测 fastai 的输出

python - 时间序列传感器数据的多元回归