iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
AI & Data

數據分析方法研究和理解演算法系列 第 16

DAY16支持向量機演算法(續五)

昨天介紹完SMO並算出a,b,今天就要來算出w和標記在圖上,
https://ithelp.ithome.com.tw/upload/images/20210930/201416548k8afqkgJL.png
依照w的公式,我們可以得到下面程式:

y=np.array(y)
a=np.array(a)
full_label_data_x=np.array(full_label_data_x)
w = np.dot((np.tile(y.reshape(1, -1).T, (1, 2)) * full_label_data_x).T, a.T)

所以w結果如下

[[ 0.07407407]
 [-0.07393454]]

這樣子就算出斜率,接下來我們開始繪圖:首先幫大家複習一下繪圖:

import matplotlib.pyplot as plt
import numpy as np
import copy
#label1資料 第3維為類別
label1_data=np.array([[75,-15,1],[81,12,1],[71,-9,1],[86,20,1],[40,-20,1],[81,6,1],[84,-2,1],[81,15,1],[78,4,1],[74,-1,1]])
x_label1=[label1_data[i][0] for i in range(len(label1_data))]
y_label1=[label1_data[i][1] for i in range(len(label1_data))]

#label2資料 第3維為類別
label2_data=np.array([[35,19,-1],[30,25,-1],[23,2,-1],[36,17,-1],[3,-8,-1],[31,2,-1],[21,-7,-1],[8,-27,-1],[16,-12,-1],[59,20,-1]])
x_label2=[label2_data[i][0] for i in range(len(label2_data))]
y_label2=[label2_data[i][1] for i in range(len(label2_data))]

plt.scatter(x_label1,y_label1)   
plt.scatter(x_label2,y_label2) 
plt.show()

https://ithelp.ithome.com.tw/upload/images/20210930/20141654e6b5GslLMF.png
好,現在依據剛剛求得W-->我們程式如下:

#設置直線最大和最小x座標
x1 = max(full_label_data_x[:,0])
x2 = min(full_label_data_x[:,0])
#使用斜率
a1, a2 = w
b = float(b)
a1 = float(a1[0])
a2 = float(a2[0])
#算出對應X值的y值
y1, y2 = (-b- a1*x1)/a2, (-b - a1*x2)/a2
#劃出那條線
plt.plot([x1, x2], [y1, y2])

https://ithelp.ithome.com.tw/upload/images/20210930/201416541Dxh6yuQO1.png
這樣子分割線就畫完了
接下來要找出支持向量機的分割點:
程式如下:

for i in range(len(a[0])):
	#找尋ai大於0的點
    if abs(a[0][i]) > 0:
        x, y = full_label_data_x[i]
        #把它標示出來
        plt.scatter([x], [y], s=150, c='none', alpha=0.7, linewidth=1.5, edgecolor='red') 

結果為:
https://ithelp.ithome.com.tw/upload/images/20210930/20141654nDyU2raKMo.png

好,今天支持向量算法算是完成了,明天就開始研究分類和聚類方法

洞裡面是一隻娃娃,跟剛剛桌上娃娃基本上款式一模一樣,不同的是,這個有嘴巴,只是與其說是嘴巴,不如說是被刀子劃了一橫,看起來就像是嘴巴,男孩伸手慢慢地拿起了這個娃娃仔細端詳,突然娃娃像是有意識一樣,坐在男孩的肩膀上,並緩緩收起手,指著遠處冒火的地方,那正是燃燒中的小木屋

		--|去吧,我是一直如此地相信你|--  MS.CM

上一篇
DAY15支持向量機演算法(續四)
下一篇
DAY17聚類演算法
系列文
數據分析方法研究和理解演算法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言