/// <summary> /// NeuralNetTeacherクラスを使って、既に生成されている特徴ベクトルをまとめたファイルを読み込ませて学習を行う part2 /// </summary> public static void Iris_learning2() { var minPara = new MinParameter(13, 1, 0.1); var NNteacher = new Teacher(minPara); // ニューラルネットの教師クラスのインスタンスを生成 NNteacher.Setup("教師データの例 Iris"); int timeOfLearning = 10000; for (int i = 1; i <= 2; i++) // 2回ループさせる { NNteacher.Learn(timeOfLearning); NNteacher.SaveDecisionChart("decision chart " + (i * timeOfLearning).ToString() + ".csv"); } NNteacher.SaveLearnigOutcome(); // 学習した結合係数などをファイルに保存 // これ以降は識別テスト var feature = new Feature("5.4 3.4 1.7 0.2"); // セトナのデータ // 学習済みのニューラルネットワーククラスオブジェクトを渡して学習器を構成 var discriminator = new Discriminator(NNteacher.GetNeuralNetwork(), NNteacher.ModelIDs);// これ以降、学習成果を利用して識別を行うことができる。 var test = discriminator.Discriminate(feature, 2); // 結果を降順で2つもらう string outputstr = ""; for (int i = 0; i < test.Length; i++) outputstr += test[i].ID + ", " + test[i].Likelihood.ToString("0.00") + "\n"; Console.WriteLine(outputstr, "識別テストその1の結果"); // ファイルから結合係数を読み込ませても同じ結果が出ることを確認する var discriminator2 = new Discriminator(); discriminator2.Setup(); var test2 = discriminator.Discriminate(feature); // テストを実施し、表示する Console.WriteLine("識別結果: " + test2.ID + ", " + test2.Likelihood.ToString("0.00"), "識別テストその2の結果"); return; }
/// <summary> /// NeuralNetTeacherクラスを使って、既に生成されている特徴ベクトルをまとめたファイルを読み込ませて学習を行う part1 /// </summary> public static void Iris_learning() { var minPara = new MinParameter(15, 1, 0.1); var NNteacher = new Teacher(minPara); // ニューラルネットの教師クラスのインスタンスを生成 NNteacher.Setup("教師データの例 Iris"); // 学習データの入ったフォルダ名を渡して初期化 int timeOfLearning = 10000; // 学習回数(厳密には一致しない) for (int i = 1; i <= 2; i++) // 2回ループさせる { NNteacher.Learn(timeOfLearning); Console.Write(NNteacher.SaveDecisionChart("decision chart " + (i * timeOfLearning).ToString() + ".csv", "\t")); // ファイルへ保存しつつコンソールへ出力する } NNteacher.SaveLearnigOutcome(); // 学習した結合係数などをファイルに保存 var discriminator = new Discriminator(); // 保存したファイルを使用して識別器を生成 discriminator.Setup(); // これ以降、学習成果を利用して識別を行うことができる。このサンプルでは省略。 return; }