gpt4 book ai didi

c# - 雅阁机器学习 knn.decide indexOutOfRangeException

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:12 28 4
gpt4 key购买 nike

我正在尝试使用 Accord 库实现的 k 最近邻。首先,我使用了

        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 个整数,我首先将其转换为 double 并用作输入。然后我有一组 15000 个 1 个字符串,我首先将其转换为 char 以获得整数值,然后将它们分类为输出。
输入和输出的一些屏幕截图。 Inputs Outputs

我还将输入的数量设置为 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]。
这是程序崩溃前输入[]的截图Input before the crash

决定方法文档对我没有帮助,但我会留下链接:
knn decide documentation
knn documentation

编辑:stack trace

最佳答案

所以,这个特定问题的答案很奇怪,我在 knn 算法的文档中找不到它。
问题是 knn.Learn 部分的输出必须从 0 开始并向上计数。将大写字符转换为 int 至少给了我 65 ('A') ,我更改了代码的第一个

                outputs[list_counter] = (char.Parse(training_set[list_counter].letter)) -65 ;

现在一切都像发条一样运转!

关于c# - 雅阁机器学习 knn.decide indexOutOfRangeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44302667/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com