1. 程式人生 > >sklearn之svm-葡萄酒質量預測(11)

sklearn之svm-葡萄酒質量預測(11)

本系列以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函式也接受類似檔案物件,而不是檔名。 由於模型內部表示在兩個不同的體系結構上可能不同,所以不支援在一個體繫結構上轉儲模型,並將其載入到另一個體繫結構上。