⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multiclassfisher.m

📁 fisher算法在多类情况下的matlab实现
💻 M
字号:
function [accuracy,predicted]=multiclassfisher(train_data,test_data,train_label,test_label)%UNTITLED1 Summary of this function goes here%   Detailed explanation goes hereclass_num=length(unique(train_label));%多少类mean_by_class=zeros(class_num,size(train_data,2));%各类样本的均值sum_by_class=zeros(class_num,size(train_data,2));%各类样本的总和every_class_num=zeros(1,class_num);%每类包含的样本数for i=1:size(train_data,1)    every_class_num(train_label(i))=every_class_num(train_label(i))+1;    sum_by_class(train_label(i),:)=sum_by_class(train_label(i),:)+train_data(i,:); endfor j=1:class_num   mean_by_class(j,:)=sum_by_class(j,:)/every_class_num(1,j);endSi=cell(1,class_num);for i=1:class_num    Si{i}=zeros(size(train_data,2));endfor i=1:size(train_data,1)    Si{1,train_label(i)}=Si{1,train_label(i)}+(train_data(i,:)-mean_by_class(train_label(i)))'*(train_data(i,:)-mean_by_class(train_label(i)));endW=cell(class_num);%vector for projectionY=cell(class_num);%thresholdfor m=1:class_num    for n=1:class_num        if m~=n        W{m,n}=inv(Si{1,m}+Si{1,n})*(mean_by_class(m,:)-mean_by_class(n,:))';            end    endendfor m=1:class_num    for n=1:class_num        if m~=n        Y{m,n}=W{m,n}'*(sum_by_class(m,:)+sum_by_class(n,:))'/(every_class_num(m)+every_class_num(n));            end    endendpredicted=zeros(length(test_label),class_num);%预测向量for k=1:length(test_label)    for m=1:class_num        for n=1:class_num            if m~=n                J=test_data(k,:)*W{m,n};                if J>Y{m,n}                    predicted(k,m)=predicted(k,m)+1;                else                    predicted(k,n)=predicted(k,n)+1;                end            end        end    endendtemp=zeros(size(test_label));for i=1:length(test_label)    for j=1:class_num        if predicted(i,j)==max(predicted(i,:));            temp(i)=j;        end    endendpredicted=temp;count=0;for k=1:length(test_label)    if predicted(k)==test_label(k)        count=count+1;    endendaccuracy=count/length(test_label);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -