2013-09-24 4 views
17

Мне нужно знать, как вернуть коэффициенты логистической регрессии таким образом, чтобы я мог самостоятельно генерировать предсказанные вероятности.Scikit Learn: Логистические коэффициенты модели регрессии: Уточнение

Мой код выглядит следующим образом:

lr = LogisticRegression() 
lr.fit(training_data, binary_labels) 

# Generate probabities automatically 
predicted_probs = lr.predict_proba(binary_labels) 

Я предположил, что значения lr.coeff_ будет следовать типичной логистической регрессии, так что я мог вернуться предсказанные вероятности, как это:

sigmoid(dot([val1, val2, offset], lr.coef_.T)) 

Но это не соответствующая формулировка. Кто-нибудь имеет надлежащий формат для генерации прогнозируемых вероятностей из Scikit Learn LogisticRegression? Спасибо!

ответ

15

принять смотреть на документаций (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html), коэффициент смещения не хранится на lr.coef_ массиве coef_

, форма = [n_classes-1, n_features] коэффициент особенности в решении функция. coef_ - это свойство readonly, полученное из raw_coef_, которое следует за макетом внутренней памяти liblinear. intercept_ array, shape = [n_classes-1] Intercept (a.k.a. bias) добавлен к функции решения. Он доступен только тогда, когда для параметра перехвата установлено значение True.

попробовать:

sigmoid(dot([val1, val2], lr.coef_) + lr.intercept_) 
+0

#prgao, спасибо, но ваш ответ только говорит мне, как не генерировать вероятности. Вы знаете, как их вычислить? Благодарю. – zbinsd

+2

сигмоид (точка ([val1, val2], lr.coef_) + lr.intercept_) – prgao

+1

#prgao, это сделал. Черт, я полагал, что это сработало бы «сигмоид» (точка ([val1, val2, 1], lr.coef_.T)), но, оказывается, мне нужно включить перехват дважды, как в: 'sigmoid (точка ([val1, val2, 1], lr.coef_.T) + lr.intercept_) '. Спасибо за указание на это. – zbinsd