DAY12支持向量机演算法(续一)

昨天介绍完SMO算法第一步,今天就要来写这个方法第二步,
而第2步步骤:选取两个点,并计算上下界H和L
https://ithelp.ithome.com.tw/upload/images/20210926/20141654BmMpfotAkN.png
C是自定义容许值,之前有说:
https://ithelp.ithome.com.tw/upload/images/20210926/20141654QDM7SipLXc.png
现在帮他加一个上限C,所以就会变成
https://ithelp.ithome.com.tw/upload/images/20210926/201416546y9dgxHkds.png
(免得ai 发散)
并且依照
https://ithelp.ithome.com.tw/upload/images/20210926/20141654KYo3rs7hsg.png

https://ithelp.ithome.com.tw/upload/images/20210926/201416546VnBriggF9.png
可以得知
https://ithelp.ithome.com.tw/upload/images/20210926/20141654tFn3dxIbSO.png
另外
https://ithelp.ithome.com.tw/upload/images/20210926/20141654Aef3JFFukg.png
所以
https://ithelp.ithome.com.tw/upload/images/20210926/20141654g47omqwO0w.png
也就是在每次跌代都要保持这等式,这时上下界为
https://ithelp.ithome.com.tw/upload/images/20210926/20141654xsKggxriyw.png
所以以二维为例,可能结果为: (y要是1或-1)-->类别不一样
https://ithelp.ithome.com.tw/upload/images/20210926/20141654YyxB09AnIq.png
(令a1=c(最大值))
最大值H:
https://ithelp.ithome.com.tw/upload/images/20210926/20141654JW0Y0ZgDP4.png
(令a1=0(最小值))
最小值L:
https://ithelp.ithome.com.tw/upload/images/20210926/20141654lgwpitrZA4.png
和类别一样
https://ithelp.ithome.com.tw/upload/images/20210926/201416547jvkhOGdH7.png
所以以此类推
(令a1=0(最大值))
最大值H:
https://ithelp.ithome.com.tw/upload/images/20210926/20141654RKqiWtU6To.png
(令a1=c(最小值))
最小值L:
https://ithelp.ithome.com.tw/upload/images/20210926/20141654QJFAm54dxU.png
把上述分两组,每一组各3个方程序解联立
1.
https://ithelp.ithome.com.tw/upload/images/20210926/20141654r7tEooJMQi.png
https://ithelp.ithome.com.tw/upload/images/20210926/20141654uU08hCUn1m.png
https://ithelp.ithome.com.tw/upload/images/20210926/20141654XzOhrG5OTB.png
2.
https://ithelp.ithome.com.tw/upload/images/20210926/201416547RnQqMOEuj.png
https://ithelp.ithome.com.tw/upload/images/20210926/20141654lUhEcwtGrq.png
https://ithelp.ithome.com.tw/upload/images/20210926/20141654JuQHah9Ovx.png
就可以得到一开始式子
https://ithelp.ithome.com.tw/upload/images/20210926/20141654nE4ItMPXXU.png
程序码如下:
一开始先创建选择函数:

import random
def select_J(i, m): #选择i不等於j
    j = i                                 
    while (j == i):
        j = int(random.uniform(0, m))
    return j

之後来创建上下界,并设定c

#设定a上界C
C=0.6
#第二步:计算上下界(每个i都要做)
j=select_J(i,len(full_label_data))
#不同边
if (y[i] != y[j]):
	L = max(0, a[0][j] - a[0][i])
	H = min(C, C + a[0][j] - a[0][i])
#同边
else:
	L = max(0, a[0][j] + a[0][i] - C)
	H = min(C, a[0][j] + a[0][i])
print("第",i+1,"笔H:",H)
print("第",i+1,"笔L:",L)

这样子就可以求到

第 1 笔H: 0.6
第 1 笔L: 0
第 2 笔H: 0.6
第 2 笔L: 0
第 3 笔H: 0.0
第 3 笔L: 0
第 4 笔H: 0.6
第 4 笔L: 0
第 5 笔H: 0.6
第 5 笔L: 0
第 6 笔H: 0.0
第 6 笔L: 0
第 7 笔H: 0.6
第 7 笔L: 0
第 8 笔H: 0.0
第 8 笔L: 0
第 9 笔H: 0.0
第 9 笔L: 0
第 10 笔H: 0.0
第 10 笔L: 0
第 11 笔H: 0.6
第 11 笔L: 0
第 12 笔H: 0.0
第 12 笔L: 0
第 13 笔H: 0.6
第 13 笔L: 0
第 14 笔H: 0.0
第 14 笔L: 0
第 15 笔H: 0.0
第 15 笔L: 0
第 16 笔H: 0.0
第 16 笔L: 0
第 17 笔H: 0.0
第 17 笔L: 0
第 18 笔H: 0.0
第 18 笔L: 0
第 19 笔H: 0.0
第 19 笔L: 0
第 20 笔H: 0.0

当然这边是没有更新a,所以L和H会是0(之後会更新),另外如果L等於H这样就可以确定a

好,今天支持SMO算法第二步算是完成了,明天就开始写第三部分

视角转回男人身上,男人用轻快的步伐来到森林入口,他看到了入口处的告示牌,只不过上面文字似乎和男孩看到的不太一样,上面写着:请勿进入, 男人笑了笑,随即用手放在告示牌,只见告示牌突然烧了起来,并发出凄惨的尖叫声,然後随即消失在空气中, 男人随即踏着轻快步伐,继续往森林里走
		--|我遵守了约定,只是更改了内容,甚麽都不剩|--  CS.MM

<<:  【在 iOS 开发路上的大小事-Day14】Firebase 的登入验证服务介绍

>>:  12 终止游戏

Day21-JDK可视化监控工具:jconsole(一)

Jconsole介绍 Jconsole是一个JMX相容的监视工具。它使用Java虚拟机器的JMX机制...

浏览器向 Web 服务器提交用户密码最可行的方法-原始密码(Raw password )

“原始密码(Raw password)”和“散列密码(hashed password)”是可行的解决...

虹语岚访仲夏夜-19(专业的小四篇)

如果可以  希望一年只想你一次 可惜  那有一天不想你 如果思念  是你身边空气 可不可以 让我也...

从 JavaScript 角度学 Python(15) - 模组 (Module)

前言 接下来聊聊 Python 中的模组 (Module) ,毕竟 JavaScript 也有所谓的...

[Day3] HTTP Verb/Method Tampering - HTTP 动词窜改

前言 相信大家看完上一篇之後,对於HTTP有一个基本的认识了,从这篇开始会介绍一些跟HTTP相关名字...