%方式1 当处理奇异数据时,需要设置判别类型为'pseudoLinear' 或者'pseudoQuadratic'
clear;
load popcorn
X = popcorn(:,[1 2]);
%设置第三列全为0,使矩阵奇异
X(:,3) = 0; % a zero-variance column
Y = popcorn(:,3);
ppcrn = fitcdiscr(X,Y);
this = fit(temp,X,Y);
%采用伪线性方法
ppcrn = fitcdiscr(X,Y,'discrimType','pseudoLinear');
meanpredict = predict(ppcrn,mean(X))
%方式2 检查判别误差和混淆矩阵
clear;
load fisheriris
obj = fitcdiscr(meas,species);
resuberror = resubLoss(obj)
resuberror * obj.NumObservations
R = confusionmat(obj.Y,resubPredict(obj))
obj.ClassNames
%方式3 交叉检验
clear;
load fisheriris
quadisc = fitcdiscr(meas,species,'DiscrimType','quadratic');
qerror = resubLoss(quadisc)
cvmodel = crossval(quadisc,'kfold',5);
cverror = kfoldLoss(cvmodel)
%方式4 改变代价和优先级
clear;
%原始分类结果
load fisheriris
obj = fitcdiscr(meas,species);
resuberror = resubLoss(obj)
R = confusionmat(obj.Y,resubPredict(obj))
obj.ClassNames
%修改代价矩阵后结果
obj1 = obj;
obj1.Cost(2,3) = 10;
R2 = confusionmat(obj1.Y,resubPredict(obj1))
%修改优先级后的结果
obj2 = obj;
obj2.Prior = [1 1 5];
R2 = confusionmat(obj2.Y,resubPredict(obj2))
%方式5 简化判别式分类器
%设置多组模型参数,分别生成最优结果
load ovariancancer
rng(1); % For reproducibility
numPred = size(obs,2);
obs = obs(:,randsample(numPred,ceil(numPred/3)));
Mdl = fitcdiscr(obs,grp,'SaveMemory','on','FillCoeffs','off');
[err,gamma,delta,numpred] = cvshrink(Mdl,...
'NumGamma',24,'NumDelta',24,'Verbose',1);
figure;
plot(err,numpred,'k.')
xlabel('Errorrate');
ylabel('Numberofpredictors');
%结果局部放大
axis([0 .1 0 1000])
%所有结果的最小误差
minerr = min(min(err))
%找到最小误差附近容许误差范围的参数组
% Subscripts of err producing minimal error
[p q] = find(err < minerr + 1e-4);
numel(p)
%注意:这里需要将行列位置转换到线性索引,直接采用delta(p,q)不是想要的结果
% Convert from subscripts to linear indices
idx = sub2ind(size(delta),p,q);
[gamma(p) delta(idx)]
%满足条件的参数组预测参数个数与原始预测数百分比
numpred(idx)/ceil(numPred/3)*100
%如果需要更少的预测数,那么需要忍耐更高的错误率
low200 = min(min(err(numpred <= 200)));
lownum = min(min(numpred(err == low200)));
[low200 lownum]
%注意:此时r和s个数都为1时,delta(r,s)才等价于上面提到的delta(idx)
[r,s] = find((err == low200) & (numpred == lownum));
[gamma(r); delta(r,s)]
%采用这组参数设置模型参数
Mdl.Gamma = gamma(r);
Mdl.Delta = delta(r,s);
%比较在相同的Gamma参数情况下,不同的Delta参数,对于结果的影响
% Create the Delta index matrix
indx = repmat(1:size(delta,2),size(delta,1),1);
figure
subplot(1,2,1)
imagesc(err);
colorbar;
colormap('jet')
title 'Classification error';
xlabel 'Delta index';
ylabel 'Gamma index';
subplot(1,2,2)
imagesc(numpred);
colorbar;
title 'Number of predictors in the model';
xlabel 'Delta index' ;
ylabel 'Gamma index' ;
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab实现监督法学习(源码).rar
共22个文件
m:22个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
3星 · 超过75%的资源 2 下载量 183 浏览量
2023-07-24
10:48:59
上传
评论
收藏 12KB RAR 举报
温馨提示
基于Matlab实现监督法学习(源码).rar
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab实现监督法学习(源码).rar (22个子文件)
基于Matlab实现监督法学习(源码)
example12_2_1.m 245B
example12_2_2.m 2KB
example12_5_5.m 305B
example12_3_2.m 465B
example12_2_3.m 3KB
example12_0_1.m 3KB
example12_5_1.m 398B
example12_6_1.m 272B
example12_1_1.m 538B
example12_4_1.m 136B
example12_3_3.m 526B
example12_7_2.m 144B
example12_5_2.m 260B
example12_3_4.m 380B
example12_7_1.m 160B
example12_3_1.m 866B
example12_1_2.m 323B
example12_4_2.m 727B
example12_7_3.m 506B
example12_5_4.m 1KB
example12_3_5.m 861B
example12_5_3.m 843B
共 22 条
- 1
资源评论
- hope_HY2023-12-26?为什么要上传这种,还收费
- 2301_762743902023-12-28总算找到了自己想要的资源,对自己的启发很大,感谢分享~
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2180
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功