如何通过scikit-learn

时间:2016-09-21 20:53:29

标签: python scikit-learn

我正在浏览这个odds ratios in logistic regression tutorial,并尝试使用scikit-learn的逻辑回归模块获得完全相同的结果。使用下面的代码,我能够获得系数和截距,但我找不到找到教程中列出的模型的其他属性的方法,例如 log-mighthood,Odds Ratio,Std。 Err。,z,P> | z |,[95%Conf。间隔] 。如果有人可以告诉我如何使用sklearn包计算它们,我将不胜感激。

import pandas as pd
from sklearn.linear_model import LogisticRegression

url = 'http://www.ats.ucla.edu/stat/mult_pkg/faq/general/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_

3 个答案:

答案 0 :(得分:8)

你可以通过取系数的指数得到比值比:

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

# array([[ 1.80891307]])

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

答案 1 :(得分:4)

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

df

答案 2 :(得分:1)

我不知道使用scikit-learn的方法,但是statsmodels.api.stats中的 Table2x2 在您的情况下可能有用,因为它为您提供了OR,SE,CI和具有3行代码的P值:

import statsmodels.api as sm
table = sm.stats.Table2x2(np.array([[73, 756], [14, 826]]))
table.summary(method='normal')
"""
               Estimate    SE   LCB    UCB p-value
Odds ratio        5.697       3.189 10.178   0.000
Log odds ratio    1.740 0.296 1.160  2.320   0.000
Risk ratio        5.283       3.007  9.284   0.000
Log risk ratio    1.665 0.288 1.101  2.228   0.000
"""