sklearn之svm-葡萄酒質量預測(11)
阿新 • • 發佈:2018-12-15
本系列以sklearn的svm演算法為例,對葡萄酒質量預測,也可換用其它方法,比如隨機森林,因為sklearn的機器學習演算法呼叫形式基本差不多,可以自行舉一反三。 現在,我們來把訓練的模型儲存,然後,需要的時候,直接將資料送入模型 ,無需再訓練,先來看模型 儲存與讀入(模型持久化) 模型的永續性 在訓練了一個scikit-learn模型之後,最好有一種方法來儲存模型以供將來使用,而無需重新培訓。下一節將給出一個示例,說明如何使用pickle持久化模型。在處理pickle序列化時,我們還將回顧一些安全性和可維護性問題。
>>> from sklearn import svm
>> > from sklearn import datasets
>>> clf = svm.SVC(gamma='scale')
>>> iris = datasets.load_iris()
>>> X, y = iris.data, iris.target
>>> clf.fit(X, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='scale', kernel= 'rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
>>> import pickle
>>> s = pickle.dumps(clf)
>>> clf2 = pickle.loads(s)
>>> clf2.predict(X[0:1])
array([0])
>>> y[0]
0
在特定的scikitlearn中,使用joblib替換pickle 可能會更好。(dump & joblib.load),這對於內部攜帶大型numpy陣列的物件更有效,這通常是適合的scikit-learn估計器的情況,但只能pickle到磁碟,而不是字串:
>>> from sklearn.externals import joblib
>>> joblib.dump(clf, 'filename.joblib')
稍後,您可以使用以下工具返回pickle模型(可能是在另一個Python程序中):
>>> clf = joblib.load('filename.joblib')
joblib.dump和 joblib.load函式也接受類似檔案物件,而不是檔名。 由於模型內部表示在兩個不同的體系結構上可能不同,所以不支援在一個體繫結構上轉儲模型,並將其載入到另一個體繫結構上。