Saya membangun jaringan saraf dengan tujuan membuat prediksi pada data baru di masa depan. Saya melakukan preprocess data training terlebih dahulu menggunakan sklearn.preprocessing, kemudian melatih model, kemudian membuat beberapa prediksi, kemudian menutup program. Di masa depan, ketika data baru masuk, saya harus menggunakan skala prapemrosesan yang sama untuk mengubah data baru sebelum memasukkannya ke dalam model. Saat ini, saya harus memuat semua data lama, menyesuaikan praprosesor, lalu mengubah data baru dengan praprosesor tersebut. Apakah ada cara bagi saya untuk menyimpan objek objek pra-pemrosesan (seperti sklearn.preprocessing.StandardScaler) sehingga saya dapat memuat objek lama daripada harus membuat ulang?

3
user1367204 16 Maret 2017, 22:36

2 jawaban

Jawaban Terbaik

Seperti yang disebutkan oleh lejlot, Anda dapat menggunakan pustaka acar untuk simpan jaringan terlatih sebagai file di hard drive Anda, lalu Anda hanya perlu memuatnya untuk mulai membuat prediksi.

Berikut adalah contoh tentang cara menggunakan acar untuk menyimpan dan memuat objek python:

import pickle
import numpy as np

npTest_obj = np.asarray([[1,2,3],[6,5,4],[8,7,9]])

strTest_obj = "pickle example XXXX"


if __name__ == "__main__":
    # store object information
    pickle.dump(npTest_obj, open("npObject.p", "wb"))
    pickle.dump(strTest_obj, open("strObject.p", "wb"))

    # read information from file
    str_readObj = pickle.load(open("strObject.p","rb"))
    np_readObj = pickle.load(open("npObject.p","rb"))
    print(str_readObj)
    print(np_readObj)
2
GurstTavo 16 Maret 2017, 19:46

Saya pikir selain acar, Anda juga dapat menggunakan joblib untuk melakukan ini. Sebagaimana dinyatakan dalam manual Scikit-learn 3.4. Kegigihan model

Dalam kasus khusus scikit-learn, mungkin lebih baik menggunakan pengganti acar (dump & load) joblib, yang lebih efisien pada objek yang membawa array numpy besar secara internal seperti yang sering terjadi pada estimator scikit-learn yang dipasang, tetapi hanya dapat mengasinkan ke disk dan bukan ke string:

from joblib import dump, load
dump(clf, 'filename.joblib') 

Nanti Anda dapat memuat kembali model acar (mungkin dalam proses Python lain) dengan:

clf = load('filename.joblib') 

Lihat postingan lain untuk informasi selengkapnya, Menyimpan model StandardScaler() untuk digunakan pada kumpulan data baru, Simpan model MinMaxScaler di sklearn.

3
sikisis 24 Maret 2020, 22:44