Question: is it possible, or even necessary, to perform a cross-validation check to tune the parameters of a Python randomforest implementation (eg scikit learn) when training a new model, as can be done in R's caret?
Background R: When using R's caret's randomforest library, one can tune the parameters by performing a n-fold cross validation, e.g.
train_control <- trainControl(method = "repeatedcv", number = 10, repeats = 5, verboseIter = TRUE, allowParallel = TRUE, summaryFunction = multiClassSummary) rf1 <- train(Class ~ ., data = train_transformed, method = "rf", metric = "Accuracy", tuneGrid = my_grid1, trControl = train_control)
This outputs -
## Aggregating results ## Selecting tuning parameters ## Fitting mtry = 1 on full training set
or whatever mtry is the best for a dataset.
Background Python: Using scikit learn, one can instantiate a randomforest regressor and can perform a cross-validation check on that regressor
RFRegModel = RandomForestRegressor(random_state=42) cv = cross_validate(RFRegModel,X,y,cv=5,verbose=1) print(cv['test_score'])
the difference here is that the cross validation doesn't appear to influence the tuning of the randomforest parameters, as I think it does in R. I think all that is happening here is that we are taking random subsamples of the training data set and testing the implementation of the
Question again: is it possible to train the model in python in a similar manner as is done in caret, i.e. by forcing an n-folds cross-validation parameter tuning? or, is this even necessary? Is the caret implementation overconstrained by it's methodolgy?