Tinh chỉnh siêu tham số trong Python
Alex Scriven
Data Scientist
Vì sao học khóa này?
Bạn có thể bất ngờ với những gì bên trong!
Bộ dữ liệu liên quan đến vỡ nợ thẻ tín dụng.
Chứa các biến về lịch sử tài chính của một số người tiêu dùng ở Đài Loan. Có 30.000 người dùng và 24 thuộc tính.
Mục tiêu mô hình là họ có vỡ nợ khoản vay hay không
Đã được tiền xử lý; đôi lúc ta lấy mẫu nhỏ hơn để minh họa khái niệm
Thông tin thêm về bộ dữ liệu tại:
https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients
Tham số là gì?
Một mô hình hồi quy logistic đơn giản:
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... ]])
Chuẩn hóa bảng hệ số:
# Lấy tên biến gốc original_variables = list(X_train.columns)# Ghép tên và hệ số zipped_together = list(zip(original_variables, log_reg_clf.coef_[0])) coefs = [list(x) for x in zipped_together]# Đưa vào DataFrame với nhãn cột coefs = pd.DataFrame(coefs, columns=["Variable", "Coefficient"])
Giờ hãy sắp xếp và in 3 hệ số lớn nhất
coefs.sort_values(by=["Coefficient"], axis=0, inplace=True, ascending=False)
print(coefs.head(3))

Để tìm tham số, cần:
Tham số nằm trong mục 'Attributes', không phải 'parameters'!
Thuật toán dạng cây thì sao?
Random Forest không có hệ số, mà là quyết định tại nút (thuộc tính nào và giá trị tách).
# Một mô hình Random Forest đơn giản rf_clf = RandomForestClassifier(max_depth=2) rf_clf.fit(X_train, y_train)# Lấy một cây từ rừng chosen_tree = rf_clf.estimators_[7]
Để đơn giản, chúng ta chỉ hiển thị sản phẩm cuối (một ảnh) của cây quyết định. Có thể tự khám phá graphviz & pydotplus.

Ta có thể trích chi tiết của nút bên trái, nút thứ hai từ trên:
# Cột được tách split_column = chosen_tree.tree_.feature[1] split_column_name = X_train.columns[split_column]# Ngưỡng tách split_value = chosen_tree.tree_.threshold[1]print("This node split on feature {}, at a value of {}" .format(split_column_name, split_value))
"Nút này tách theo thuộc tính PAY_0 tại giá trị 1.5"
Tinh chỉnh siêu tham số trong Python