Solver lbfgs supports only 'l2' or 'none' penalties, got l1 penalty.解決辦法

sklearn0.22版本,用以下代碼建立邏輯迴歸模型

lr = LogisticRegression(C = c_param, penalty = 'l1')

正則化懲罰選擇'L1'報錯,一臉懵C

 嗯,還是打印一下Ir看一下參數

LogisticRegression(C=0.01, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='auto', n_jobs=None, penalty='l1',
                   random_state=None, solver='lbfgs', tol=0.0001, verbose=0,
                   warm_start=False)

問題就出現在solver這個參數上,這個參數定義的是分類器,‘newton-cg’,‘sag’和‘lbfgs’等solvers僅支持‘L2’regularization,‘liblinear’ solver同時支持‘L1’、‘L2’regularization,若dual=Ture,則僅支持L2 penalty。

決定懲罰項選擇的有2個參數:dual和solver,如果要選L1範數,dual必須是False,solver必須是liblinear

問題搞清楚了,把上面代碼改成:

lr = LogisticRegression(C = c_param, penalty = 'l1',solver='liblinear')

 

這裏有一個問題沒有驗證過,之前使用sklearn0.18版本以前的,直接用lr = LogisticRegression(C = c_param, penalty = 'l1')是沒有問題的,可能是版本升級後纔有這個問題,有試過的朋友留言告知一下哩

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章