Is there any implementation of XGBoost algorithm for decision trees in Matlab?

I've found other boosting algos available in fitensemble and fitcensemble options but not XGBoost. Any chance to find it somewhere else? Thanks
Roberto

2 Comments

As stated in the article Michelle referred you to, XGBoost is not an algorithm, just an efficient implementation of gradient boosting in Python. MATLAB supports gradient boosting, and since R2019b we also support the binning that makes XGBoost very efficient. You activate the binning with the NumBins name-value parameter to the fit*ensemble functions.

Sign in to comment.

Answers (4)

Please see: https://nl.mathworks.com/matlabcentral/fileexchange/75898-functions-to-run-xgboost-in-matlab (2 functions to train and test xgboost models). The examples are for classification, but xgboost can also be used for regression. The functions are wrappers for the xgboost.dll library.

4 Comments

I am unable to use it. Please hel me out with it.
Hi Roberson
Here is the error:
Error using movefile
No matching files named 'C:\Post_doc_research\XG_boost\lib\tmp\xgboost\lib\xgboost.dll' were found.
Error in xgboost_install (line 32)
movefile(from, to);
How can I get xgboost.dll file?
Please help me out with this.
python -m pip install xgboost==1.3.3
should install the dll

Sign in to comment.

Hi Roberto,
I am looking for XGBoost matlab based implementation as well. PLease if you get any let me know.
Thanks

3 Comments

Hi Redha, unfortunately I didn't find any matlab implementation of xgboost so far. But I'm replacing it with the "Method" "AdaBoostM1" that you can find here: https://www.mathworks.com/help/stats/fitcensemble.html#namevaluepairarguments In my tests matlab adaptive boost is outperforming R xgboost in almost any scenario so I'm pretty satisfied. Give it a try!
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5563301/ talks about preprocessing in MATLAB and about using Python scikit libraries for xgboost. It does not actually state that they call Python from MATLAB but that approach would sound plausible.

Sign in to comment.

%% Load Dataset
data = readtable('dataset.csv');
X = data(:,1:end-1); % Input features
y = data(:,end); % Target variable (electrical/thermal efficiency)
%% Split Data into Train and Test
cv = cvpartition(numel(y),'HoldOut',0.2); % 20% for testing
X_train = X(cv.training,:);
y_train = y(cv.training,:);
X_test = X(cv.test,:);
y_test = y(cv.test,:);
%% XGBoost Model
model = XGBTreeBagger('Trees', 200, 'MinLeafSize', 3, 'OOBPrediction','On');
model = fitcensemble(model, X_train, y_train);
y_pred_train = oobPredict(model);
y_pred_test = predict(model, X_test);
%% Extra Trees Model
model = TreeBagger('NumTrees',200,'OOBPredictorImportance','On');
model = fitcensemble(model, X_train, y_train);
y_pred_train = oobPredict(model);
y_pred_test = predict(model, X_test);
%% KNN Model
mdl = fitrknn(X_train,y_train,'NumNeighbors',5);
y_pred_train = predict(mdl,X_train);
y_pred_test = predict(mdl,X_test);
%% Performance Evaluation
R2_train = rsquared(y_train,y_pred_train)
R2_test = rsquared(y_test,y_pred_test)

Asked:

on 13 Oct 2018

Answered:

on 13 Nov 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!