Как реализовать случайный поиск для оптимизации количества основных компонентов? - PullRequest
0 голосов
/ 08 мая 2020
# 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, что также необходимо оптимизировать. Как я могу реализовать случайный поиск, чтобы оптимизировать количество основных компонентов?

...