XGBoost: Fit/Predict
Đến lúc bạn tạo mô hình XGBoost đầu tiên! Như Sergey đã minh họa trong video, bạn có thể dùng khuôn mẫu scikit-learn .fit() / .predict() mà bạn đã quen thuộc để xây dựng mô hình XGBoost, vì thư viện xgboost có API tương thích với scikit-learn!
Ở đây, bạn sẽ làm việc với dữ liệu churn. Bộ dữ liệu này chứa dữ liệu giả lập từ một ứng dụng gọi xe, gồm hành vi người dùng trong tháng đầu sử dụng ứng dụng tại một số thành phố giả định, cùng thông tin liệu họ còn dùng dịch vụ sau 5 tháng kể từ khi đăng ký hay không. Dữ liệu đã được nạp sẵn vào DataFrame tên churn_data — hãy khám phá trong Shell!
Mục tiêu của bạn là dùng dữ liệu trong tháng đầu để dự đoán liệu người dùng vẫn tiếp tục sử dụng dịch vụ ở mốc 5 tháng hay không. Đây là thiết lập điển hình cho bài toán dự đoán churn. Để làm điều này, bạn sẽ chia dữ liệu thành tập huấn luyện và kiểm tra, huấn luyện một mô hình xgboost nhỏ trên tập huấn luyện, và đánh giá hiệu năng trên tập kiểm tra bằng cách tính độ chính xác (accuracy).
pandas và numpy đã được nhập là pd và np, và train_test_split đã được nhập từ sklearn.model_selection. Ngoài ra, mảng đặc trưng và mục tiêu đã được tạo sẵn lần lượt là X và y.
Bài tập này là một phần của khóa học
Gradient Boosting Cực Mạnh với XGBoost
Hướng dẫn bài tập
- Import
xgboostvới bí danhxgb. - Tạo tập huấn luyện và kiểm tra sao cho 20% dữ liệu dành cho kiểm tra. Dùng
random_statebằng123. - Khởi tạo một
XGBoostClassifierlàxg_clbằngxgb.XGBClassifier(). Chỉ địnhn_estimatorslà10bộ học vàobjectivelà'binary:logistic'. Chưa cần bận tâm ý nghĩa của chúng; bạn sẽ học về các tham số này ở phần sau của khóa học. - Fit
xg_cllên tập huấn luyện (X_train, y_train)bằng phương thức.fit(). - Dự đoán nhãn của tập kiểm tra (
X_test) bằng phương thức.predict()và nhấn "Gửi câu trả lời" để in ra độ chính xác.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Import xgboost
____
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the training and test sets
X_train, X_test, y_train, y_test= ____(____, ____, test_size=____, random_state=123)
# Instantiate the XGBClassifier: xg_cl
xg_cl = ____.____(____='____', ____=____, seed=123)
# Fit the classifier to the training set
____
# Predict the labels of the test set: preds
preds = ____
# Compute the accuracy: accuracy
accuracy = float(np.sum(preds==y_test))/y_test.shape[0]
print("accuracy: %f" % (accuracy))