Ajustarea hiperparametrilor în Python
Alex Scriven
Data Scientist
De ce să urmați acest curs?
S-ar putea să fiți surprins de ce se ascunde în interior!
Setul de date se referă la neplata cardurilor de credit.
Conține variabile legate de istoricul financiar al unor consumatori din Taiwan. Are 30.000 de utilizatori și 24 de atribute.
Ținta modelării este dacă au înregistrat neplată la credit
Datele au fost deja preprocesate; uneori vom folosi eșantioane mai mici pentru a ilustra un concept
Informații suplimentare despre set de date:
https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients
Ce este un parametru?
Un model simplu de regresie logistică:
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... ]])
Organizarea coeficienților:
# 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"])
Acum sortați și afișați primii trei coeficienți
coefs.sort_values(by=["Coefficient"], axis=0, inplace=True, ascending=False)
print(coefs.head(3))

Pentru a găsi parametrii avem nevoie de:
Parametrii se găsesc în secțiunea „Attributes", nu în secțiunea „parameters"!
Dar algoritmii bazați pe arbori?
Random Forest nu are coeficienți, ci decizii la noduri (ce caracteristică și ce valoare să utilizeze pentru împărțire).
# 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]
Pentru simplitate, vom prezenta produsul final (o imagine) al arborelui de decizie. Puteți explora pachetul utilizat (graphviz & pydotplus) pe cont propriu.

Putem extrage detaliile nodului stâng, al doilea de sus:
# 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))
„This node split on feature PAY_0, at a value of 1.5"
Ajustarea hiperparametrilor în Python