Grid¶
-
lazygrid.grid.
generate_grid
(elements: list, lazy: bool = True, **kwargs) → list¶ Generate all possible combinations of sklearn Pipelines given the input steps.
Parameters: - elements – List of elements used to generate the pipelines
- lazy – If True it generates LazyPipelines objects; if False it generates standard sklearn Pipeline objects
- kwargs – Keyword arguments to generate Pipeline objects
Returns: List of pipelines
Return type: list
Example
>>> from sklearn.ensemble import RandomForestClassifier >>> from sklearn.svm import SVC >>> from sklearn.feature_selection import SelectKBest, f_classif >>> from sklearn.preprocessing import RobustScaler, StandardScaler >>> import lazygrid as lg >>> >>> preprocessors = [StandardScaler(), RobustScaler()] >>> feature_selectors = [SelectKBest(score_func=f_classif, k=1), SelectKBest(score_func=f_classif, k=2)] >>> classifiers = [RandomForestClassifier(random_state=42), SVC(random_state=42)] >>> >>> elements = [preprocessors, feature_selectors, classifiers] >>> >>> pipelines = lg.grid.generate_grid(elements)
-
lazygrid.grid.
generate_grid_search
(model: keras.wrappers.scikit_learn.KerasClassifier, model_params: dict, fit_params: dict) → Tuple[List[keras.engine.training.Model], List[dict]]¶ Generate all possible combinations of models.
Parameters: - model – Model architecture
- model_params – Model parameters. For each key the dictionary should contain a list of possible values
- fit_params – Fit parameters. For each key the dictionary should contain a list of possible values
Returns: Models and their corresponding fit parameters
Return type: Tuple
Example
>>> import keras >>> from keras import Sequential >>> from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense >>> import lazygrid as lg >>> from keras.wrappers.scikit_learn import KerasClassifier >>> >>> # define keras model generator >>> def create_keras_model(input_shape, optimizer, n_classes): ... kmodel = Sequential() ... kmodel.add(Conv2D(32, kernel_size=(5, 5), strides=(1, 1), activation='relu', input_shape=input_shape)) ... kmodel.add(MaxPooling2D(pool_size=(2, 2))) ... kmodel.add(Flatten()) ... kmodel.add(Dense(1000, activation='relu')) ... kmodel.add(Dense(n_classes, activation='softmax')) ... ... kmodel.compile(loss=keras.losses.categorical_crossentropy, ... optimizer=optimizer, metrics=['accuracy']) ... return kmodel >>> >>> # cast keras model into sklearn model >>> kmodel = KerasClassifier(create_keras_model) >>> >>> # define all possible model parameters of the grid >>> model_params = {"optimizer": ['SGD', 'RMSprop'], "input_shape": [(28, 28, 3)], "n_classes": [10]} >>> fit_params = {"epochs": [5, 10, 20], "batch_size": [10, 20]} >>> >>> # generate all possible models given the parameters' grid >>> models, fit_parameters = lg.grid.generate_grid_search(kmodel, model_params, fit_params)