朴素贝叶斯算法matlab代码详细解释

该博客详细介绍了如何使用MATLAB实现基于高斯模型的KNN(K-Nearest Neighbor)分类算法。首先从data1.xlsx文件中读取数据,然后对数据进行预处理,包括提取横坐标、纵坐标和类标签向量,以及创建训练样本矩阵。接着,计算各类样本的属性均值、方差和概率,并用这些信息进行预测。通过比较不同类别的概率,确定每个样本的预测类别,并将结果保存回Excel文件。最后,绘制预测结果的图形,并计算了分类的准确率。
T = xlsread('data1.xlsx',1,'A1 : C1628');
x = T(:,1);  %横坐标向量
y = T(:,2); %纵坐标向量
c = T(:,3); %类标签向量
data = [x,y];  %训练样本矩阵
k = 1500;  %样本数量
T1 = sortrows([x(1:k,1),y(1:k,1),c(1:k,1)],3);%为方便处理按类这一列对样本进行升序排序(整个行的变化会和这一列的变化相同),如果是-3就是降序排列
%T1
temp = zeros(23,5);%用来存储样本中各个属性的均值, 方差和每个类的概率(一共有23类,每一类有两个特征属性,每个属性有均值和方差,那就是四个,再加概率一共五个)
%计算出样本中各个属性的均值, 方差和每个类的概率
for i = 1:23
    X = [];  Y = [];  count = 0;
    for j = 1:k
        if T1(j,3)==i
            X = [X;T1(j,1)];
            Y = [Y;T1(j,2)];
            count = count + 1;
        end
    end
    temp(i,1) = mean(X);  %计算第一个属性的均值
    temp(i,2) = std(X);   %计算第一个属性的方差
    temp(i,3) = mean(Y);  %计算第二个属性的均值
    temp(i,4) = std(Y);   %计算第二个属性的方差
    temp(i,5) = count/k;  %计算第i类别出现的概率
end
%计算预测结果
result = [];
for m = 1:1628
    pre = [];
    for n = 1:23
        PX = 1/temp(n,2)*exp(((data(m,1)-temp(n,1))^2)/-2/(temp(n,2)^2)); %计算P(xi|y=X)(这里省略了分母,并且将样本的概率分布设为正态分布)
        PY = 1/temp(n,4)*exp(((da
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ρ爱上θ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值