Bài 7: Lưu Và Sử Dụng XGBoost Model - VTI TechBlog!

Share2TweetSharePin2 Shares Post Views: 1,847

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 Shares

Từ khóa » Thư Viện Pickle Trong Python