【问题标题】:Regression summary in PythonPython中的回归总结
【发布时间】:2017-05-12 23:29:38
【问题描述】:

我对 Python 还是很陌生。我想获得一个逻辑回归的摘要,如 R。我创建了变量 x_train 和 y_train,我正在尝试获得一个逻辑回归

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

clf = linear_model.LogisticRegression(C=1e5)
clf.fit(x_train, y_train)

我得到的是:

LogisticRegression(C=100000.0, class_weight=None, dual=False,
    fit_intercept=True, intercept_scaling=1, max_iter=100,
    multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,
    solver='liblinear', tol=0.0001, verbose=0, warm_start=False)

我想要一个包含重要级别的摘要,R2 ecc。

【问题讨论】:

    标签: python matplotlib scikit-learn logistic-regression


    【解决方案1】:

    您可以拨打clf.score(test_samples, true_values)获取R2

    意义不是由 sklearn 直接提供的,而是答案here 和这个code

    【讨论】:

      【解决方案2】:
      1. 要获得显着性级别,您可以使用sklearn.feature_selection.f_regression

      2. 要获取 R2,您可以使用sklearn.metrics.r2_score

      【讨论】:

        【解决方案3】:

        我建议您查看statsmodels 库。 Sk-learn 很棒(其他答案提供了获得 R2 和其他指标的方法),但statsmodels 提供的回归摘要与您可能在 R 中使用的非常相似。

        举个例子:

        import statsmodels.api as sm
        from sklearn.datasets import make_blobs
        
        x, y = make_blobs(n_samples=50, n_features=2, cluster_std=5.0,
                          centers=[(0,0), (2,2)], shuffle=False, random_state=12)
        
        logit_model = sm.Logit(y, sm.add_constant(x)).fit()
        print logit_model.summary()
        
        Optimization terminated successfully.
                 Current function value: 0.620237
                 Iterations 5
                                   Logit Regression Results                           
        ==============================================================================
        Dep. Variable:                      y   No. Observations:                   50
        Model:                          Logit   Df Residuals:                       47
        Method:                           MLE   Df Model:                            2
        Date:                Wed, 28 Dec 2016   Pseudo R-squ.:                  0.1052
        Time:                        12:58:10   Log-Likelihood:                -31.012
        converged:                       True   LL-Null:                       -34.657
                                                LLR p-value:                   0.02611
        ==============================================================================
                         coef    std err          z      P>|z|      [95.0% Conf. Int.]
        ------------------------------------------------------------------------------
        const         -0.0813      0.308     -0.264      0.792        -0.684     0.522
        x1             0.1230      0.065      1.888      0.059        -0.005     0.251
        x2             0.1104      0.060      1.827      0.068        -0.008     0.229
        ==============================================================================
        

        如果你想添加正则化,而不是在 Logit 初始化之后调用 .fit(),你可以调用 .fit_regularized() 并传入一个 alpha 参数(正则化强度)。如果这样做,请记住 sk-learn 中的 C 参数实际上是正则化强度的inverse

        【讨论】:

        • @claudio 你应该接受这个答案
        【解决方案4】:
        import statsmodels.api as sm      
        x_train1 = sm.add_constant(x_train1)
        lm_1 = sm.OLS(y_train, x_train1).fit()
        lm_1.summary()
        

        对于曾经非常习惯R的模型总结的人来说,这是一个非常有用的完整包

        有关更多信息,请参阅以下文章:

        1. statsmodels.api
        2. stats-models-vs-sklearn

        【讨论】:

          猜你喜欢
          • 2016-01-13
          • 2017-09-01
          • 1970-01-01
          • 2020-05-29
          • 2021-09-11
          • 2018-04-25
          • 2018-08-04
          • 2017-10-08
          • 2013-09-03
          相关资源
          最近更新 更多