【发布时间】:2023-04-04 22:45:01
【问题描述】:
这是我第一次尝试在python中使用逻辑回归,但遇到了一个严重的问题。
我感兴趣的结果不是零一输出,意思是关于 logit 选择的“决定”。相反,我想获得选择一个选项的概率。我也有来自 Stata 的概率输出以供比较。
我有三个包含数据的列表:scLL、scLL2 和 scLLchoice。我读到 Stata 忽略了 NaN 数据,所以因为有时 scLL 和 scLL2 可能包含 NaN 我尝试了两种不同的方法。如果行中的数据为 NaN,我刚刚删除了 scLL、scLL2 和 scLLchoice 中的行。另一种选择是使用 imputer - (正如您在代码中看到的那样),但效果是一样的。这是一个代码:
X=list(zip(scLL, scLL2))
y=scLLchoice
probStim2a=[]
imputer = SimpleImputer(missing_values=float("nan"), strategy='mean')
X_imputed = imputer.fit_transform(X)
logistic_regression= LogisticRegression()
logistic_regression.fit(X_imputed,y)
y_pred=logistic_regression.predict(X_imputed)
probStim2a=list(logistic_regression.predict_proba(X_imputed)[:,1])
for i in range(len(probStim2a)):
print (probStim2a[i])
这是我输出的一部分:
0.5146826469187935
0.5891472587984292
0.596839657578841
0.5570721046966637
0.35240422902193136
问题是Stata的输出完全不同:
0,5313423
0,6109276
0,6185878
0,5741577
0,3578928
我检查了输入是否相同(确实如此)。 我还尝试使用 statsmodel 进行比较,我再次得到了不同的输出(不仅与来自 Stata 的数据不同,而且与 sklearn 输出相比也不同)。这些不同的工具是否有可能产生如此不同的输出,而我的代码中不是一些错误?我知道这是根据概率计算的,但 2 + 2 不应该等于 5,因为我使用了不同的计算器...
我该怎么办?
【问题讨论】:
-
这些答案是针对完全相同的测试集的吗?
-
是的,它们是一样的
-
如果输入的顺序相同并且两个程序中的参数相同并且它们都使用相同的舍入近似值,那么它们应该是相同的。否则会有差异
-
在一天结束时,每个程序中的代码编写不同,多次迭代的微小变化可能会导致最终结果的微小变化。没什么好担心的。在我看来
标签: python scikit-learn statistics stata logistic-regression