Я продолжаю страдать из-за сбоя моей программы из-за различных недопустимых комбинаций гиперпарамов для LinearSVC в sklearn. В документации подробно не указано, какие гиперпарамы работают вместе, а какие нет. Я выполняю произвольный поиск гиперпарамов, чтобы оптимизировать их, но функция продолжает работать с ошибками о несовместимых комбинациях.
Как бы это исправить?
losses = ["hinge", "squared_hinge"]
duals = [False, True]
learning_rates = [1e-15, 1e-8, 1e-4, 1e-2, 1e-1, 1]
penalties = ["l1", "l2"]
max_iters = [1000, 5000, 10000, 20000, 50000, 150000]
random_grid = {
"C": learning_rates,
"penalty": penalties,
"max_iter": max_iters,
"loss": losses,
"dual": duals
}
svc = LinearSVC()
n_iter = 50
svc_random = RandomizedSearchCV(estimator=svc, param_distributions=random_grid, n_iter=n_iter,
cv=3, verbose=0, n_jobs=-1)
svc_random.fit(X, Y)
best_params = svc_random.best_params_
Пример ошибок
ValueError: Unsupported set of arguments: The combination of penalty='l2' and loss='hinge' are not supported when dual=False, Parameters: penalty='l2', loss='hinge', dual=False
ValueError: Unsupported set of arguments: The combination of penalty='l1' and loss='hinge' is not supported, Parameters: penalty='l1', loss='hinge', dual=True
Если бы я реализовал это сам, я мог бы поймать исключения и продолжить. Но так как здесь я звоню RandomizedSearchCV
, и внутри него ничего не получается, я ничего не могу сделать ... Причина, по которой я сам не реализую это, заключается в том, что RandomizedSearchCV
хорошо распараллелено.
Какие у меня варианты?