ドットネットコア1.1でAccord.net 3.7.0を使用しています。Accord.net NaiveBayesLearning "インデックスが配列の境界外にありました"
私が使用するアルゴリズムはナイーブなベイジアンです。次のように学習メカニズムのソースコードは次のとおりです。
public LearningResultViewModel NaiveBayes(int[][] inputs, int[] outputs)
{
// Create a new Naive Bayes learning
var learner = new NaiveBayesLearning();
// Learn a Naive Bayes model from the examples
NaiveBayes nb = learner.Learn(inputs, outputs);
#region test phase
// Compute the machine outputs
int[] predicted = nb.Decide(inputs);
// Use confusion matrix to compute some statistics.
ConfusionMatrix confusionMatrix = new ConfusionMatrix(predicted, outputs, 1, 0);
#endregion
LearningResultViewModel result = new LearningResultViewModel()
{
Distributions = nb.Distributions,
NumberOfClasses = nb.NumberOfClasses,
NumberOfInputs = nb.NumberOfInputs,
NumberOfOutputs = nb.NumberOfOutputs,
NumberOfSymbols = nb.NumberOfSymbols,
Priors = nb.Priors,
confusionMatrix = confusionMatrix
};
return result;
}
私は少しのデータにコードのこの部分をテストしているが、データが増加したとして
インデックスが配列の境界外です
エラーが発生しました。
私はLearn
メソッドでナビゲートできませんので、何をすべきかわかりません。実行時のスクリーンショットはこれです:
エキストラ情報、ノー内部例外なしIDEA!
TG。
// UPDATE_1蛇腹画像が示すように***
入力アレイは、180×4行列(配列)である。
各行に4列を有します。ここに示すように、手(必要であれば、私はあまりにもそのビデオを共有することができます!!!)
によって確認された出力配列は180です:
のみ0と1(私は共有することができますが含まれていますそのビデオも必要ならば!!!)。
そしてNaiveBayesinLearningドキュメントについて
はここにある:このページのより多くの例底部:
そしてここlearn
メソッドのドキュメント:
私はあなたのことを推測しているかもしれないと思うかもしれません。あなたの 'inputs'配列は長方形ですか? 'Learn'についてのドキュメントはありますか?出力配列が特定の入力配列などと同じ長さであることを期待していますか?その 'Learn'メソッドのライブラリコードを逆コンパイルして、どのように配列にアクセスするのかを確認する必要があります –
throwするコード例外として、あなたはそのメソッドに渡すものはわかりませんが、なぜ失敗するのか推測できますか? – oerkelens
@CaiusJard前に遭遇したことがあるかもしれません。しかし、私はあなたの推測をテストすることも大丈夫です。はい、この例では、入力は180×4の配列で、出力は180のベクトルです。 – ConductedClever