1

ドキュメントを正規化する次のコードがあります。私のドキュメントには、SmallShuffledTrainingDataCSV を正規化する次のメソッドが含まれています。

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

非常に長い時間がかかるため、1つの列のみを正規化しようとしています。

私のドキュメントには 332k 行と 25 列があります。

ますます小さなドキュメントに分割する以外に、正規化プロセスを高速化する方法はありますか?

分解した場合、正規化では特定の列の最高値と最低値を見つけるためにすべてのレコードを確認する必要があるため、それらを 1 つのドキュメントに結合するにはどうすればよいでしょうか?

4

1 に答える 1

1

まず、ありがとう!この遅さは、CSV ウィザードの分析段階での「非スケーラビリティ」の問題でした。これは、特に大きなファイルで表示されます。上記のコードを使用して問題を再現できました。これの修正をGitHubにチェックしました。ここでコミットを見ることができます。

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

これは Encog 3.3 (まだリリースされていません) に含まれます。ただし、GitHub から修正を入手できます。この修正により、同様のサイズのファイルをわずか数分で正規化できます。

いくつかの他の提案。

この行を追加すると:

norm.Report = 新しい ConsoleStatusReportable();

進行状況の更新情報を取得します。

予測フィールドも指定する必要があります。そうしないと、後でエラーが発生します。このようなもの:

wizard.TargetFieldName = "フィールド:1";

于 2014-04-13T02:23:32.923 に答える