Svm精准率,召回率问题
来源:11-6 到底什么是核函数
寅时猛抽风
2018-09-20
在逻辑回归中,wx+b=0就是决策边界,要调整准确率就是调整等号右边的数值,这个很容易可以实现对于决策边界的人为调整。但是在svm中,我们可以很容易的求出准确率召回率,但是我看的资料上说,通过拉格朗日变换之后,实际上最后sklearn中fit()之后存储的是alpha值,这样的话,我们怎么去调整精准率和召回率呢
写回答
1回答
-
其实所有的算法,调整精准率和召回率的原理是一样的。近乎所有的算法,都是对于每一个数据点,计算了一个值,通常称为“决策值”,让这个决策值,和一个threshold作比较。调整精准率召回率,就是要调整这个threshold。
对于scikit-learn中的svc,调用decision_function可以获得这个决策值。当有了这个决策值,你就可以通过precision_recall_curve方法,获得对于不同的threshold,相应的精准率,召回率是多少。你就可以根据你期待的标准,找到你需要的那个threshold。
最终,要应用这个threshold,我们只需要在预测的时候,计算待预测数据的decision_function的值,然后根据你设定的threshold进行分类就好了(而不是直接调用predict)。比如我们将获得的待预测数据集的decision_function的存在y_scores中,之后,只要再通过下面的我们自定义的决策分类函数就好了:
def adjusted_classes(y_scores, t): """ y_scores存储数据集的决策值,t为决策阈值。返回分类结果。 """ return [1 if y >= t else 0 for y in y_scores]
加油!:)
032018-09-20
相似问题