data = readtable('ML2.xlsx'); X = data{:, {'WCP', 'NaOH', 'W', 'SS', 'Age'}}; y = data.UCS; %% Train GBM gbModel = fitrensemble(X, y, ... 'Method', 'LSBoost', ... 'NumLearningCycles', 500, ... 'LearnRate', 0.05, ... 'Learners', templateTree('MaxNumSplits', 20)); y_pred = predict(gbModel, X); %% Evaluate Model r2 = 1 - sum((y - y_pred).^2) / sum((y - mean(y)).^2); rmse = sqrt(mean((y - y_pred).^2)); mae = mean(abs(y - y_pred)); mape = mean(abs((y - y_pred) ./ y)) * 100; fprintf('Gradient Boosting Performance (Full Data):\n'); fprintf(' R² = %.4f\n', r2); fprintf(' RMSE = %.2f kPa\n', rmse); fprintf(' MAE = %.2f kPa\n', mae); fprintf(' MAPE = %.2f %%\n', mape);