天天看點

python學習——重溫sklearn中的若幹知識點

1.模型加速

這個痛點是我最近在做參數優化的時候,使用

GridSearchCV()      

來優化SVM模型的時候,居然跑了n多久時間還是沒跑完,更絕絕子的是,後面跑了太久jupyter逾時,斷開連結,程式挂了(跑了一天沒了,你說氣不氣)

後面複盤的時候,有可能是兩方面原因,一個是記憶體占用過多,導緻python程序被幹掉了,一個是jupyter逾時主動斷開了

jupyter的問題還是要解決,這裡先插個眼

先說模型加速的問題,下面參考文獻區是我找的一些解決方案,其中有一個比較簡單的方案就是說,使用BaggingClassifier來進行加速,見參考文獻第一個。

import time
import numpy as np
from sklearn.ensemble import BaggingClassifier, RandomForestClassifier
from sklearn import datasets
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import SVC

iris = datasets.load_iris()
X, y = iris.data, iris.target

X = np.repeat(X, 100, axis=0)
y = np.repeat(y, 100, axis=0)
start = time.time()
clf = OneVsRestClassifier(SVC(kernel='linear', probability=True, class_weight='balanced'))
clf.fit(X, y)
end = time.time()
print("Single SVC", end - start, clf.score(X,y))
proba = clf.predict_proba(X)

n_estimators = 10
start = time.time()
clf = OneVsRestClassifier(BaggingClassifier(SVC(kernel='linear', probability=True, class_weight='balanced'), max_samples=1.0 / n_estimators, n_estimators=n_estimators))
clf.fit(X, y)
end = time.time()
print ("Bagging SVC", end - start, clf.score(X,y))
proba = clf.predict_proba(X)

start = time.time()
clf = RandomForestClassifier(min_samples_leaf=20)
clf.fit(X, y)
end = time.time()
print ("Random Forest", end - start, clf.score(X,y))
proba = clf.predict_proba(X)      

我這裡貼一下代碼的結果

Single SVC 51.605311155319214 0.9666666666666667
Bagging SVC 4.764530658721924 0.9733333333333334
Random Forest 0.3716573715209961 1.0