我在R,python statmodels和sklearn中进行了逻辑回归的一些实验.虽然R和statmodels给出的结果是一致的,但sklearn返回的结果有些不一致.我想了解为什么这些结果不同.据我所知,它可能与木材下使用的优化算法不同.
具体来说,我使用标准Default数据集(在ISL书中使用).以下Python代码将数据读入数据帧Default.
import pandas as pd
# data is available here
Default = pd.read_csv('https://d1pqsl2386xqi9.cloudfront.net/notebooks/Default.csv', index_col=0)
#
Default['default']=Default['default'].map({'No':0, 'Yes':1})
Default['student']=Default['student'].map({'No':0, 'Yes':1})
#
I=Default['default']==0
print("Number of 'default' values :", Default[~I]['balance'].count())
Run Code Online (Sandbox Code Playgroud)
"默认"值的数量:333.
总共有10000个例子,只有333个阳性
我使用以下内容
library("ISLR")
data(Default,package='ISLR')
#write.csv(Default,"default.csv")
glm.out=glm('default~balance+income+student', family=binomial, data=Default)
s=summary(glm.out)
print(s)
#
glm.probs=predict(glm.out,type="response")
glm.probs[1:5]
glm.pred=ifelse(glm.probs>0.5,"Yes","No")
#attach(Default)
t=table(glm.pred,Default$default)
print(t)
score=mean(glm.pred==Default$default)
print(paste("score",score))
Run Code Online (Sandbox Code Playgroud)
结果如下
调用:glm(formula ="default~balance + income + student",family = binomial,data = Default)
Deviance Residuals:Min 1Q Median 3Q Max
-2.4691 -0.1418 -0.0557 -0.0203 3.7383系数:
Run Code Online (Sandbox Code Playgroud)Estimate …