# PCA
nof_prin_components = 200 # PARAMETER for optimisation in expereiments
pca = PCA(n_components=nof_prin_components, whiten=True).fit(X)
X_train_pca = pca.transform(X)
parameters = {
'hidden_layer_sizes': [150,200,250,300,400],
'solver': ['sgd', 'adam', 'lbfgs'],
'activation': ['relu', 'tanh', 'identity', 'logistics']
}
#Function that performs the actual hyperparameter tuning to return the best set of parameters and the best score
def tuning(clf, parameters, iterations, X, y):
randomSearch = RandomizedSearchCV(clf, param_distributions=parameters, n_jobs=-1, n_iter=iterations, cv=6)
#n_jobs=-1 ensures that all the cores of cpu will work
randomSearch.fit(X,y)
params = randomSearch.best_params_
score = randomSearch.best_score_
return params, score
clf = MLPClassifier(batch_size=256, verbose=True, early_stopping=True)
parameters_after_tuning, score_after_tuning = tuning(clf, parameters, 20, X_train_pca, y);
В приведенном выше коде я только что реализовал алгоритм «случайного поиска» для настройки «классификатора MLP». Словарь параметров включает некоторые возможные значения для этих параметров. Но количество основных компонентов зафиксировано на 200, что также необходимо оптимизировать. Как я могу реализовать случайный поиск, чтобы оптимизировать количество основных компонентов?