クラス用に SOM ネットワークを作成しましたが、機能せず、その理由もわかりません。単一のニューロンであり、重みベクトルを含む Node クラスがあります。次に、ノードの配列を含む SOM クラスを作成しました。
私の仕事は、このデータからSOMを実装すること です。 )。
コード: http://pastebin.com/GerkTf3C
トレーニング プロセス:
- 一連のトレーニング データとそれが適合するカテゴリからランダムに 1 つの入力ベクトルを取得します。
- ネットワークをアクティブにして、距離の配列を取得します。これにより、特定のニューロンが入力ベクトルとどのように異なるかがわかります。
- 入力ベクトルからの距離が最も小さい勝者ノードのインデックスを取得します。
- 現在の反復の学習率と近傍半径を計算します。
- ノードごとに、勝者ノードまでのユークリッド距離を計算します。
- ノードが勝者の近隣にある場合、重みベクトルをどのように変更および更新し、適合するカテゴリをクラスタ ベクトルに追加する必要があるかを計算します。
- 学習率が一定の限界を超えている間、ステップ 1 から 6 を繰り返します
- 最終的に、各ノードに適合するカテゴリを設定しました。
残念ながら、40% から 80% までの有効性が得られます (非常に不安定で、そのようなランダム性を排除する方法がわかりません) トレーニング セットでテストします (トレーニング セットで 100% の有効性があるはずです)。
PS私の英語とコードの質で申し訳ありませんが、Pythonを学び始めたばかりです。