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

<<:  Android Studio初学笔记-Day15-ListView

>>:  Day 30 - [最终章] 完赛心路历程

【D13】取得:加权指数历史资料,并观察量与指数的关系

前言 昨天取得九月的加权指数资料,但是时间太短,看不出来量与价格的关系,所以就要取得更远的资料罗。取...

Day-3 Python Bool 整数 整数运算

接着针对资料型态为数字进行说明: Bool 资料型态为: True 与 False 使用 bool(...

Day 17:上架 Google Play

前言 当我们终於准备上架 Google Play,我们需要决定在哪些国家、年龄层、装置等才能够看到我...

官方文件

在 Shioaji 有提供一份 jupyter notebook 档案,里面有相关的示范程序码。我们...

Day23 ( 游戏设计 ) 射击幽浮

射击幽浮 教学原文参考:射击幽浮 这篇文章会介绍如何使用「建立游戏角色」、「游戏角色座标」、「游戏角...