GridSearchCV de scikit-learn
El caballo de batalla: elige un modelo, define una rejilla de hiperparámetros, ejecuta k-fold CV en cada combinación, reentrena el mejor con todos los datos.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(SVR(), {'C':[0.1,1,10], 'gamma':[0.01,0.1,1]}, cv=5)
gs.fit(X_train, y_train)
print(gs.best_params_, gs.best_score_)