# coding: utf-8 ## 感知器模型流程 """ 1.初始化w, b 2.遍历所有训练数据集中选出的误分类点: 2.1.如果y != sign(wx+b) 或者 y*(wx+b) <= 0 则为误分类点 2.2 根据误分类点计算:w_new = w_old -alpha * 对w的梯度, b_new = b_old - alpha * 对b的梯度 3.直到没有误分类点或者达到迭代次数停止迭代. """ import sys import numpy as np import matplotlib.pyplot as plt p_x = np.array([[4.0, 2.0], [3.0, 2.0], [2.5, 1.0], [2.0, 1.0]]) # print(p_x) # sys.exit() y = np.array([1, 1, -1, -1]) # 画出源数据点图分布 for i in range(len(p_x)): if y[i] == 1: # print(p_x[i][0], p_x[i][1]) print(p_x[i]) plt.plot(p_x[i][0], p_x[i][1], 'ro') else: plt.plot(p_x[i][0], p_x[i][1], 'bo') # plt.show() # sys.exit() ##找出分割超平面 # 初始化w,b w = np.array([1.0, 1.0]) b = 1.0 # 设置初始学习率 alpha = 0.5 # 设置迭代次数 for i in range(160): # 选择误分类点 choice = -1 error_list = [] for j in range(len(p_x)): # 判断误分类点
支持向量机(SVM)---代码实现
于 2023-07-26 16:58:40 首次发布