2
我試圖使用Accord庫實現的k最近鄰居。所有的 首先,我使用Accord機器學習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整數集,這是我首先轉換到加倍和用作輸入的。然後我有一個15000個1字符串的集合,我首先將其轉換爲char來獲取整數值,然後將它們分類爲輸出。
輸入和輸出的一些屏幕截圖。
我也將輸入數設置爲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