Accordライブラリが実装するk-nearest-neighborを使用しようとしています。すべての まず、私はAccord Machine Learning knn.decide indexOutOfRangeException
double[][] inputs = new double[15000][];
int[] outputs = new int[15000];
for (int list_counter= 0; list_counter < training_set.Count; list_counter ++) {
outputs[list_counter] = (char.Parse(training_set[list_counter].letter));
double[] input = new double[16];
for(int i =0; i< 16; i++) {
input[i] = (double)training_set[list_counter].integers[i];
}
inputs[list_counter] = input;
}
var knn = new KNearestNeighbors(k: 4);
knn.NumberOfInputs = 16;
Console.WriteLine("Learning the algorithm");
knn.Learn(inputs, outputs);
にアルゴリズムKNN教えるために、コードのこの部分を使用し、私は私が最初に倍増し、入力として使用するために変換され、整数の15000セットを持っています。それから私は最初に整数値を取得するためにcharに変換し、出力としてそれらを分類する1文字の文字列の15000セットがあります。
入力と出力のいくつかのスクリーンショット。
この種類の問題を避けるため、入力数を16に設定しました。 しかし、コードのこの作品
for (int list_counter = 0; list_counter < validation_set.Count; list_counter++) {
double[] input = new double[16];
for (int i = 0; i < 16; i++) {
input[i] = (double)validation_set[list_counter].integers[i];
}
int answer = knn.Decide(input);
私はknn.decideしようとするたびに、私はIndexOutOfRangeExceptionを取得するに。これは、私は二重の[16]配列の入力(配列[15000]を挿入するために、まったく同じロジックを使用するので、奇妙なようだ。
ここでプログラムが
決める方法をクラッシュする前に、[]入力のスクリーンショットですドキュメントには、私を助けていなかったが、私はリンクを残しておきます:
knn decide documentation
knn documentation