python保存模型的路径怎么写_使用python在MongoDB中保存机器学习(ML)和深度学习(DL)模型...
我們知道,當我們訓練機器學習或深入學習模型時,我們必須保存訓練過的模型,以便將來進行預測。現在的訓練模型非常昂貴,所以如果我們能夠保存它們并將其用于解決其他一些問題。例如,一個訓練過的能夠識別汽車的神經網絡,可以用遷移學習方法對其進行微調后用于識別卡車。
在數據庫中保存模型并使用python加載它們是很容易的。我們選擇MongoDB是因為它是一個開源的文檔數據庫和領先的NoSQL數據庫。現在讓我們使用python逐步實現這個過程。
首先,使用pip安裝pymongo,如下所示,
pip install pymongo
如果要使用MongoDB,請確保在系統中安裝了MongoDB。
我們將首先在iris數據集上訓練xgboost模型,然后將其轉儲到數據庫中并將其加載回來并用于預測。導入Python庫,如下所示:
#importing important librariesimport pymongoimport pandas as pdimport numpy as npfrom sklearn import datasetsimport pickleimport timeimport pymongo現在我們將在iris數據集上訓練xgboost
iris = datasets.load_iris()X = iris.datay = iris.targetfrom sklearn.cross_validation import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)from xgboost import XGBClassifierxgb = XGBClassifier()xgb.fit(X_train, y_train)XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,
max_depth=3, min_child_weight=1, missing=None, n_estimators=100,
n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,
reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,
silent=True, subsample=1)
訓練結束后,我們將編寫一個輔助函數來保存機器學習模型,該機器學習模型將首先對模型進行pickle。Pickling只是將任何對象轉換為字節。我們必須pickle我們的模型,因為我們不能直接將對象保存到MongoDB中。此函數還創建連接、數據庫和collection,然后使用名稱保存模型。
def save_model_to_db(model, client, db, dbconnection, model_name): import pickle import time import pymongo #pickling the model pickled_model = pickle.dumps(model) #saving model to mongoDB # creating connection myclient = pymongo.MongoClient(client) #creating database in mongodb mydb = myclient[db] #creating collection mycon = mydb[dbconnection] info = mycon.insert_one({model_name: pickled_model, 'name': model_name, 'created_time':time.time()}) print(info.inserted_id, ' saved with this id successfully!') details = { 'inserted_id':info.inserted_id, 'model_name':model_name, 'created_time':time.time() } return details現在我們將編寫另一個輔助函數來加載保存的機器學習模型。這個函數首unpickles保存的模型,然后返回模型。在這里,我們使用find()函數并傳遞它的模型名來從數據庫中獲取模型。
def load_saved_model_from_db(model_name, client, db, dbconnection): json_data = {} #saving model to mongoDB # creating connection myclient = pymongo.MongoClient(client) #creating database in mongodb mydb = myclient[db] #creating collection mycon = mydb[dbconnection] data = mycon.find({'name': model_name}) for i in data: json_data = i #fetching model from db pickled_model = json_data[model_name] return pickle.loads(pickled_model)在編寫用于保存和加載模型的輔助函數之后,我們只需要調用它們,如下所示
#saving model to mongodetails = save_model_to_db(model = xgb, client ='mongodb://localhost:27017/', db = 'mydatabase', dbconnection = 'customers', model_name = 'myxgb')#fetching model from mongoxgb = load_saved_model_from_db(model_name = details['model_name'], client = 'mongodb://localhost:27017/', db = 'mydatabase', dbconnection = 'customers')print(xgb.predict(X_test))[1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0 0 0 1 0 0 2 1 0 0 0 2 1 1 0 0 1 1 2 1 2]
使用python可以輕松地在數據庫中保存和加載模型。保存這些模型后,我們可以在將來隨時使用它們。
總結
以上是生活随笔為你收集整理的python保存模型的路径怎么写_使用python在MongoDB中保存机器学习(ML)和深度学习(DL)模型...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定点运算和浮点运算_C2000浮点运算注
- 下一篇: python开发信息系统权限设置_利用P