精华内容
下载资源
问答
  • 高维多标签分类matlab

    2020-12-30 15:19:01
    高维多标签分类matlab knn,svm,随机森林等算法 784维数据 分为10类
  • 内含有大量多标签多类别分类算法和对应的代码,包括MIML_LPT,MIMLBoost,MIMLSVM,MIMLfast,KISAR,MIMLKNN,MLKNN,DMIMLSVM,MIMLMISVM等等,部分代码含有对应的文献,学习多类标分类的好资源。
  • 使用matlab处理分类数据多标签问题

    千次阅读 2019-01-20 22:33:40
    在使用matlab处理数据标签时, 1,首先要判断这张图片标签是否是符合规则的,对于不符合要舍去。在某些情况下,可能不能完全舍去。那么就需要,根据保留标签的特点,来存储数据。比如 使用case 语句。 2,标签可以...

    在使用matlab处理数据标签时,

    1,首先要判断这张图片标签是否是符合规则的,对于不符合要舍去。在某些情况下,可能不能完全舍去。那么就需要,根据保留标签的特点,来存储数据。比如 使用case 语句。

    2,标签可以过多或者需要融合,可以根据原始图片的特点来融合数据。

     

    展开全文
  • 决策树matlab实现二分类或者多分类

    千次阅读 2018-11-16 17:41:50
    代码解释 maketree函数递归建立树 tree=struct(‘isnode’,1,‘a’,0.0,‘mark’,0.0,...代码可以自动适应不同的分类标签和类别个数 代码 function tree=maketree(D,a) tree=struct('isnode',1,'a',0.0,'mark',...

    代码解释

    maketree函数递归建立树
    tree=struct(‘isnode’,1,‘a’,0.0,‘mark’,0.0,‘child’,{}) 所有分支递归的存在child{}中
    函数gan(D)计算D的信息率
    代码可以自动适应不同的分类标签和类别个数

    代码

    function tree=maketree(D,a) 
    tree=struct('isnode',1,'a',0.0,'mark',0.0,'child',{});%isnode判断是否是分支还是叶子,a表示节点属性,若节点是叶子,a表示分类结果,child是孩子
    tree(1).a=1;%给tree分配一个确切的内存
    if length(unique(D(:,end)))==1%D中样本属于同一类别
        tree.isnode=0;%把tree标记为树叶
        tree.a=D(1,end);%把tree的类别标记为D的类别
        return
    end
    
    if sum(a)==0 ||length(D)==0 %属性划分完毕
        tree.isnode=0;%把tree标记为树叶
        tree.a=mode(D(:,end));%把tree的类别标记为D出现最多的类别
        return
    end
    for i=1:length(a)
        if a(i)==1
            if length(unique(D(:,i)))==1
                tree.isnode=0;%把tree标记为树叶
                tree.a=mode(D(:,end));%把tree的类别标记为D出现最多的类别
                return
            end
        end
    end
    gain=zeros(length(a),1); %保存每个属性的信息增益
    best=zeros(length(a),1); %保存每个属性的最佳划分
    
    for i=1:length(a)
        if a(i)==1
            t=D(:,i);
            t=sort(t);
        
            gain1=zeros(length(t)-1,1);
            for j=1:length(t)-1%二分划分
                ta=(t(j)+t(j+1))/2;
             
                Df=D(D(:,i)<=ta,:);
                Dz=D(D(:,i)>ta,:);
                gain1(j)=ent(D)-(ent(Df)*length(Df(:,end))/length(D(:,end))+ent(Dz)*length(Dz(:,end))/length(D(:,end)));
            end
         
            [gain(i),j]=max(gain1);
            ta=(t(j)+t(j+1))/2;
            best(i)=ta; 
        end
    end
    [g,m]=max(gain);%选择信息增益最大的属性
    D1=D(D(:,m)<=best(m),:);
    D2=D(D(:,m)>best(m),:);
    a(m)=0;
    
    tree.a=best(m); %建立分支
    tree.mark=m;
    % disp('****************************')
    % tree.a
    % tree.mark
    tree.isnode=1;
    tree.child(1)=maketree(D1,a);
    tree.child(2)=maketree(D2,a);
    
    end
    function f=ent(D)%计算信息商
    l=unique(D(:,end));
    if length(D)==0
        f=0;
        return
    end
    f=0;
    t=zeros(length(l),1);
    for i=1:length(D(:,end))
        for j=1:length(l)
            if D(i,end)==l(j)
                t(j)=t(j)+1;
                break;
            end
        end
    end
    n=length(D(:,end));
    for i=1:length(l)
        f=f+(t(i)/n)*log2(t(i)/n);
    end
    f=-f;
    end
    

    测试结果

    在训练集测试结果精度是0.91
    该测试函数是测试随机森林的函数,但不影响测试决策树。

    function randomforest()
    clc
    clear all
    T=1;%bagging采样的次数
    M = importdata('D:\毕业设计\数据集1\australian.txt');  %读取数据
    [sm,sn]=size(M);
    % for i=1:sm             %归一化
    %     mins=min(M(i,1:sn-1));
    %     maxs=max(M(i,1:sn-1));
    %     for j=1:sn-1
    %         M(i,j)=2*(M(i,j)-mins)/(maxs-mins)-1;
    %     end
    % end
    indices=crossvalind('Kfold',M(1:sm,sn),10); %十折交叉,划分训练集和测试集
    testindices=(indices==1); %测试集索引
    trainindices=~testindices;%训练集索引
    trainset=M(trainindices,:); %获取训练集
    testset=M(testindices,:);%获取测试集
    [testm,~]=size(testset);
    [trainm,trainn]=size(trainset);
    
    predict=zeros(trainm,T);
    for t=1:T %开始bagging采样
        D=[];%训练集
        for i=1:trainm%采样
            k=randperm(trainm,1);
            D=[D;trainset(k,:)];
        end
        [~,sn]=size(D);
        a=ones(sn-1,1);%属性集合a,1代表该属性未被划分
      
        tree=maketree(D,a);%递归构造简单决策树
        
        for i=1:trainm
            treet=tree;
            while 1
               
                if treet.isnode==0
                    predict(i,T)=treet.a;
                    break;
                end
                if trainset(i,treet.mark)<=treet.a
                    treet=treet.child(1);
                else
                    treet=treet.child(2);
                end
              
            end
        end
        
    end
    acc=0;
    for i=1:trainm
        if trainset(i,end)==mode(predict(i,:))
            acc=acc+1;
        end
    end
    acc=acc/trainm
    
    
    
     
    end
    
    
    展开全文
  • %% 生成txt格式的图像分类标签 path='D:\人工智能\图像识别数据\'; folders=dir(path);% dir是direcory的缩写,是目录的意思,返回的folders是结构体,包含所有的目录和两个特殊的目录,一个是“.”,代表该文件夹...

    话不多说,直接上代码,有问题请留言

    clc;clear;close;
    %% 生成txt格式的图像分类标签
    path='D:\人工智能\图像识别数据\';
    folders=dir(path);% dir是direcory的缩写,是目录的意思,返回的folders是结构体,包含所有的目录和两个特殊的目录,一个是“.”,代表该文件夹本身,还有一个是“..”,代表该文件夹的上一层文件夹
    fid_train=fopen('D:\人工智能\图像识别数据\train.txt','wt');
    fid_test=fopen('D:\人工智能\图像识别数据\test.txt','wt');
    num_folders=numel(folders);
    for i=3:num_folders
        folders_name=folders(i).name;
        files=dir([path folders_name '\*.jpg']);% 仅列出里面jpg格式的文件
        x=numel(files);
        y=randperm(x);% 打乱图像的顺序
        for j=1:x
            if j<=390
                fprintf(fid_train,'%s %s\n',['\' folders(i).name '\' files(y(j)).name],folders_name);% 在train.txt里面写入目录及标签
            else
                fprintf(fid_test,'%s %s\n',['\' folders(i).name '\' files(y(j)).name],folders_name);% 在test.txt里面写入目录及标签
            end
        end
    end
    fclose(fid_train);
    fclose(fid_test);

    效果如下:

    train.txt

    \1\0483.jpg 1
    \1\0123.jpg 1
    \1\0393.jpg 1
    \1\0458.jpg 1
    \1\0074.jpg 1
    \1\0367.jpg 1
    \1\0236.jpg 1
    \1\0471.jpg 1
    \1\0291.jpg 1
    \1\0052.jpg 1

    ....................

    test.txt

    \1\0056.jpg 1
    \1\0012.jpg 1
    \1\0372.jpg 1
    \1\0010.jpg 1
    \1\0414.jpg 1
    \1\0423.jpg 1
    \1\0355.jpg 1
    \1\0411.jpg 1
    \1\0311.jpg 1
    \1\0138.jpg 1
    \1\0386.jpg 1
    \1\0473.jpg 1
    \1\0178.jpg 1
    ....................

    展开全文
  • 在神经网络和机器学习的结果分析中,常常会用混淆矩阵和ROC曲线来分析识别/分类结果的好坏,而且论文中也经常出现这种图。对于卷积神经网络来说画混淆矩阵很简单,要用到函数plotconfusion,格式为plotconfusion...

    在神经网络和机器学习的结果分析中,常常会用混淆矩阵和ROC曲线来分析识别/分类结果的好坏,而且论文中也经常出现这种图。对于卷积神经网络来说画混淆矩阵很简单,要用到函数plotconfusion,格式为plotconfusion(实际标签,预测标签),画出来是这样的:
    混淆矩阵
    实际标签是我们提前就知道的,预测标签在神经网络训练并测试后会得到。
    对于支持向量机来说如何画混淆矩阵呢?其实也很简单,只不过网上很少有代码,我看的也是稀里糊涂的,昨天看到今天才弄明白,所以想分享给大家,其实很简单的,用的也是plotconfusion函数。
    支持向量机的实际标签和预测标签是数值形式的,而这个函数要求的是分类数组形式的,这就需要用到函数categorical,格式为B=categorical(a),a是实际标签或则预测标签(数值格式的,其实就是数字),通过这个函数就把数值转化为了分类数组,然后再调用plotconfusion函数就OK了。
    这里预测标签是double型数值
    这里预测标签是double型数值↑↑↑

    用catorical函数将数值转化为分类数组
    转化为分类数组形式↑↑↑
    然后用plotconfusion函数就可以画出来了
    Ps:这两图片用到的数据不一样,所以画出来有所差别,应该就是这样画的,终于明白了,看别人讲的好复杂,有一种画出来的是灰色的图,那个网上有代码,但是没有这个彩色的好看。
    好,第一篇文章,到此为止。下次再见。

    展开全文
  • 这一篇比较简单,讲的是利用matlab提供的一个工具来生成带标签区域的图片,作为对象检测器模型的训练数据。其实机器学习领域,数据的重要性是大于算法的,但是没有多少人会安安静静成下心来研究怎么收集和处理数据,...
  • 对于多分类问题,如何对预测结果进行可视化是对比分析的关键一步,在实际多分类问题,除了简单展示模型预测精度外,如何分别不同类别之间的预测结果对于分析样本相关性和属性区别具有重要意义,在MATLAB中一般通过...
  • MATLAB中的分类

    2017-05-18 15:34:13
    MATLAB中的分类器 ...现将其主要函数使用方法总结如下,更细节需参考MATLAB 帮助文件。 设  训练样本:train_data % 矩阵,每行一个样本,每列一个特征  训练样本标签:train_label % 列向量  
  • MATLAB分类器有:K近邻分类器,随机森林分类器,朴素贝叶斯,集成学习方法,鉴别分析分类器,支持向量机。 现将其主要函数使用方法总结如下,更细节需参考MATLAB 帮助文件。设:  训练样本 :train_data  ...
  • function [ result ] = TDW_multiclass( ...% 该函数是基于one-vs-one方法的得到的处理类问题的TDW分类器 % trainX 训练样本的特征向量构成的n行m列矩阵,每一行是一个样本 % trainY 训练样本的标签构成的n行...
  • 现将其主要函数使用方法总结如下,更细节需参考MATLAB帮助文件。 设  训练样本:train_data%矩阵,每行一个样本,每列一个特征  训练样本标签:train_label %列向量  测试样本:test_data  测试样本标签:test...
  • matlab中自带的分类

    千次阅读 2017-10-24 05:24:14
    目前了解到的MATLAB分类器有:K近邻分类器,随机森林分类器,朴素贝叶斯,集成学习方法,鉴别分析分类器,支持向量机。现将其主要函数使用方法总结如下,更细节需参考MATLAB 帮助文件。 设  训练样本:train...
  • 多分类问题中,有一种很实用的分类问题结果统计图。 比如说类别文类问题,那么...我最近也在做多分类问题,要画这样的图,但是发现确实很少有代码,自己画的确实不好看,还牵扯到值的显示和x轴标签的旋转问题,
  • 现将其主要函数使用方法总结如下,更细节需参考MATLAB帮助文件。 设  训练样本:train_data%矩阵,每行一个样本,每列一个特征  训练样本标签:train_label %列向量  测试样本:test_data  测试样本标签:test...
  • %datas为读入的数据集 labels为读入的标签 %规范化数据 [datas_normal] = premnmx(datas) ; %交叉验证 k =10;%预将数据分成十份 sum_accuracy_svm = 0; [m,n] = size(datas_normal); %交叉验证,使用十折交叉验证 ...
  • matlab自带的分类器的使用实例

    千次阅读 2017-11-16 00:55:27
    目前了解到的MATLAB分类器有:K近邻分类器,随机森林分类器,朴素贝叶斯,集成学习方法,鉴别分析分类器,支持向量机。现将其主要函数使用方法总结如下,更细节需参考MATLAB 帮助文件。 设  训练样本:train...
  • 前言主要是想尝试看一下多标签的caffe是如何进行输入输出的,但是目前还未找到基于原始caffe做多标签输入的代码,大部分都是基于源码做了一部分修改实现多标签分类,caffe官网倒是有一个多标签的Python程序,这个我...
  • 多分类问题中,有一种很实用的分类问题结果统计图。...我最近也在做多分类问题,要画这样的图,但是发现确实很少有代码,自己画的确实不好看,还牵扯到值的显示和x轴标签的旋转问题,所以一直自己也没...
  • 目前了解到的MATLAB分类器有:K近邻,随机森林,朴素贝叶斯,集成学习方法,鉴别分析,支持向量机。现将其主要函数使用方法总结如下,更细节需参考MATLAB 帮助文件。 设: 训练样本:train_data % 矩阵,每行一...
  • 随机森林原理及其用于分类问题的matlab实现

    万次阅读 热门讨论 2018-11-16 22:03:33
    随机森林是个决策树的集成学习,每个决策树用bagging的方法选数据集,并且在选择最佳属性划分的时候随机划分一些属性进行分类,比单个分类器效果更好,泛化能力更强。 代码解释 1.用结构体的嵌套实现树的结构。 2....
  • yeast.mat多标签数据集

    2020-07-28 22:50:08
    yeast(酵母菌)数据集是一个多标签数据集,里面包括14种标签,已经划分好了训练集和测试集,可以直接进行调用,可用于机器学习,多标签分类等等,在MATLAB和python中都可调用。
  • Matlab中RandomForest分类器的使用

    千次阅读 2018-06-06 09:22:08
    随机森林算法的相关资料,参考:https://www.cnblogs.com/maybe2030/p/4585705.html(1)首先制作训练样本,并对样本打分类标签;(2)训练样本,并在训练集上的利用“包外错误率oob”评估模型效果;(注意:训练...
  • Matlab 用途

    2018-11-06 15:17:01
    置顶 2017年08月24日 13:25:46 前进前进 阅读数:23899 标签: matlabmatlab学习matlab功能硬件自动化控制 更 个人分类: Matlab 版权声明:本文为博主原创文章,允许转载,转载必须须在文章(首部)明显...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

多标签分类matlab

matlab 订阅