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
Leave a Reply