From bffc4a52e605eeda8a10cc09478d8de840df84f7 Mon Sep 17 00:00:00 2001 From: Justin Judd Date: Wed, 17 Jul 2019 11:44:53 +0900 Subject: [PATCH] Replace Panics with error returns to BernoulliNBClassifier Fit method to satisfy base.Classifier interface --- naive/bernoulli_nb.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/naive/bernoulli_nb.go b/naive/bernoulli_nb.go index b128582..e26a318 100644 --- a/naive/bernoulli_nb.go +++ b/naive/bernoulli_nb.go @@ -182,7 +182,7 @@ func NewBernoulliNBClassifier() *BernoulliNBClassifier { // Fill data matrix with Bernoulli Naive Bayes model. All values // necessary for calculating prior probability and p(f_i) -func (nb *BernoulliNBClassifier) Fit(X base.FixedDataGrid) { +func (nb *BernoulliNBClassifier) Fit(X base.FixedDataGrid) error { // Check that all Attributes are binary classAttrs := X.AllClassAttributes() @@ -190,14 +190,14 @@ func (nb *BernoulliNBClassifier) Fit(X base.FixedDataGrid) { featAttrs := base.AttributeDifference(allAttrs, classAttrs) for i := range featAttrs { if _, ok := featAttrs[i].(*base.BinaryAttribute); !ok { - panic(fmt.Sprintf("%v: Should be BinaryAttribute", featAttrs[i])) + return fmt.Errorf("%v: Should be BinaryAttribute", featAttrs[i]) } } featAttrSpecs := base.ResolveAttributes(X, featAttrs) // Check that only one classAttribute is defined if len(classAttrs) != 1 { - panic("Only one class Attribute can be used") + return fmt.Errorf("Only one class Attribute can be used") } // Number of features and instances in this training set @@ -258,6 +258,7 @@ func (nb *BernoulliNBClassifier) Fit(X base.FixedDataGrid) { } nb.fitOn = base.NewStructuralCopy(X) + return nil } // Use trained model to predict test vector's class. The following