• 大小: 143KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: Matlab
  • 标签: 模式识别  

资源简介

一个简单的贝叶斯高斯分类的作业,用matlab编写,入门用

资源截图

代码片段和文件信息

%读入训练集
clear all;
close all;
clc

D=load(‘data2.txt‘);

%计算初始EM的初始参数值
%  G 为类别数
% class(1,G) 为类别集 class(1i)第i类的类标
%  D 训练集 D为m*n,
class=[012];
G=3;
a=zeros(1G);
% GG 为3维类别矩阵
[m n]=size(D);
data=D(:1:n-1);
%GG1=[];
%GG2=[];
%GG3=[];
GG=zeros(mn-1G);
k=zeros(1G);
for i=1:m
    for j=1:G
        if D(in)==class(1j)
              k(1j)=k(1j)+1;         %数据类别归类
            GG(k(1j):j)=data(i:);
           break;
            %k(1j)=k(1j)+1;
        end
    end
end


%====================先验概率p(ci)
%初始化ai
mi=zeros(1G);
for i=1:G
%     [mmnn]=size(GG(::i));
%     mi(1i)=mm-1;
%     a(1i)= mi(1i)/m;
 mi(1i)=k(1i);
 a(1i)= mi(1i)/m;     
end

%===================求均值
%初始化Ui
U=zeros(Gn-1);
 for i=1:G
   for j=1:mi(1i)
       U(i:)=U(i:)+GG(j:i);
   end
     U(i:)=U(i:)/mi(1i);
 end
    %==或者
    %  uu1=mean(GG(1:k(11):1));   y=GG(1:k(11):1);    是一个42*40 的矩阵,
    %  k(11)表示的是第一类的行数 %  均值是1*40的矩阵 1:k(11) 
    %  uu2=mean(GG(1:k(12):2));
    %  uu3=mean(GG(1:k(13):3));
    %  uu=[uu1;uu2;uu3];
 
%==========================初始化协方差 Cg (矩阵) 
C=zeros(n-1n-1G);
for i=1:G
    for j=1:mi(1i)
        C(::i)=C(::i)+(GG(j:i)- U(i:))‘*(GG(j:i)- U(i:));   %   行*列数 为属性个数40*40
    end
    C(::i)=C(::i)/mi(1i);
end



%参数已确定,进行类别判断

%读入测试集
test=load(‘testdata.txt‘);
testdata=test(:1:n-1);
[mtestntest]=size(testdata);
class_p=zeros(Gmtest);

 
 
   
    for i=1:G
        for j=1:mtest
            for kk=1:G    
           class_p(ij)=class_p(ij)+a(1kk)*GaoSi_probability(U(kk:)‘C(::kk)testdata(j:)‘);    %分母: 对i有3个类别值进行求和p(ci)p(testdata(j:)‘|ci)
            end
             class_p(ij)=a(1i)*GaoSi_probability(U(i:)‘C(::i)testdata(j:)‘)/class_p(ij);  % p(ci|testdata(j:)‘)
        end
    end
   
forecast_class=zeros(mtest1);
for i=1:mtest
   guodu=find(class_p(:i)==max(class_p(:i)));  %找到p(ci|testdata(j:)‘)中的最大一个的位置
   forecast_class(i1)=class(guodu(11));     %class=[0 1 2];
end
resultdata=[testdata forecast_class(:1)];

%计算准确率
correct_probability=0;
    
for i=1:mtest
    if test(in)==forecast_class(i1)
        correct_probability=correct_probability+1;
    end
end

correct_probability=correct_probability/mtest



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2480  2011-12-05 11:18  bayes\byes.m

     文件      99838  2011-07-25 16:30  bayes\data.txt

     文件      45998  2011-07-25 16:30  bayes\data1.txt

     文件      28078  2011-07-25 16:30  bayes\data2.txt

     文件        416  2011-12-05 11:47  bayes\GaoSi_probability.m

     文件     138375  2011-07-25 16:30  bayes\testdata.txt

     文件     131535  2011-07-25 16:30  bayes\undata.txt

     目录          0  2011-12-23 11:07  bayes

----------- ---------  ---------- -----  ----

               446720                    8


评论

共有 条评论