【问题标题】:Scikit Learn: Logistic Regression model coefficients: ClarificationScikit Learn:逻辑回归模型系数:澄清
【发布时间】:2013-09-30 09:25:30
【问题描述】:

我需要知道如何以我可以自己生成预测概率的方式返回逻辑回归系数。

我的代码如下所示:

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 生成预测概率的正确格式? 谢谢!

【问题讨论】:

    标签: python scikit-learn logistic-regression


    【解决方案1】:

    查看文档 (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html),lr.coef_ 不存储偏移系数

    coef_array, shape = [n_classes-1, n_features] 的系数 决策函数的特征。 coef_ 是派生的只读属性 从 raw_coef_ 遵循 liblinear 的内部内存布局。 intercept_array, shape = [n_classes-1] 添加了拦截(又名偏差) 到决策函数。仅当参数可用 拦截设置为 True。

    尝试:

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

    【讨论】:

    • #prgao,谢谢,但您的回答只告诉我如何不生成概率。你知道如何计算它们吗?谢谢。
    • sigmoid(dot([val1, val2], lr.coef_) + lr.intercept_)
    • #prgao,做到了。该死,我认为这会起作用sigmoid( dot([val1, val2, 1], lr.coef_.T)),但事实证明,我需要包含两次拦截,如:sigmoid( dot([val1, val2, 1], lr.coef_.T) + lr.intercept_ )。感谢您指出这一点。
    • 可以简写为:sigmoid( dot([val1, val2, 2], lr.coef_.T) )。注意2 值。这有效地增加了一个额外的拦截项。
    • 以防万一这对某人有用。我正在尝试这个,我从 predict_proba 结果和 prgao 提出的解决方案中得到了不同的值。事实证明我没有将我的概率标准化(除以总和)。
    【解决方案2】:

    最简单的方法是调用LR分类器的coef_属性:

    coef_的定义请查看Scikit-Learn document

    查看示例:

    from sklearn.linear_model import LogisticRegression
    
    clf = LogisticRegression()  
    clf.fit(x_train,y_train)  
    
    weight = classifier.coef_  
    

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 2017-03-31
      • 2018-10-29
      • 2018-03-01
      • 2019-04-11
      • 2017-11-20
      • 2018-12-01
      • 2016-07-31
      • 2012-06-27
      相关资源
      最近更新 更多