NB
Matlab代码
例子1-系统fitcnb做多分类
%朴素贝叶斯算法MATLAB实现
clear all; close all; clc;
load fisheriris %载入样本数据
X=meas; %训练样本矩阵
Y=species; %标签向量
Mdl=fitcnb(X,Y) %训练朴素贝叶斯模型
Mdl.ClassNames %查看模型中的分类名称
Mdl.Prior %查看模型中的先验概率
predict(Mdl,[1 0.2 0.4 2]) %预测新样本的类别
例子2-使用函数 fitcnb 时还可以预先指定先验概率
load fisheriris
X = meas;
Y = species;
classNames = {'setosa','versicolor','virginica'}; %指定类的顺序
prior = [0.5 0.2 0.3]; %给定每个类的先验概率
Mdl = fitcnb(X,Y,'ClassNames',classNames,'Prior',prior);
%按指定的类序和先验概率创建新模型
CVMdl = crossval(Mdl); %对Mdl模型k折交叉验证
Loss = kfoldLoss(CVMdl), %损失率
rng(1); %可重复性
defaultPriorMdl = Mdl;
FreqDist = cell2table(tabulate(Y)); %混淆矩阵
defaultPriorMdl.Prior = FreqDist{:,3}; %先验概率用1/3,1/3,1/3
defaultCVMdl = crossval(defaultPriorMdl); %k折交叉验证
defaultLoss = kfold