我目前正在使用sklearn的Ridge分类器,并希望将这个分类器与sklearn和其他库中的分类器进行集成。为了实现这一点,最理想的情况是提取给定输入属于类别列表中每个类别的概率。目前,我正在将类别与model.decision_function(x)
的输出进行配对,但这返回的是到超平面的距离,而不是直接的概率。这些距离值大约在-1到1之间变化。
distances = dict(zip(clf.classes_, clf.decision_function(x)[0]))
如何将这些距离转换为更具体的一组概率(一系列总和为1的正值)?我正在寻找类似于sklearn中SVC实现的clf.predict_proba()
的功能。
回答:
进一步的探索导致使用了softmax函数。
d = clf.decision_function(x)[0]probs = np.exp(d) / np.sum(np.exp(d))
这保证了一个0-1界定的分布,总和为1。