Пользовательский GridSearch с использованием Paramter Grid для Isolation Forest - PullRequest
0 голосов
/ 26 сентября 2018

Я строю очень простой неконтролируемый детектор выбросов с помощью Isolation Forest.Я хотел настроить гиперпараметры с помощью GridSearchCV, но для GridSearch требуются метки, которых у меня нет.Я решил создать специальный GridSearch, который будет хранить каждое вычисление в датафрейме.Код выглядит следующим образом:

    params = {
    'n_estimators': [100,125, 150],
    'contamination': [0.0001, 0.001],
    'bootstrap': [True, False],
    'max_features': [1, 2]
}

clf = IsolationForest(random_state=42)
result2 = pd.DataFrame(columns=['n_estimators','contamination','bootstrap','max_features'])
for g in ParameterGrid(params):
    clf.set_params(**params)
    clf.fit(X_train)
    pred_clf = clf.predict(X_test)
    unique, counts = np.unique(pred_clf, return_counts=True)
    result = (dict(zip(unique, counts)))
    result = result2.append([result,params], ignore_index=True)

Однако при подборе я столкнулся с проблемой, поскольку n_estimators требует, чтобы входные данные были целочисленными, а не списком, как в этом случае.

1 Ответ

0 голосов
/ 26 сентября 2018

Вам нужно установить g вместо params внутри цикла.

Вместо этого:

for g in ParameterGrid(params):
    clf.set_params(**params)

сделать это:

for g in ParameterGrid(params):
    clf.set_params(**g)
    ...
    ...
    result = result2.append([result,g], ignore_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...