Svm精准率,召回率问题

来源:11-6 到底什么是核函数

寅时猛抽风

2018-09-20

在逻辑回归中,wx+b=0就是决策边界,要调整准确率就是调整等号右边的数值,这个很容易可以实现对于决策边界的人为调整。但是在svm中,我们可以很容易的求出准确率召回率,但是我看的资料上说,通过拉格朗日变换之后,实际上最后sklearn中fit()之后存储的是alpha值,这样的话,我们怎么去调整精准率和召回率呢

写回答

1回答

liuyubobobo

2018-09-20

其实所有的算法,调整精准率和召回率的原理是一样的。近乎所有的算法,都是对于每一个数据点,计算了一个值,通常称为“决策值”,让这个决策值,和一个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]


加油!:)

0
3
liuyubobobo
回复
寅时猛抽风
抱歉,我不确定你的水平,也不敢肯定是否肯定对于你来说对你深入理解机器学习有帮助。我只能说我的课程系统讲解了工科学生所需要的线性代数基础,并且结合了编程。我印象里你已经整体复习过一遍线性代数,通过你的问题,我认为你的基础也不错,所以可能你并不需要那个课程。那个课程正在更新中,更新较慢,你也可以等待一下更新,整体看一下课程目录的内容,是否是你需要的。加油!
2018-09-20
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程