资源简介

里面包含随机森林的matlab实现代码,并且有简单的训练数据集和测试数据集

资源截图

代码片段和文件信息

%% load data
train = load(‘train.data‘);
train_data = train(: 1:10); train_label = train(: 11);
test = load(‘test.data‘);
test_data = test(: 1:10); test_label = test(: 11);


%% new_data
pos = find(train_label==1);
neg = find(train_label==-1);
n_p = length(pos);
n_n = length(neg);
new_data= zeros(n_n * 2 10);
new_label= zeros(n_n * 2 1);
for i=1:n_n
    idx = pos(randperm(n_p 1));
    new_data(i:) = train_data(idx:);
    new_label(i) = train_label(idx);
end
new_data(n_n+1:n_n*2:) = train_data(neg :);
new_label(n_n+1:n_n*2) = train_label(neg);


%% adaboost
%类变换为01
test_label(test_label>0) = 1;
test_label(test_label<0) = 0;
new_label(new_label>0) = 1;
new_label(new_label<0) = 0;
%训练
ens = fitensemble(new_datanew_label‘AdaBoostM1‘ 100‘tree‘‘type‘‘classification‘);
%测试
[predict_labelscores]= predict(ens test_data);

%输出正确率
fprintf(‘AdaBoost Accuracy: %f %%\n‘ mean(double(predict_label == test_label)) * 100);
%输出-1类正确率
predict1=sum(predict_label==test_label & test_label==0);
tot11=sum(test_label==0);
fprintf(‘label -1: %d/%d Correct=%f %%\n‘predict1tot11predict1*100/tot11);
%输出+1类正确率
predict2=sum(predict_label==test_label & test_label==1);
tot2=sum(test_label==1);
fprintf(‘label +1: %d/%d    Correct=%f %%\n‘predict2tot2predict2*100/tot2);

%调整scores在01内,test_label为2列,以满足newplotroc
test_label = [test_label 1 - test_label];
for i=1:2    for j=1:2072
        if scores(ji)<0
            scores(ji)=scores(ji)+1;
        end
    end
end
%转置test_labelscores,绘制ROC曲线,输出AUC数值

plot_roc(test_label‘scores‘);

% test_label=test_label(:);
% scores=scores(1:20721:1);

% [XY]=perfcurve(test_labelscores‘1‘);
% plot(XY);




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        9676  2017-03-21 16:37  newplotroc.m
     文件        9678  2016-01-11 13:39  plot_roc.m
     文件      214690  2016-01-10 22:00  test.data
     文件      858545  2009-04-24 16:10  train.data
     文件        1784  2016-12-06 16:14  ADABOOST.m

评论

共有 条评论