sklearn儲存模型 老魚學sklearn

2022-02-10 04:12:33 字數 2344 閱讀 6507

訓練好了乙個model 以後總需要儲存和再次**, 所以儲存和讀取我們的sklearn model也是同樣重要的一步。

比如,我們根據**樣本資料訓練了一下房價模型,當使用者輸入自己的房子後,我們就需要根據訓練好的房價模型來**使用者房子的**。

這樣就需要在訓練模型後把模型儲存起來,在使用模型時把模型讀取出來對輸入的資料進行**。

這裡儲存和讀取模型有兩種方法,都非常簡單,差別在於儲存和讀取速度的快慢上,因為有乙個是利用了多程序機制,下面我們分別來看一下。

首先我們建立模型並訓練資料:

from sklearn.datasets import load_digits

from sklearn.svm import svc

# 載入資料

digits = load_digits()

x = digits.data

y = digits.target

model = svc()

model.fit(x, y)

pickle是python中用於資料序列化的模組,因此,對於模型的序列化也可以用此模組來進行:

import pickle

# 以寫二進位制的方式開啟檔案

file = open("d:/data/python/model.pickle", "wb")

# 把模型寫入到檔案中

pickle.dump(model, file)

# 關閉檔案

file.close()

這樣會建立d:/data/python/model.pickle的檔案,大家可以自己去嘗試下看看,我這邊生成的檔案大概1m左右。

有了模型檔案之後,在進行**時我們就不需要進行訓練了,而只要把這個訓練好的模型檔案讀取出來,然後直接進行**就可以:

import pickle

# 以讀二進位制的方式開啟檔案

file = open("d:/data/python/model.pickle", "rb")

# 把模型從檔案中讀取出來

model = pickle.load(file)

# 關閉檔案

file.close()

# 用模型進行**

from sklearn.datasets import load_digits

digits = load_digits()

x = digits.data

y = digits.target

print("**值:", model.predict(x[15:20]))

print("實際值:", y[15:20])

輸出為:

**值: [5 6 7 8 9]

實際值: [5 6 7 8 9]

直接上**:

from sklearn.datasets import load_digits

from sklearn.svm import svc

# 用模型進行訓練

digits = load_digits()

x = digits.data

y = digits.target

model = svc()

model.fit(x, y)

# 用joblib儲存模型

from sklearn.externals import joblib

joblib.dump(model, "d:/data/python/model.joblib")

這樣就會生成d:/data/python/model.joblib檔案,看起來比pickle生成的檔案大一點點。

讀取模型:

# 用joblib讀取模型

from sklearn.externals import joblib

model = joblib.load("d:/data/python/model.joblib")

# 對資料進行**

from sklearn.datasets import load_digits

digits = load_digits()

x = digits.data

y = digits.target

print("**值:", model.predict(x[15:20]))

print("實際值:", y[15:20])

輸出為:

**值: [5 6 7 8 9]

實際值: [5 6 7 8 9]

看起來也很簡單,同pickle的區別是joblib會以多程序方式來進行,據說效能會好些。

sklearn資料庫 老魚學sklearn

在做機器學習時需要有資料進行訓練,幸好sklearn提供了很多已經標註好的資料集供我們進行訓練。本節就來看看sklearn提供了哪些可供訓練的資料集。這些資料位於datasets中,為 載入波士頓房價資料,可以用於線性回歸用 sklearn.datasets.load boston 載入方式為 fr...

sklearn交叉驗證 老魚學sklearn

交叉驗證 cross validation 有時亦稱迴圈估計,是一種統計學上將資料樣本切割成較小子集的實用方法。於是可以先在乙個子集上做分析,而其它子集則用來做後續對此分析的確認及驗證。一開始的子集被稱為訓練集。而其它的子集則被稱為驗證集或測試集。交叉驗證是一種評估統計分析 機器學習演算法對獨立於訓...

sklearn交叉驗證3 老魚學sklearn

在上乙個博文中,我們用learning curve函式來確定應該擁有多少的訓練集能夠達到效果,就像乙個人進行學習時需要做多少題目就能擁有較好的考試成績了。本次我們來看下如何調整學習中的引數,類似乙個人是在早上7點鐘開始讀書好還是晚上8點鐘讀書好。資料仍然利用手寫數字識別作為訓練資料 from skl...