1

次のエラーが表示されます。

Warning: TRAINING can only contain
non-negative integers when
'Distribution' is set to 'mn'. Rows of
TRAINING with invalid values will be
removed. 
> In NaiveBayes.fit at 317
??? Error using ==>

??? Error using ==>
NaiveBayes.fit>mnfit at 647
At least one valid observation in each
class is required.

Error in ==> NaiveBayes.fit at 496
            obj =  mnfit(obj,training,
            gindex);

これは私が持っているものです:

training_data = Testdata; 
target_class = TestDataLabels;

%# train model
nb = NaiveBayes.fit(training_data, target_class, 'Distribution', 'mn');

%# prediction
class1 = nb.predict(UnseenTestdata); 

%# performance
cmat1 = confusionmat(UnseenTestDataLabels, class1);
acc1 = 100*sum(diag(cmat1))./sum(cmat1(:));
fprintf('Classifier1:\naccuracy = %.2f%%\n', acc1);
fprintf('Confusion Matrix:\n'), disp(cmat1)

誰かが疑問に思っている場合、データセットは 4940201x42 です。

4

1 に答える 1

1

2つの問題があります。

まず、多項分布の場合、MATLABはデータに負でない整数値を持たせたいと考えています。そして第二に、少なくともいくつかのクラスでは、有効な観察がないようです。これは、NAN、INF、またはTestdataの行の正でない値が原因である可能性があります。

実際、エラーが示すように、「無効な行は削除されます」...したがって、無効な行が削除されたに違いありません...

于 2012-11-21T16:16:08.177 に答える