如果我运行 4 个类的基本逻辑回归,我可以获得 Predict_proba 数组。
如何使用系数和截距手动计算概率?获得与 Predict_proba 生成的相同答案的确切步骤是什么?
网上似乎有很多关于此的问题和一些建议,这些建议要么不完整,要么不匹配。
例如,我无法从我的 sklearn 模型复制这个过程,那么缺少什么?
https://stats.idre.ucla.edu/stata/code/manually-generate-predicted-probabilities-from-a-multinomial-logistic-regression-in-stata/
Thanks,
因为我有同样的问题,但找不到给出相同结果的答案,所以我查看了sklearn GitHub 存储库寻找答案。使用他们自己的包中的函数,我能够创建与我得到的相同的结果predict_proba()
.
看来 sklearn 使用了一种特殊的softmax()
其代码中的函数与通常的 softmax 函数不同。
假设您构建了一个如下所示的模型:
from sklearn.linear_model import LogisticRegression
X = ...
Y = ...
model = LogisticRegression(multi_class="multinomial", solver="saga")
model.fit(X, Y)
然后你可以计算概率model.predict(X)
或者使用上面提到的 sklearn 函数来手动计算它们,如下所示。
from sklearn.utils.extmath import softmax,
import numpy as np
scores = np.dot(X, model.coef_.T) + model.intercept_
softmax(scores) # Sklearn implementation
在自己的文档中softmax()
函数,他们注意到
softmax 函数的计算方式为
np.exp(X) / np.sum(np.exp(X),轴=1)
当大值求幂时,这将导致溢出。因此
从每个数据点中减去每行中的最大值
防止这种情况发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)