DAY13支持向量机演算法(续二)

昨天介绍完SMO算法第二步,今天就要来写这个方法第三步,
第三步:计算学习率K并计算aj(限制范围)
https://ithelp.ithome.com.tw/upload/images/20210927/20141654txXJGReowI.png
程序码如下:

K = -2.0 * full_label_data_x[i,:]*full_label_data_x[j,:].T + full_label_data_x[i,:]*full_label_data_x[i,:].T + full_label_data_x[j,:]*full_label_data_x[j,:].T
	print("第",i+1,"笔K:",K)	

结果:

第 1 笔K: [[197.]]
第 2 笔K: [[3961.]]
第 3 笔K: [[73.]]
第 4 笔K: [[3716.]]
第 5 笔K: [[1961.]]
第 6 笔K: [[2516.]]
第 7 笔K: [[6597.]]
第 8 笔K: [[4954.]]
第 9 笔K: [[73.]]
第 10 笔K: [[197.]]
第 11 笔K: [[2165.]]
第 12 笔K: [[1818.]]
第 13 笔K: [[578.]]
第 14 笔K: [[2665.]]
第 15 笔K: [[5090.]]
第 16 笔K: [[2600.]]
第 17 笔K: [[2845.]]
第 18 笔K: [[5032.]]
第 19 笔K: [[3490.]]
第 20 笔K: [[3920.]] 

算完之後带回
https://ithelp.ithome.com.tw/upload/images/20210927/20141654MuEzRsf0RH.png
就可以得到更新後a值,不过在此之前,为了得到j点的误差值,所以要再算一次误差-->(之前是计算i),算完误差Ej ,之後就可以带入
程序码如下:

#算j点误差
	fXj = float(np.multiply(a,y)*(full_label_data_x*full_label_data_x[j,:].T)) + b
	Ej = fXj - float(y[j])
	print("第",i+1,"笔Ej:",Ej)
	#带回公式
	a[0][j] += y[j]*(Ei - Ej)/K
	print("第",i+1,"笔a:",a[0][j])

结果如下:

第 1 笔Ej: 1.0
第 1 笔a: 0.00038218994840435696
第 2 笔Ej: 0.9545193961398816
第 2 笔a: 0.0005076246701730175
第 3 笔Ej: -1.8831573154518741
第 3 笔a: -1.371065412029723e-05
第 4 笔Ej: -1.9790222090609924
第 4 笔a: -1.0340868586040355e-05
第 5 笔Ej: -2.0444414676852096
第 5 笔a: 0.00018170608599350841
第 6 笔Ej: -0.8774225656724229
第 6 笔a: -0.0011927618928813974
第 7 笔Ej: -9.412946850594
第 7 笔a: 0.000703022663047214
第 8 笔Ej: 0.8390105025646216
第 8 笔a: 0.001066839425425307
第 9 笔Ej: -0.10157905044296056
第 9 笔a: 0.001914480569161919
第 10 笔Ej: -9.664588349599235
第 10 笔a: 0.008956264784050677
第 11 笔Ej: 51.00899861035159
第 11 笔a: -0.009735147587753203
第 12 笔Ej: -3.442576883213487
第 12 笔a: 0.00027379122944610665
第 13 笔Ej: -3.8034337236234546
第 13 笔a: -0.00037184448981867165
第 14 笔Ej: -0.07532520299004797
第 14 笔a: 0.0038761578625881605
第 15 笔Ej: -18.08345430086565
第 15 笔a: -0.0070364892806495626
第 16 笔Ej: 3.2571522501932657
第 16 笔a: 0.007169560528442682
第 17 笔Ej: -13.11523754861583
第 17 笔a: 0.0037770094813644206
第 18 笔Ej: 7.543437855094942
第 18 笔a: 0.0010896256504895792
第 19 笔Ej: 2.945063765437575
第 19 笔a: 0.008803649131895111
第 20 笔Ej: 2.0985230305104867
第 20 笔a: 0.00046520592849444203 

然後依据之前所说的H和L,来决定正确的a
https://ithelp.ithome.com.tw/upload/images/20210927/20141654N3JLomRb3I.png
所以程序码如下:

#限制范围L和H
	if a[0][j] > H:
		a[0][j] = H
	elif L > a[0][j]:
		a[0][j] = L
	print("第",i+1,"笔经过限制a:",a[0][j])

限制之後,结果如下:

第 1 笔经过限制a: 0.0008988764044943821
第 2 笔经过限制a: 0.0
第 3 笔经过限制a: 0.0
第 4 笔经过限制a: 0.0
第 5 笔经过限制a: 0.0
第 6 笔经过限制a: 0.0
第 7 笔经过限制a: 0.0
第 8 笔经过限制a: 0.0051160018542637025
第 9 笔经过限制a: 0.006715828942402496
第 10 笔经过限制a: 0.0
第 11 笔经过限制a: 0.0
第 12 笔经过限制a: 0.006715828942402496
第 13 笔经过限制a: 0.0
第 14 笔经过限制a: 0.011608034286430874
第 15 笔经过限制a: 0.0051160018542637025
第 16 笔经过限制a: 0.0
第 17 笔经过限制a: 0.0
第 18 笔经过限制a: 0.0
第 19 笔经过限制a: 0.0008988764044943821
第 20 笔经过限制a: 0.0

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

男人走着走着来到了小木屋前,刚到小木屋时, 男人并没有进去,只是站在外面,望向了屋内,随即男子举起了手,朝着木屋方向,划了下去,顿时,木屋就燃烧了起来,而在同一时间,屋子内的狐狸冲了出来,伸出利爪,朝男人扑了过去, 男人一个侧身闪过,同时狐狸立刻扭身後翻,用後脚踢向男人,男人瞬间朝着後方飞了出去
		--|即便你忘了我,我还是会守护你|--  MS.CM

<<:  Day 13 - 依 COMPANY 前台页面分析拆解後,逐步建立後台功能 - 文字编辑器及相簿应用 - ASP.NET Web Forms C#

>>:  DAY15 - 第四个小范例 : Line股价机器人

我们的基因体时代-AI, Data和生物资讯 Day11-基因疗法中之腺病毒载体与机器学习

上一篇我们的基因体时代-AI, Data和生物资讯 Day10-基因疗法中之腺病毒载体与机器学习分享...

[进阶指南] 严格模式( Day29 )

我们可以在开发环境中使用 <React.StrictMode>进入严格模式 严格模式帮...

资安学习路上-网站常见漏洞与 Injection的爱恨情仇1

讲师 : 社长 林子婷(飞飞) 时间 : 19:00-21:00(授课时间共2小时) 授课内容:网...

予焦啦!检验核心映像档:开机流程、OpenSBI 惯例、ELF 浅谈

本节是以 Golang 上游 1a708bcf1d17171056a42ec1597ca8848c...

Golang 学习笔记-- 快速上手/重点整理 - 2 - var, const

print import ("fmt") fmt.Println('hello'...