昨天介绍完SMO算法第三步,今天就要来写这个方法第四步,
昨天我们得到aj,接下来要使用aj来更新ai
第四步: 更新ai和b
(更新b1和b2)
再利用b1和b2更新b
只要算出a和b就可以带回
就可以算出分割线
所以程序如下:
首先:
#保留旧的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 (列举)
linux中:使用cmake,把编译生成全部放入out文件夹,然後这个就是没有源码的linux执行包...
RESTful api是什麽 在网路上有蛮多说明他的内容,我觉得API 是什麽? RESTful A...
在 KLineViewController 开出的 volumeDataSet 会在 parent ...
https://github.com/PacktPublishing/Machine-Learni...
本节将继续实作内文加密,程序如下 def aes_encrypt(key, content, iv)...