Тюнінг гіперпараметрів у Python
Alex Scriven
Data Scientist
Навіщо вивчати цей курс?
Ви можете здивуватися, що «під капотом»!
Набір даних стосується дефолтів за кредитними картками.
Він містить змінні щодо фінансової історії деяких споживачів у Тайвані. Має 30 000 користувачів і 24 атрибути.
Наша ціль моделювання — чи допустили вони дефолт за позикою
Дані вже підготовлено; іноді ми братимемо менші вибірки для демонстрації концепцій
Додаткову інформацію про набір даних можна знайти тут:
https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients
Що таке параметр?
Проста модель логістичної регресії:
log_reg_clf = LogisticRegression() log_reg_clf.fit(X_train, y_train)print(log_reg_clf.coef_)
array([[-2.88651273e-06, -8.23168511e-03, 7.50857018e-04,
3.94375060e-04, 3.79423562e-04, 4.34612046e-04,
4.37561467e-04, 4.12107102e-04, -6.41089138e-06,
-4.39364494e-06, cont... ]])
Упорядкуймо коефіцієнти:
# Get the original variable names original_variables = list(X_train.columns)# Zip together the names and coefficients zipped_together = list(zip(original_variables, log_reg_clf.coef_[0])) coefs = [list(x) for x in zipped_together]# Put into a DataFrame with column labels coefs = pd.DataFrame(coefs, columns=["Variable", "Coefficient"])
Тепер відсортуйте й виведіть три найбільші коефіцієнти
coefs.sort_values(by=["Coefficient"], axis=0, inplace=True, ascending=False)
print(coefs.head(3))

Щоб знайти параметри, нам потрібно:
Параметри наведено в розділі «Attributes», а не в «parameters»!
А як щодо деревоподібних алгоритмів?
Random forest не має коефіцієнтів, а має рішення у вузлах (яку ознаку і за яким значенням розщепити).
# A simple random forest estimator rf_clf = RandomForestClassifier(max_depth=2) rf_clf.fit(X_train, y_train)# Pull out one tree from the forest chosen_tree = rf_clf.estimators_[7]
Для простоти ми покажемо кінцевий результат (зображення) дерева рішень. За бажанням дослідіть пакети для цього самостійно (graphviz і pydotplus).

Можемо витягти деталі лівого, другого згори вузла:
# Get the column it split on split_column = chosen_tree.tree_.feature[1] split_column_name = X_train.columns[split_column]# Get the level it split on split_value = chosen_tree.tree_.threshold[1]print("This node split on feature {}, at a value of {}" .format(split_column_name, split_value))
"Цей вузол розщепив ознаку PAY_0 за значенням 1.5"
Тюнінг гіперпараметрів у Python