用matlab代码 随机森林 进行分类 实例
时间: 2023-12-02 20:14:02 浏览: 142
以下是一个例子,演示如何使用MATLAB中的随机森林进行分类:
首先,加载数据集并将其划分为训练集和测试集:
load fisheriris
X = meas(:,1:2);
Y = species;
rng(1); % 设置随机数生成器的种子,以确保每次运行的结果都是相同的
cv = cvpartition(Y,'HoldOut',0.3);
idx = cv.test;
Xtrain = X(~idx,:);
Ytrain = Y(~idx,:);
Xtest = X(idx,:);
Ytest = Y(idx,:);
接下来,使用fitcensemble函数来训练随机森林模型:
t = templateTree('Surrogate','on'); % 创建一个决策树模板
ens = fitcensemble(Xtrain,Ytrain,'Method','Bag','NumLearningCycles',100,'Learners',t);
在这里,我们使用了Bagging(自举聚集)方法,NumLearningCycles参数设置为100,表示训练100个决策树。Learners参数设置为t,表示使用上面创建的决策树模板。我们还启用了Surrogate(代理)分裂,以提高模型的准确性。
最后,使用predict函数对测试集进行分类,并计算分类准确率:
Ypred = predict(ens,Xtest);
acc = sum(Ypred == Ytest)/numel(Ytest);
disp(['分类准确率为:' num2str(acc)]);
完整的代码如下:
load fisheriris
X = meas(:,1:2);
Y = species;
rng(1);
cv = cvpartition(Y,'HoldOut',0.3);
idx = cv.test;
Xtrain = X(~idx,:);
Ytrain = Y(~idx,:);
Xtest = X(idx,:);
Ytest = Y(idx,:);
t = templateTree('Surrogate','on');
ens = fitcensemble(Xtrain,Ytrain,'Method','Bag','NumLearningCycles',100,'Learners',t);
Ypred = predict(ens,Xtest);
acc = sum(Ypred == Ytest)/numel(Ytest);
disp(['分类准确率为:' num2str(acc)]);
阅读全文