正态分布模式的贝叶斯分类
来源:互联网 发布:miui免费网络短信 编辑:程序博客网 时间:2024/05/17 03:23
我不讲两类分类,这次换成三分类,其余多维特征,多分类以此类推,没必要再讲。无非是多几个线性判决。
随机产生三种不同均值方差的三类随机点,可以到资源里面下载(免费)做实验。
可以有下图知道,3类不同的点,需要3个判别函数。下面我只讲蓝色点和红色点得到判别函数的求法,看懂程序就最好了。
假设P(w1)=P(w2)=p(w3).
<span style="font-family:Times New Roman;font-size:14px;">% Set parameters%%P = 2; % number of features%N_train = 3000; % number of training samples%N_test = 1500; % number of test samples% Define the two (P) classes (two 2D normal distributions)%mu1 = [1; -1]; % mean of data1%sigma1 = [1, .5; .5, 1]; % covariance of data1%mu2 = [-1; 2]; % mean of data2%sigma2 = [1, 0.1; 0.1, 1]; % covariance of data2% Generate training samples from the two distributions%train_data1 = mvnrnd(mu1,sigma1,N_train);%train_data2 = mvnrnd(mu2,sigma2,N_train);load('train_po.mat');load('train_ne.mat');load('train_peo.mat');hold on; box on;plot(train_data1(1,:), train_data1(2,:), 'ro');plot(train_data2(1,:), train_data2(2,:), 'b+');plot(train_data3(1,:), train_data3(2,:), 'g>');axis([-4 6 -6 10]);legend({'Class 1 (Training)','Class 2 (Training)', 'Class 3(Training)'});m1=mean(train_data1,2);m2=mean(train_data2,2);m3=mean(train_data3,2);J1=repmat(m1,1,3000);J2=repmat(m2,1,3000);J3=repmat(m3,1,3000);C1=(1/3000)*(train_data1-J1)*(train_data2-J2)';C2=(1/3000)*(train_data1-J1)*(train_data3-J3)';C3=(1/3000)*(train_data3-J3)*(train_data2-J2)';d1=(m1-m2)'*inv(C1);d2=(m1-m3)'*inv(C2);d3=(m3-m2)'*inv(C3);K1=1/2*m1'*inv(C1)*m1-1/2*m2'*inv(C1)*m2;K2=1/2*m1'*inv(C2)*m1-1/2*m3'*inv(C2)*m3;K3=1/2*m3'*inv(C3)*m3-1/2*m2'*inv(C3)*m2;hold onx=-4:0.01:1.2;y=K1/d1(2)-(d1(1)*x)/d1(2);plot(x,y,'k-','LineWidth', 2);hold onx=0.9:0.01:6;y=K2/d2(2)-(d2(1)*x)/d2(2);plot(x,y,'k-','LineWidth', 2);hold onx=-4:0.01:0.7;y=K3/d3(2)-(d3(1)*x)/d3(2);plot(x,y,'k-','LineWidth', 2);</span>
结果图
0 0
- 正态分布模式的贝叶斯分类
- 机器学习_正态分布下的贝叶斯分类器
- 正态分布的随机数发生器
- 正态分布的前世今生
- 正态分布的前世今生
- 有用的多元正态分布
- 正态分布的前世今生
- 正态分布的生成
- 正态分布的由来
- 正态分布的前世今生
- R的正态分布函数
- 正态分布的读后感
- 正态分布随机数的产生
- 正态分布的一些事儿
- 正态分布的前世今生
- 正态分布随机数的产生
- 模式的分类
- 架构模式的分类
- Filesystem closed
- Visual Studio2010新特性--auto 数据类型自动类型判别
- Eclipse中Android显示注释文档的办法和Android源码的显示办法
- 第11周 项目6-6 输出1000以内所有回文素数
- C C++相互调用实例
- 正态分布模式的贝叶斯分类
- 程序猿之---C语言细节19(来找茬,由/* */ 引起的注释错误)
- Eclipse中使用JUnit进行单元测试
- hihocoder第16周(RMQ-ST算法)
- 协议栈处理中的conntrack HASH查找/Bloom过滤/CACHE查找/大包与小包/分层处理风格
- 一个项目引出的对ORACLE中带参视图、存储过程、函数、程序包的使用
- 平衡查找树之红黑树
- POJ 1113 Wall (凸包)
- 求数组中最长的连续序列(Longest Consecutive Sequence )