我正在浏览这个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_
答案 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
"""