如何使用 scikit-learn 获得优势比和其他相关特征

新手上路,请多包涵

我正在通过 逻辑回归教程中的优势比,并尝试使用 scikit-learn 的逻辑回归模块获得完全相同的结果。使用下面的代码,我能够获得系数和截距,但我找不到找到教程中列出的模型的其他属性的方法,例如对 数似然、优势比、标准。 Err., z, P>|z|, [95% Conf.间隔] 。如果有人能告诉我如何用 sklearn 包计算它们,我将不胜感激。

 import pandas as pd
from sklearn.linear_model import LogisticRegression

url = 'https://stats.idre.ucla.edu/wp-content/uploads/2016/02/sample.csv'
df = pd.read_csv(url, na_values=[''])
y = df.hon.values
X = df.math.values
y = y.reshape(200,1)
X = X.reshape(200,1)
clf = LogisticRegression(C=1e5)
clf.fit(X,y)
clf.coef_
clf.intercept_

原文由 Erdem KAYA 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 489
2 个回答

您可以通过取系数的指数来获得比值比:

 import numpy as np
X = df.female.values.reshape(200,1)
clf.fit(X,y)
np.exp(clf.coef_)

# array([[ 1.80891307]])

至于其他统计数据,这些不容易从 scikit-learn 获得(其中模型评估主要使用交叉验证完成),如果您需要它们,最好使用不同的库,例如 statsmodels

原文由 maxymoo 发布,翻译遵循 CC BY-SA 4.0 许可协议

除了@maxymoo 的回答,要获得其他统计数据,可以使用 statsmodel 。假设您的数据位于名为 DataFramedf 中,下面的代码应该显示一个很好的摘要:

 import pandas as pd
from patsy import dmatrices
import statsmodels.api as sm

y, X = dmatrices( 'label ~ age + gender', data=df, return_type='dataframe')
mod = sm.Logit(y, X)
res = mod.fit()
print res.summary()

原文由 Erdem KAYA 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题