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')