Как я могу использовать несколько необязательных параметров?Python

Программы на Python
Ответить
Anonymous
 Как я могу использовать несколько необязательных параметров?

Сообщение Anonymous »

У меня есть функция, которая создаст несколько моделей машинного обучения, сравнит их и вернет ансамбль из n лучших результатов моделей. Я хочу, чтобы у пользователя была возможность передавать параметры для каждой модели индивидуально, но в противном случае вводить параметры по умолчанию. Я хочу сделать так, чтобы ввод параметров был интуитивно понятен и прост.
Вот как выглядит мой код:

Код: Выделить всё

def buildModel(X, y, n, rfParams, knnParams, SVCParams, lrParams, lgbParams, xgbParams):
mod1 = rf(**rfParams)
mod2 = Pipeline([('scaler', StandardScaler()), ('clf', knn(**knnParams))])
mod3 = Pipeline([('scaler', StandardScaler()), ('clf', SVC(**SVCParams))])
mod4 = Pipeline([('scaler', StandardScaler()), ('clf', lr(**lrParams))])
mod5 = lgb.LGBMClassifier(**lgbParams)
mod6 = xgb.XGBClassifier(**xgbParams)
mods = [mod1, mod2, mod3, mod4, mod5, mod6]
mod = ensemble(X, y, mods, n)
return mod
Я хочу, чтобы любой параметр, кроме X, y и n, был необязательным входным значением (т. е. пользователь мог вызвать buildModel(X, y, n)). Я также хочу, чтобы функция определяла, для какой модели предназначен параметр, без явного/жесткого кодирования. Я понимаю, что вы можете использовать *args или **kwargs, но я немного незнаком и хочу избежать массивного оператора if elif, поэтому я не решаюсь использовать словари и хочу сделать это надежным.
В настоящее время я еще не работаю над масштабируемостью, поэтому модели определены внутри функции. Но идея заключается в том, чтобы иметь возможность передавать параметры, если у вас есть параметры, то есть вы где-то запустили скрипт, и он выводит набор параметров, которые затем можно плавно передать в эту функцию, где она занимается созданием модели. Но я не хочу, чтобы это была огромная коллекция операторов if, и мне нужно как можно меньше кода, но при этом не экспортировать функциональность, чтобы, когда дело доходит до изменения кода или его обновления, было меньше хлопот.
Достижимо ли это и какое решение является лучшим?

Подробнее здесь: https://stackoverflow.com/questions/798 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»