Nested selection
Hyperparameter selection consumes validation evidence. Reporting the best selection score as the final performance estimate ignores that extra choice. Nested validation repeats the complete selection process within each outer training fold and evaluates it on the outer holdout. You will calculate outer losses, compare them with inner scores and report fold spread with its limits. Three folds don't provide a confidence interval, especially when their fitted models share training observations. The final test budget also matters: repeated inspection can influence later decisions. Keep a record of which partition supplied each estimate so another person can understand the evidence behind a model choice.
nested_mae = -cross_val_score(GridSearchCV(Ridge(), {'alpha': [0.1, 10.0]}, cv=2, scoring='neg_mean_absolute_error'), X, reg_y, cv=KFold(3), scoring='neg_mean_absolute_error')
Nested validation evaluates selection on outer rows that did not choose the inner hyperparameter.