1.设置训练验证集
% 设置随机种子
rng(39);
% 读取 Excel 文件
data = readtable('F:\07xiaolunwen\model\速效钾(筛选后.xlsx');
% 将第一列作为目标变量
target = data{:, 1};
% 其余列作为特征
features = data{:, 2:end};
% 计算特征的均值和标准差
means = mean(features);
stds = std(features);
% 创建一个矩阵,将均值和标准差合并
statsMatrix = [means; stds]; % 第一行是均值,第二行是标准差
% 转换为 double 类型
features_stats = double(statsMatrix);
target_mean = mean(target);
target_std = std(target);
% 使用 features_stats 对特征进行标准化
features_standardized = (double(features) - features_stats(1, :)) ./ features_stats(2, :);
% 划分训练集和测试集(例如,70% 训练集,30% 测试集)
cv = cvpartition(size(features, 1), 'HoldOut', 0.3);
X_train = features_standardized(training(cv), :);
X_test = features_standardized(test(cv), :);
y_train = (target(training(cv)) - target_mean) / target_std;
y_test = (target(test(cv)) - target_mean) / target_std;
2.训练随机森林模型
%% 1. 训练随机森林模型
rf_model = fitrensemble(X_train, y_train, ...
'Method', 'Bag', ... % 使用 Bagging 随机森林
'NumLearningCycles', 716); % 每棵树的最大分裂数
rf_predictions = predict(rf_model, X_test);