模型參數保存
方式1 使用 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
方式2 使用joblib’s 保存到文件(推薦)
例如
>>> from joblib import dump, load
>>> dump(clf, 'filename.joblib') 保存
>>> clf = load('filename.joblib') 調用
參考自 scikitlearn-docs 2.1.4
多分類策略
one vs rest 和 one vs one
1
One-vs-all 也稱為one vs rest
參考
https://www.cnblogs.com/sl0309/p/10395010.html
右側有三類,
在此策略下,
三角 為一類 叉叉和方格 一同為一類
同理
叉叉 為一類 三角和方格 一同為一類
方格 為一類 三角和叉叉 一同為一類
這樣 三個分類變成了 三個二分類
推廣
類1 類2 類3 類4 ….類k
分為k個二分類
1 類1和其他(類2,3,。。。之和)
2 類2和其他(類1,3,。。。之和)
…
k 類k和其他(類1,2,。。,k-1之和)
2
one-versus-one
一對一的分類。
參考 https://www.cnblogs.com/CheeseZH/p/5265959.html
有圖有三個類
成對(兩兩)組成
三角 和 叉叉
方格 和 叉叉
三角 和 方格
類1 類2 類3 類4 。。。 類k
K-1個 類1 類2 and 類1 類3 and 。。。。 and 類1 類k
K-2個 類2 類3 and 類2 類4 and 。。。 and 類2 類k
。。。
1個 類k-1 and 類k
共(k-1)x((k-1)+1)/2