DAY14支持向量机演算法(续三)

昨天介绍完SMO算法第三步,今天就要来写这个方法第四步,
昨天我们得到aj,接下来要使用aj来更新ai
第四步: 更新ai和b
https://ithelp.ithome.com.tw/upload/images/20210928/201416542gASbpS5CS.png
(更新b1和b2)
https://ithelp.ithome.com.tw/upload/images/20210928/20141654pW8TwXOpTY.png
再利用b1和b2更新b
https://ithelp.ithome.com.tw/upload/images/20210928/20141654vPeInNgREt.png
只要算出a和b就可以带回
https://ithelp.ithome.com.tw/upload/images/20210928/20141654vHoM0GTCvF.png
就可以算出分割线
所以程序如下:
首先:

	#保留旧的ai和aj
	a_i = copy.deepcopy(a[0][i]) 
	a_j = copy.deepcopy(a[0][j])

然後更新ai

	a[0][i] += y[j]*y[i]*(a_j  - a[0][j])
	print("第",i+1,"个ai:",a[0][i])

结果如下:

第 1 个ai: 0.0004316857327865314
第 2 个ai: 0.0
第 3 个ai: 0.00012976182870841016
第 4 个ai: 0.0
第 5 个ai: 0.0
第 6 个ai: 0.0
第 7 个ai: 0.0
第 8 个ai: 0.0
第 9 个ai: 0.0
第 10 个ai: 0.0
第 11 个ai: 0.0
第 12 个ai: 8.424245746413649e-05
第 13 个ai: 0.0
第 14 个ai: 0.00037026095235359607
第 15 个ai: 0.0
第 16 个ai: 0.0
第 17 个ai: 0.0
第 18 个ai: 0.0004316857327865314
第 19 个ai: 0.0
第 20 个ai: 0.0005000227810620062

接下来更新b1和b2来算出b
程序如下:

b1 = b - Ei- y[i]*(a[0][i]-a_i)*full_label_data_x[i,:]*full_label_data_x[i,:].T - y[j]*(a[0][j]-a_j)*full_label_data_x[i,:]*full_label_data_x[j,:].T
	b2 = b - Ej- y[i]*(a[0][i]-a_i)*full_label_data_x[i,:]*full_label_data_x[j,:].T - y[j]*(a[0][j]-a_j)*full_label_data_x[j,:]*full_label_data_x[j,:].T
	print("第",i+1,"个b1:",b1)
	print("第",i+1,"个b2:",b2)

结果如下:

第 1 个b1: [[1.]]
第 1 个b2: [[1.]]
第 2 个b1: [[1.]]
第 2 个b2: [[1.]]
第 3 个b1: [[-1.00838574]]
第 3 个b2: [[-1.00838574]]
第 4 个b1: [[-1.6918239]]
第 4 个b2: [[-1.0754717]]
第 5 个b1: [[-0.00628931]]
第 5 个b2: [[-1.47798742]]
第 6 个b1: [[-1.42767296]]
第 6 个b2: [[-1.6918239]]
第 7 个b1: [[-1.44863732]]
第 7 个b2: [[-1.47798742]]
第 8 个b1: [[-1.50314465]]
第 8 个b2: [[-1.0754717]]
第 9 个b1: [[-1.37797208]]
第 9 个b2: [[-1.37797208]]
第 10 个b1: [[-1.21495321]]
第 10 个b2: [[-1.50686302]]
第 11 个b1: [[-2.54204735]]
第 11 个b2: [[-2.54204735]]
第 12 个b1: [[-2.35083904]]
第 12 个b2: [[-1.86381791]]
第 13 个b1: [[-1.97834905]]
第 13 个b2: [[-1.86381791]]
第 14 个b1: [[-2.56397375]]
第 14 个b2: [[-1.63621178]]
第 15 个b1: [[-1.10197473]]
第 15 个b2: [[-1.86137684]]
第 16 个b1: [[-2.42958329]]
第 16 个b2: [[-2.42958329]]
第 17 个b1: [[-1.95617818]]
第 17 个b2: [[-1.71874257]]
第 18 个b1: [[-1.32858274]]
第 18 个b2: [[-2.74969293]]
第 19 个b1: [[-1.71874257]]
第 19 个b2: [[-2.5955026]]
第 20 个b1: [[-5.25369212]]
第 20 个b2: [[-5.25369212]]

最後利用限制范围就可以算出误差b
程序如下:

#更新b,C为之前所说上界-->那时候带入为0.6
	if (0 < a[0][i]) and (C > a[0][i]): 
		b = b1
	elif (0 < a[0][j]) and (C > a[0][j]): 
		b = b2
	else: 
		b = (b1 + b2)/2

结果如下:

第 1 个b: [[-1.79865772]]
第 2 个b: [[-1.84697987]]
第 3 个b: [[-2.4604409]]
第 4 个b: [[-2.71749958]]
第 5 个b: [[-1.77429244]]
第 6 个b: [[-3.02793887]]
第 7 个b: [[-3.21142206]]
第 8 个b: [[-2.34219118]]
第 9 个b: [[-3.21351504]]
第 10 个b: [[-2.29521131]]
第 11 个b: [[-2.51540433]]
第 12 个b: [[-1.87184751]]
第 13 个b: [[-2.26508294]]
第 14 个b: [[-3.24817907]]
第 15 个b: [[-2.23019153]]
第 16 个b: [[-2.2969842]]
第 17 个b: [[-2.16926286]]
第 18 个b: [[-2.16926286]]
第 19 个b: [[-2.35918226]]
第 20 个b: [[-2.55068351]]

好,今天支持SMO算法第四步算是完成了,明天就开始写真正再迭代可能会遇到甚麽情况

狐狸不敢大意,小心翼翼地往前查看,发现男子消失不见了,狐狸立刻警觉的看着四周,突然从土里伸出一只红色手抓住了狐狸的尾巴,刹那间,狐狸的尾巴烧了起来,狐狸立刻在地上翻滚了起来,企图把火焰熄灭,男子趁机破土而出,并从口袋里拿出了一把刀,往狐狸的方向冲过去
		--|这是献祭给他的礼物,希望你会喜欢|--  CS.MM

<<:  Day13: 【TypeScript 学起来】只有 TS 才有的型别: Enum (列举)

>>:  统整先前的小缺漏

c++ 打包执行档

linux中:使用cmake,把编译生成全部放入out文件夹,然後这个就是没有源码的linux执行包...

介绍RESTful api(Day9)

RESTful api是什麽 在网路上有蛮多说明他的内容,我觉得API 是什麽? RESTful A...

D23 - 用 Swift 和公开资讯,打造投资理财的 Apps { 台股成交量实作.3 }

在 KLineViewController 开出的 volumeDataSet 会在 parent ...

Day15 单纯贝氏分类器实作

https://github.com/PacktPublishing/Machine-Learni...

[Day12] 建立订单交易API_5

本节将继续实作内文加密,程序如下 def aes_encrypt(key, content, iv)...