首页 > 解决方案 > 使用“carsmall”示例数据的朴素贝叶斯模型

问题描述

我想在 Matlab 中用carsmall数据制作一个朴素贝叶斯模型。

这是我的代码:

load carsmall
car = table(Model_Year, Weight);
naive_model = fitcnb(car, Origin)

但我得到这个错误,我不知道为什么。谁能说出错误在哪里?

使用 ClassificationNaiveBayes/findNoDataCombos 时出错(第 256 行)
正态分布不能适合意大利类和预测变量 Model_Year 的组合。数据方差为零。

标签: matlabbayesiannaivebayes

解决方案


由于“意大利”的情况只出现一次,没有方差,正态分布对这种情况没有意义。这会导致 fitcnb 出现错误,删除此元素可以正常工作。我建议你组织更多的代码,也许你以后会在哪里这样做,但是,这是一个很好的做法。因此,这里是新代码,其中包含更多细节。

clear all
load carsmall
X = [Model_Year Weight];
Y = cellstr(Origin);
%The next line helps to see how many classnames you have 
tabulate(Y);
Y(36)=[]; %removing the only case of italy
X (36,:)=[];%removing the only case of italy
%Train a naive Bayes classifier. It is good practice to specify the class order.
naive_model = fitcnb(X, Y,'ClassNames',{'USA','France','Japan','Germany','Sweden'});

推荐阅读