(采用SMO算法优化拉格朗日乘子a) 由于时间问题,以下训练采用的是数据集的一小部分进行训练与测试。 代码参考自: Dodo teacher 在其代码中的SMO算法部分,关于第一个变量ai选择那里,判断是否满足KKT条件,我作出了修改,修改成和书本一样的3个KKT条件。而Dodo那个我有点不明白为啥那样写,而且他的测试准确率是99%, 我改成和书本一样后测试准确率升到了100%。。。。。。
KKT条件看这里:
SMO算法关于第一个变量选择中的KKT条件简化推导
代码里面注释挺全的可以看里面 这里解释一些里面一小部分: 代码注释里关于Ei的更新过程,并没有遍历整个训练集,而是遍历所有支持向量(即a>0的实例x,即支持向量) 为啥a>0对应的实例是支持向量? 请看/weixin_43646592/article/details/109968198
#coding=utf-8#Author:Dodo