import sklearn from sklearn.datasets import load_breast_cancer from sklearn.metrics import accuracy_score from sklearn.model_selection import GridSearchCV, StratifiedKFold, train_test_split from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC X, y = load_breast_cancer(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.25, stratify=y, random_state=42, ) model = make_pipeline( StandardScaler(), SVC(), ) param_grid = { "svc__C": [0.1, 1, 10], "svc__gamma": ["scale", 0.01], "svc__kernel": ["rbf"], } cv = StratifiedKFold( n_splits=5, shuffle=True, random_state=42, ) search = GridSearchCV( model, param_grid=param_grid, scoring="accuracy", cv=cv, refit=True, ) search.fit(X_train, y_train) candidate_count = len(search.cv_results_["params"]) test_predictions = search.predict(X_test) held_out_accuracy = accuracy_score(y_test, test_predictions) print(f"scikit-learn {sklearn.__version__}") print(f"scoring: {search.scoring}") print(f"cross-validation folds: {search.n_splits_}") print(f"evaluated candidates: {candidate_count}") print(f"total fits: {candidate_count * search.n_splits_}") print(f"best parameters: {search.best_params_}") print(f"best mean CV accuracy: {search.best_score_:.3f}") print(f"held-out accuracy: {held_out_accuracy:.3f}") print("top candidates:") ranked_candidates = sorted( zip( search.cv_results_["rank_test_score"], search.cv_results_["mean_test_score"], search.cv_results_["params"], ), key=lambda item: item[0], ) for rank, mean_score, params in ranked_candidates[:3]: print(f" rank {rank}: mean={mean_score:.3f}, params={params}")