Bài 7: Lưu Và Sử Dụng XGBoost Model - VTI TechBlog!
Có thể bạn quan tâm
Giả sử bạn đã train xong một XGBoost model đạt được độ chính xác rất cao. Câu hỏi đặt ra là làm sao lưu lại model đó để sử dụng về sau (không phải mất công train lại model mỗi khi cần sử dụng)?
Trong bài viết này, chúng ta hãy cùng tìm hiểu cách thức lưu một XGBoost model thành 1 file sử dụng Python pickle API. Nội dung bài viết gồm 2 phần chính:
- Lưu và sử dụng XGBoost model bằng thư viện pickle.
- Lưu và sử dụng XGBoost model bằng thư viện joblib.
1. Lưu và sử dụng XGBoost model bằng thư viện pickle.
Pickle là một cách chuẩn chỉ để lưu một dối tượng trong Python thành một file. Cách sử dụng tương đối đơn giản.
- Lưu model thành file # save model to file pickle.dump(model, open("pima.pickle.dat", "wb"))
- Gọi model đã lưu để sử dụng # load model from file loaded_model = pickle.load(open("pima.pickle.dat", "rb"))
Ví dụ dưới đây mình họa việc train một XGBoost model trên tập dữ liệu Pima Indians onset of diabetes, lưu model thành file và gọi model đã lưu để dự đoán.
# Train XGBoost model, save to file using pickle, load and make predictions from numpy import loadtxt from XGBoost import XGBClassifier import pickle from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # load data dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",") # split data into X and y X = dataset[:,0:8] Y = dataset[:,8] # split data into train and test sets seed = 7 test_size = 0.33 X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed) # fit model on training data model = XGBClassifier() model.fit(X_train, y_train) # save model to file pickle.dump(model, open("pima.pickle.dat", "wb")) print("Saved model to: pima.pickle.dat") # some time later... # load model from file loaded_model = pickle.load(open("pima.pickle.dat", "rb")) print("Loaded model from: pima.pickle.dat") # make predictions for test data predictions = loaded_model.predict(X_test) # evaluate predictions accuracy = accuracy_score(y_test, predictions) print("Accuracy: %.2f%%" % (accuracy * 100.0))Kết quả:
Saved model to: pima.pickle.dat Loaded model from: pima.pickle.dat Accuracy: 74.02%2. Lưu và sử dụng XGBoost model bằng thư viện joblib.
Joblib là một phần của hệ sinh thái SciPy, nó cũng hỗ trợ việc lưu ML model thành file rât dễ dàng, sử dụng cấu trúc dữ liệu của NumPy. Ưu điểm của viêc sử dụng joblib so với pickle là nó hoạt động khá nhanh, đặc biệt với những model có kích thước lớn. Cách sử dụng:
- Lưu model thành file # save model to file joblib.dump(model, "pima.joblib.dat")
- Sử dụng model đã lưu # load model from file loaded_model = joblib.load("pima.joblib.dat")
Ví dụ dưới đây mình họa việc train một XGBoost model trên tập dữ liệu Pima Indians onset of diabetes, lưu model thành file và gọi model đã lưu để dự đoán.
# Train XGBoost model, save to file using joblib, load and make predictions from numpy import loadtxt from XGBoost import XGBClassifier from joblib import dump from joblib import load from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # load data dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",") # split data into X and y X = dataset[:,0:8] Y = dataset[:,8] # split data into train and test sets seed = 7 test_size = 0.33 X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed) # fit model on training data model = XGBClassifier() model.fit(X_train, y_train) # save model to file dump(model, "pima.joblib.dat") print("Saved model to: pima.joblib.dat") # some time later... # load model from file loaded_model = load("pima.joblib.dat") print("Loaded model from: pima.joblib.dat") # make predictions for test data predictions = loaded_model.predict(X_test) # evaluate predictions accuracy = accuracy_score(y_test, predictions) print("Accuracy: %.2f%%" % (accuracy * 100.0))Output của đoạn code trên:
Saved model to: pima.joblib.dat Loaded model from: pima.joblib.dat Accuracy: 74.02%
3. Kết luận
Trong bài viết này, chúng ta đã tìm hiểu cách thức lưu XGBoost model thành file sử dụng pickle và joblib, sau đó gọi lại model đã lưu từ file để dự đoán.
Bài viết tiếp theo sẽ tìm hiểu cách tính toán và lựa chọn các features tốt nhất cho việc train XGBoost model.
Toàn bộ source code của bài này các bạn có thể tham khảo trên github cá nhân của mình tại github.
Xem bài viết gốc tại đây
Share2TweetSharePin2 SharesTừ khóa » Thư Viện Pickle Trong Python
-
Cách Sử Dụng Pickle để Lưu Các đối Tượng Trong Python
-
Sử Dụng Pickle để Ghi File Nhị Phân - TEK4
-
Sử Dụng Pickle để Lưu đối Tượng Trong Python - EFERRIT.COM
-
Pickle – Thư Viện Serialization/Deserialization Trong Python
-
Sử Dụng Pickle để Lưu Các đối Tượng Bằng Python
-
Pickle — Python Object Serialization — Python 3.10.5 Documentation
-
7. Vào Và Ra - Python Cho Người Việt
-
Python Pickle-Deserialization Vulnerability – Nhat Truong Blog
-
Python — Lưu Một đối Tượng (Kiên Trì Dữ Liệu)
-
Cách Sử Dụng Pickle.dump Trong Python - HelpEx
-
Không Thể Pip Cài đặt Dưa Chua Trong Python 3.6 - HelpEx
-
BTL Cuối Kỳ_18021323 | Kaggle
-
Chi Tiết Bài Học 25.Python JSON - Vimentor
-
Làm Cách Nào để Lưu Và Khôi Phục Nhiều Biến Trong Python?