[英]How to get comparable and reproducible results from LogisticRegressionCV and GridSearchCV
我想用不同的參數對不同的分類器進行評分。
為了加速LogisticRegression
我使用LogisticRegressionCV
(至少快 2 倍)並計划為其他人使用GridSearchCV
。
但是問題雖然它給了我相等的C
參數,但不是AUC ROC
評分。
我會嘗試修復許多參數,如scorer
、 random_state
、 solver
、 max_iter
、 tol
......請看例子(真實數據沒有):
測試數據及通用部分:
from sklearn import datasets
boston = datasets.load_boston()
X = boston.data
y = boston.target
y[y <= y.mean()] = 0; y[y > 0] = 1
import numpy as np
from sklearn.cross_validation import KFold
from sklearn.linear_model import LogisticRegression
from sklearn.grid_search import GridSearchCV
from sklearn.linear_model import LogisticRegressionCV
fold = KFold(len(y), n_folds=5, shuffle=True, random_state=777)
grid = {
'C': np.power(10.0, np.arange(-10, 10))
, 'solver': ['newton-cg']
}
clf = LogisticRegression(penalty='l2', random_state=777, max_iter=10000, tol=10)
gs = GridSearchCV(clf, grid, scoring='roc_auc', cv=fold)
gs.fit(X, y)
print ('gs.best_score_:', gs.best_score_)
gs.best_score_:0.939162082194
searchCV = LogisticRegressionCV(
Cs=list(np.power(10.0, np.arange(-10, 10)))
,penalty='l2'
,scoring='roc_auc'
,cv=fold
,random_state=777
,max_iter=10000
,fit_intercept=True
,solver='newton-cg'
,tol=10
)
searchCV.fit(X, y)
print ('Max auc_roc:', searchCV.scores_[1].max())
最大 auc_roc:0.970588235294
求解器newton-cg
僅用於提供固定值,其他也嘗試過。 我忘記了什么?
PS 在這兩種情況下,我也收到警告“ /usr/lib64/python3.4/site-packages/sklearn/utils/optimize.py:193: UserWarning: Line Search failed warnings.warn('Line Search failed') “我也看不懂。 如果有人也描述了它的含義,我會很高興,但我希望它與我的主要問題無關。
通過@joeln 評論也添加max_iter=10000
和tol=10
參數。 它不會改變任何數字的結果,但警告消失了。
這是Tom在 scikit-learn 問題跟蹤器上的回答副本:
LogisticRegressionCV.scores_
給出所有折疊的分數。 GridSearchCV.best_score_
給出所有折疊的最佳平均分數。
要獲得相同的結果,您需要更改代碼:
print('Max auc_roc:', searchCV.scores_[1].max()) # is wrong
print('Max auc_roc:', searchCV.scores_[1].mean(axis=0).max()) # is correct
通過還使用默認的tol=1e-4
而不是您的tol=10
,我得到:
('gs.best_score_:', 0.939162082193857)
('Max auc_roc:', 0.93915947999923843)
剩余的(小)差異可能來自LogisticRegressionCV
熱啟動(這實際上使它比GridSearchCV
更快)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.