Code
machine-learning
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import (cross_val_score, StratifiedKFold,
GridSearchCV, RandomizedSearchCV)
from sklearn.datasets import load_iris
from scipy.stats import randint
X, y = load_iris(return_X_y=True)
model = RandomForestClassifier(random_state=42)
# K-fold CV
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
scores = cross_val_score(model, X, y, cv=cv, scoring="accuracy")
print(f"acc: {scores.mean():.3f} +/- {scores.std():.3f}")
# Grid search
param_grid = {
"n_estimators": [50, 100, 200],
"max_depth": [None, 5, 10],
}
grid = GridSearchCV(model, param_grid, cv=cv, scoring="accuracy", n_jobs=-1)
grid.fit(X, y)
print("best:", grid.best_params_, grid.best_score_)
# Randomized search over a wider space
rand = RandomizedSearchCV(model, {"n_estimators": randint(50, 300),
"max_depth": randint(3, 20)},
n_iter=20, cv=cv, random_state=42, n_jobs=-1)
rand.fit(X, y)