请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Svm精准率,召回率问题

在逻辑回归中,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]


加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 寅时猛抽风 #1
    好的,还要多加练习,东西真的好多
    回复 有任何疑惑可以回复我~ 2018-09-20 11:13:23
  • 提问者 寅时猛抽风 #2
    我这个视频看完了,打算买你的线性代数视频,我问一下线性代数的视频会对机器学习有帮助吗??
    回复 有任何疑惑可以回复我~ 2018-09-20 11:14:21
  • liuyubobobo 回复 提问者 寅时猛抽风 #3
    抱歉,我不确定你的水平,也不敢肯定是否肯定对于你来说对你深入理解机器学习有帮助。我只能说我的课程系统讲解了工科学生所需要的线性代数基础,并且结合了编程。我印象里你已经整体复习过一遍线性代数,通过你的问题,我认为你的基础也不错,所以可能你并不需要那个课程。那个课程正在更新中,更新较慢,你也可以等待一下更新,整体看一下课程目录的内容,是否是你需要的。加油!
    回复 有任何疑惑可以回复我~ 2018-09-20 12:08:50
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信