深入浅出SVM(PART III)

SVM简介 SVM PPT3:核函数:有了核函数,SVM不仅仅可以处理回归问题,分类问题也可以解决。SMO:一种参数计算方法(这个大体了解,不重要) 一. 什么是SVM 1. 简介 SVM,曾经是一个特别火爆的概念。它的中文名:支持向量机(Support Vector Machine, 简称SVM)。因为它红极一时,所以关于它的资料特别多,而且杂乱。虽然如此,只要把握住SVM的一些特点,至少可以做到思路清晰。 首先,SVM是按照监督类学习方式进行运作的。即:数据当中含有目标值。 SVM采用监督学习方式,对数据进 阅读详情

点击上方“AI派”,选择“星标”公众号

第一时间获取价值内容

导读

今天是该系列第九篇文章,介绍支持向量机原理(PART III)。

    支持向量机(Support Vector Machine)是由Vapnik等人于1995年提出来的,之后随着统计理论的发展,支持向量机SVM也逐渐受到了各领域研究者的关注,在很短的时间就得到了很广泛的应用。支持向量机是被公认的比较优秀的分类模型,同时,在支持向量机的发展过程中,其理论方面的研究得到了同步的发展,为支持向量机的研究提供了强有力的理论支撑。

    本文为第三部分,介绍SVM原理第三章。

支持向量机的实践

核函数计算

     开始编程实现前,可以先回顾下SVM理论介绍的文章——“深入浅出SVM(PART I)”和求解过程的文章——“深入浅出SVM(PART II)”

    首先,导入基本库:

import numpy as np
import cPickle as pickle

    先为SVM模型声明一个类,:

class SVM:
    def __init__(self, dataSet, labels, C, toler, kernel_option):
        self.train_x = dataSet # 训练特征
        self.train_y = labels  # 训练标签
        self.C = C # 惩罚参数
        self.toler = toler     # 迭代的终止条件之一
        self.n_samples = np.shape(dataSet)[0] # 训练样本个数
        self.alphas = np.mat(np.zeros((self.n_samples, 1))) # 拉格朗日乘子
        self.b = 0
        self.error_tmp = np.mat(np.zeros((self.n_samples, 2))) # 保存误差E
        self.kernel_opt = kernel_option # 选用的核函数及其参数
        self.kernel_mat = calc_kernel(self.train_x, self.kernel_opt) # 核函数的输出

    在类中,包含了模型的训练数据和参数等。其中calc_kernel函数的功能为根据指定的核函数kernel_opt计算样本的核函数矩阵,具体实现如下:

def calc_kernel(train_x, kernel_option):
    '''
    input: train_x 训练样本的特征值
           kernel_option 核函数的类型以及参数
    output: kernel_matrix 样本的核函数的值'''
    m = np.shape(train_x)[0] # 样本个数
    kernel_matrix = np.mat(np.zeros((m, m))) # 初始化样本之间的核函数值
    for i in range(m):
        kernel_matrix[:, i] = cal_kernel_value(train_x, train_x[i, :], kernel_option)
    return kernel_matrix

     其中核函数矩阵里的每一个值表示为第i个样本和第j个样本的核函数的值,在计算过程中,用cal_kernel_value实现每一个样本与其它样本的核函数值,实现如下:

def cal_kernel_value(train_x, train_x_i, kernel_option):
    '''
    input: train_x 训练样本
           train_x_i 第i个训练样本
           kernel_option 核函数的类型以及参数
    output: kernel_value 样本之间的核函数的值 '''
    kernel_type = kernel_option[0] # 核函数的类型
    m = np.shape(train_x)[0] # 样本个数
    
    kernel_value = np.mat(np.zeros((m, 1)))
    
    if kernel_type == 'rbf': # rbf核函数
        sigma = kernel_option[1]
        if sigma == 0:
            sigma = 1.0
        for i in range(m):
            diff = train_x[i, :] - train_x_i
            kernel_value[i] = np.exp(diff * diff.T / (-2.0 * sigma**2))
    else: 
        kernel_value = train_x * train_x_i.T
    return kernel_value

    在计算核函数值时只用了高斯核函数,其它核函数形式可自行实现。

训练

    定义好核函数的计算方法后,接下来可以实现求解方法——SMO算法来进行模型的训练,如下:

def SVM_training(train_x, train_y, C, toler, max_iter, kernel_option = ('rbf', 0.431029)):
    '''
    input:  train_x 训练特征
            train_y 训练标签
            C 惩罚系数
            toler 迭代的终止条件
            max_iter 最大迭代次数
            kerner_option 核函数的类型及其参数
    output: svm模型'''
  
    svm = SVM(train_x, train_y, C, toler, kernel_option)
    
    # 开始训练
    entireSet = True
    alpha_pairs_changed = 0
    iteration = 0
    
    while (iteration < max_iter) and ((alpha_pairs_changed > 0) or entireSet):
        print("\t iterration: ", iteration)
        alpha_pairs_changed = 0


        if entireSet:
            # 遍历所有样本
            for x in range(svm.n_samples):
                alpha_pairs_changed += choose_and_update(svm, x)
            iteration += 1
        else:
            # 非边界样本
            bound_samples = []
            for i in range(svm.n_samples):
                if svm.alphas[i,0] > 0 and svm.alphas[i,0] < svm.C:
                    bound_samples.append(i)
            for x in bound_samples:
                alpha_pairs_changed += choose_and_update(svm, x)
            iteration += 1
        
        # 在所有样本和非边界样本之间交替
        if entireSet:
            entireSet = False
        elif alpha_pairs_changed == 0:
            entireSet = True


    return svm

    函数SVM_training通过在非边界样本或所有样本中交替遍历,选择出第一个需要优化的ai,优先选择遍历非边界样本,因为非边界样本更有可能需要调整,而边界样本常常不能得到进一步调整而留在边界上。循环遍历非边界样本并选出它们当中不满足KKT条件的样本进行调整,直到非边界样本全部满足KKT条件为止。当某一次遍历发现没有非边界样本需要调整时,就遍历所有样本,以检验是否整个集合都满足KKT条件。如果在整个集合的检验中又有样本需要被进一步调整时,就有必要再遍历非边界样本。最终不停地在“遍历所有样本”和“遍历非边界样本”之间切换,直到整个训练集都满足KKT条件为止。

    在选择出第一个变量ai后,需要判断该变量是否满足KKT条件;然后选择第二个变量aj,具体实现函数如下:    

def choose_and_update(svm, alpha_i):
      ''' 
     input: svm SVM模型
            alpha_i 选择出的第一个变量'''
    # 计算第一个样本的E_i
    error_i = cal_error(svm, alpha_i) 
    # 判断选择出的第一个变量是否违反了KKT条件
    if (svm.train_y[alpha_i] * error_i < -svm.toler) and (svm.alphas[alpha_i] < svm.C) or\
        (svm.train_y[alpha_i] * error_i > svm.toler) and (svm.alphas[alpha_i] > 0):
        # 1、选择第二个变量
        alpha_j, error_j = select_second_sample_j(svm, alpha_i, error_i)
        alpha_i_old = svm.alphas[alpha_i].copy()
        alpha_j_old = svm.alphas[alpha_j].copy()


        # 2、计算上下界
        if svm.train_y[alpha_i] != svm.train_y[alpha_j]:
            L = max(0, svm.alphas[alpha_j] - svm.alphas[alpha_i])
            H = min(svm.C, svm.C + svm.alphas[alpha_j] - svm.alphas[alpha_i])
        else:
            L = max(0, svm.alphas[alpha_j] + svm.alphas[alpha_i] - svm.C)
            H = min(svm.C, svm.alphas[alpha_j] + svm.alphas[alpha_i])
        if L == H:
            return 0


        # 3、计算eta
        eta = 2.0 * svm.kernel_mat[alpha_i, alpha_j] - svm.kernel_mat[alpha_i, alpha_i] \
                  - svm.kernel_mat[alpha_j, alpha_j]
        if eta >= 0:
            return 0


        # 4、更新alpha_j
        svm.alphas[alpha_j] -= svm.train_y[alpha_j] * (error_i - error_j) / eta


        # 5、确定最终的alpha_j
        if svm.alphas[alpha_j] > H:
            svm.alphas[alpha_j] = H
        if svm.alphas[alpha_j] < L:
            svm.alphas[alpha_j] = L


        # 6、判断是否结束      
        if abs(alpha_j_old - svm.alphas[alpha_j]) < 0.00001:
            update_error_tmp(svm, alpha_j)
            return 0


        # 7、更新alpha_i
        svm.alphas[alpha_i] += svm.train_y[alpha_i] * svm.train_y[alpha_j] \
                                * (alpha_j_old - svm.alphas[alpha_j])


        # 8、更新b
        b1 = svm.b - error_i - svm.train_y[alpha_i] * (svm.alphas[alpha_i] - alpha_i_old) \
                                                    * svm.kernel_mat[alpha_i, alpha_i] \
                             - svm.train_y[alpha_j] * (svm.alphas[alpha_j] - alpha_j_old) \
                                                    * svm.kernel_mat[alpha_i, alpha_j]
        b2 = svm.b - error_j - svm.train_y[alpha_i] * (svm.alphas[alpha_i] - alpha_i_old) \
                                                    * svm.kernel_mat[alpha_i, alpha_j] \
                             - svm.train_y[alpha_j] * (svm.alphas[alpha_j] - alpha_j_old) \
                                                    * svm.kernel_mat[alpha_j, alpha_j]
        if (0 < svm.alphas[alpha_i]) and (svm.alphas[alpha_i] < svm.C):
            svm.b = b1
        elif (0 < svm.alphas[alpha_j]) and (svm.alphas[alpha_j] < svm.C):
            svm.b = b2
        else:
            svm.b = (b1 + b2) / 2.0


        # 9、更新error
        update_error_tmp(svm, alpha_j)
        update_error_tmp(svm, alpha_i)


        return 1
    else:
        return 0

       在SMO的实现函数中,先判断选择出第一个变量是否满足要求,同时需要计算第一个变量的误差值,见cal_error;当检查完第一个变量满足条件后,开始选择第二个变量,对第二个变量的选择标准是使得其变化最大,见select_second_sample。两个变量都完成更新后,此时需要重新计算b的值,最后再重新计算两个变量对应的误差,见update_error_tmp。

def cal_error(svm, alpha_k):
    '''
    input:  svm SVM模型
            alpha_k 选择出的变量
    output: error_k 误差值 '''
    output_k = float(np.multiply(svm.alphas, svm.train_y).T * svm.kernel_mat[:, alpha_k] + svm.b)
    error_k = output_k - float(svm.train_y[alpha_k])
    return error_k
def update_error_tmp(svm, alpha_k):
    '''
    input:  svm SVM模型
            alpha_k 选择出的变量
    output: 对应误差值 '''
    error = cal_error(svm, alpha_k)
    svm.error_tmp[alpha_k] = [1, error]
def select_second_sample(svm, alpha_i, error_i):
    '''
    input:  svm SVM模型
            alpha_i 选择出的第一个变量
            error_i E_i
    output: alpha_j 选择出的第二个变量
            error_j E_j '''
    
    svm.error_tmp[alpha_i] = [1, error_i]
    candidateAlphaList = np.nonzero(svm.error_tmp[:, 0].A)[0]
    
    maxStep = 0
    alpha_j = 0
    error_j = 0


    if len(candidateAlphaList) > 1:
        for alpha_k in candidateAlphaList:
            if alpha_k == alpha_i: 
                continue
            error_k = cal_error(svm, alpha_k)
            if abs(error_k - error_i) > maxStep:
                maxStep = abs(error_k - error_i)
                alpha_j = alpha_k
                error_j = error_k
    else: # 随机选择          
        alpha_j = alpha_i
        while alpha_j == alpha_i:
            alpha_j = int(np.random.uniform(0, svm.n_samples))
        error_j = cal_error(svm, alpha_j)
    
    return alpha_j, error_j

    

     到这里整个核心训练过程基本就结束了~

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的程序媛姐姐

一定要备注【高清图】哦

????????????????????

➕我们的程序媛小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

DC算法竞赛——北京PM2.5浓度回归分析 北京PM2.5浓度回归分析 比赛结果(118/1150) 一. 概述 1、项目来源:https://www.dcjingsai.com/static_page/cmpList.html 2、给定数据字段如下: 3、使用方法:回归算法 4、目的:预测北京pm2.5值,使平均预测误差越小越好。 二、分析过程 setwd("E:/R数据源") #读入数据 data <- read.csv('p... 阅读详情

相关推荐

Bootloader详解,理解Bootloader看这篇就够了

这里写目录标题一、Bootloader作用(目的)二、完成Boot最终目的的前提条件三、对前提条件的详细说明3.1、对前提条件(1)的说明:3.2、对前提条件(2)的说明:3.3、对前提条件(3)的说明:3.4、对前提条件(4)的说明:3.4、对前提条件(5)的说明:四、loader是干啥的 一、Bootloader作用(目的) Bootloader=Boot + loader Boot的目的: 最终目的:跳到C语言中;为了C语言运行程序会进行一系列的初始化,系统一上电后如何通过一系列的设置让软件程序员

iduuigdg的博客 11万+

[白话解析] 深入浅出支持向量机(SVM)之核函数

本文在少用数学公式的情况下,尽量仅依靠感性直觉的思考来讲解支持向量机中的核函数概念,并且给大家虚构了一个水浒传的例子来做进一步的通俗解释。

罗西的思考 1844

【Coze 扣子案例】第 23 期・商业篇:一键获取精准商机,自动化招标信息查询与分析

通过地区和项目类型等多维度组合查询全国招标信息网数据,实现招标公告的快速定位。自动解析招标公告内容,提取关键信息,并生成结构化摘要。帮助企业高效获取精准商机,提升市场竞争力,降低人工成本,解决 “信息过载” 与 “精准匹配难” 的双重问题。

weixin_72689845的博客 1928

SVM通俗详解

SVM,英文全称为 Support Vector Machine,中文名为支持向量机,由数学家Vapnik等人早在1963年提出。在深度学习兴起之前,SVM一度风光无限,是机器学习近几十年来最为经典的,也是最受欢迎的分类方法之一。 1 SVM与“三八线” 不少人在初识SVM时会感觉到高深难懂。现在,就从你我熟知的“三八线”来走进SVM的思想内涵。 回忆下小时候,同桌同学经常会用粉笔或是小刀在课桌中间划一条“三八线”将课桌一分为二。大家约定好每个人只能在自己的那半课桌领域活动,谁也不能越界,越界是小猪、小狗。

WGS. 9万+

ArcGIS新手必看:5分钟搞定等高线转DEM栅格(附完整操作截图)

本文详细介绍了在ArcGIS中将等高线转换为DEM栅格的完整流程,包括CAD数据预处理、TIN转栅格和直接插值法两种核心方法,以及常见问题排查与优化技巧。通过实战案例和操作截图,帮助GIS新手快速掌握这一测绘数据处理的核心技能,提升地形分析和三维可视化效率。

dapp9builder的博客 287

UE5 Decal混合进阶:如何用DBuffer实现自定义Normal插值(附完整材质配置流程)

本文深入解析了UE5中利用DBuffer技术实现Decal自定义Normal插值的完整流程。通过详细的材质配置步骤和核心算法说明,帮助开发者突破传统混合模式限制,掌握高级法线控制技巧,特别适合需要精细环境细节的3A级项目开发。

table的专栏 225

机器学习——支持向量机(SVM)

支持向量机是一种强大的机器学习算法,用于分类和回归。它通过最优超平面来分隔不同类别的样本,并具有较好的泛化能力和鲁棒性。然而,SVM在计算复杂度和参数选择方面存在挑战。在实际应用中,需要适当调整参数和进行模型优化。

Ascons的博客 9056

IPC-7351标准实战:如何用LPWizard_10快速生成PCB封装库(附避坑指南)

本文提供了一份详细的IPC-7351标准实战指南,手把手教你使用LPWizard_10软件快速生成符合行业标准的PCB封装库,并直接导入Cadence Allegro。文章深入解读了IPC-7351密度等级的选择逻辑,并重点分享了软件配置、QFN封装生成实战步骤,以及导出失败、焊盘异常等常见问题的避坑解决方案,旨在帮助硬件工程师提升设计效率和可靠性。

weixin_29207439的博客 157

机器学习——支持向量机(SVM)

支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,SVM可以用于线性和非线性分类问题,回归以及异常值检测其基本原理是通过在特征空间中找到一个超平面,将不同类别的样本分开,并且使得离超平面最近的样本点到超平面的距离最大化。这个超平面称为最大间隔超平面,它可以很好地进行分类预测。具体而言,SVM通过将样本映射到高维特征空间,使得数据在该空间中线性可分。

weixin_74731967的博客 8549

腾讯云运维工程师认证TCA--真题(最新2022.11)

解析:云原生应用的12要素,1.基准代码:一份基准代码,多份部署;解析:腾讯云主账号具备对其名下资源(包括存储桶)的最大权限,您虽然可以在存储桶策略中限制几乎所有操作,但主账号始终具备 PUT Bucket Policy 操作的权限,主账号调用该操作不检查存储桶策略。解析:瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。解答:云原生五大关键技术:微服务、容器化、DevOps、持续交付。

e1210101的博客 9915

RobotFramework二次开发——实时日志

背景基于RobotFramework的二次开发,少不了要打印实时日志出来,比如广泛应用的工具ride中,在执行用例时会把执行过程中的log全部打印出来,如果二次开发的时候,执行用例只能静默等待执行完毕,那只能算是一个半成品。结果在最后,不想看过程的可以直接跳到最后思路RobotFramework的日志有好几种,一个是执行后的log文件,这个文件可以作为数据留存,但是没办法实时获取,因为文件是在执行完

点点寒彬的博客 1万+

svm核函数_深入浅出SVM(PART III)

点击上方“AI派”,选择“星标”公众号第一时间获取价值内容导读今天是该系列第九篇文章,介绍支持向量机原理(PART III)。 支持向量机(Support Vector Machine)是由Vapnik等人于1995年提出来的,之后随着统计理论的发展,支持向量机SVM也逐渐受到了各领域研究者的关注,在很短的时间就得到了很广泛的应用。支持向量机是被公认的比较优秀的分类模型,同时,在支...

weixin_39948111的博客 151

使用CiteSpace软件对知网文献进行关键词共现/聚类/突现分析

一、基本概念CiteSpace(引文空间)是一款专注于分析科学分析中蕴含的潜在知识的软件。它是在科学计量学、数据可视化背景下逐渐发展起来的引文可视化分析软件。通过可视化的手段,CiteSpace能够呈现科学知识的结构、规律和分布情况,并因此将这种分析得到的可视化图形称为“科学知识图谱”。二、主要功能和用途知识图谱构建:根据科学文献的引用关系,CiteSpace可以生成知识图谱,帮助研究人员更好地理解学术领域中不同文献之间的联系和演化过程。主题聚类分析。

m0_64336780的博客 1万+

从Image Caption Generation理解深度学习(part III)

本系列文章面向程序员,希望通过Image Caption Generation,一个有意思的具体任务,深入浅出地介绍深度学习的知识,涉及到很多深度学习流行的模型,如CNN,RNN/LSTM,Attention等。本文为第三篇。 作者:李理,目前就职于环信,即时通讯云平台和全媒体智能客服平台,在环信从事智能客服和智能机器人相关工作,致力于用深度学习来提高智能机器人的性能。 相关...

lispython的专栏 1129

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

介绍我的一位计算机非科班好友以及他的干货文章

归辰是我的好朋友,他之前在C9高校获取了硕士学位,现在是一名大厂的算法工程师。他也是一名热爱生活的修行者,喜欢和朋友们聊生活心得。他的经历颇为传奇,从本科开始就参加各类科技以及创业比赛,...

weixin_40920183的博客 242

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【机器学习】支持向量机 SVM(非常详细)

【机器学习】支持向量机 SVM(非常详细) 【机器学习】支持向量机 SVM(非常详细) 阿泽 复旦大学 计算机技术硕士 创作声明:内容包含虚构创作 SVM 是一个非常优雅的算法,具有完善的数学理论,虽然如今工业界用到的不多,但还是决定花点时间去写篇文章整理一下。 1. 支持向量 1.1 线性可分 首先我们先来了解下什么是线性可分。 在二维空间上,两类点被一条直线完全分开叫做线性可分。 严格的数学定义是: 1.2 最大间隔超平面 1.3 支持向量 .

yishuihanq的博客 9284

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

机器学习:支持向量机(SVM)

支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。

燕双嘤 20万+

自定义径向基核函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

kim_mechane的博客 548

详解SVM

本文目录详解SVM一、什么是SVM1. SVM定义2. 函数间隔和几何间隔(1)函数间隔(2)几何间隔3. 支持向量二、 详解SVM 一、什么是SVM SVM是一种二类分类模型,与感知机不同的是,他的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机还包括核技巧,使他成为实质上的非线性分类器。 一句话总结:SVM就是通过监督学习来解决二分类问题 1. SVM定义 线性可分支持向量机:给定线性可分训练数据集,通过间隔最大化或等价的求解相应的凸二次规划问题学习得到的分离超平面为 w∗⋅x+b∗=0 w

芒果干的博客 8488

支持向量机(svm)--核函数

本文介绍了核函数的基本概念、原理、性质和计算方法,并探讨了其在机器学习中的应用和优化方法。通过选择合适的核函数,可以有效地提高机器学习算法的性能和结果,处理高维x_%7Bi%7Dx_%7Bj%7Dx_%7Bi%7Dx_%7Bj%7D%5Cgammax_%7Bi%7Dx_%7Bj%7D。

AI_dataloads的博客 1万+

SVM核函数_机器学习

前言: 有时,分类问题是非线性的。这时候可以用非线性支持向量机,主要特点是核技巧。 一 核技巧 二 核函数定义 三 核技巧在SVM中的应用 四 正定核 五 常用核函数 六 非线性支持向量机 一 核技巧 如上左图分离平面是一个椭圆,通过变换变成直线。非线性问题,变成线性可分问题。 设原空间 新...

4AM_明朝百晓生 2660

python机器学习之SVM(支持向量机)实例

其实在很早以前写过一期SVM,只不过当时对SVM只是初步的了解,现在重新来看,其实SVM还是有很多值得学习的地方。 1.SVM介绍 SVM可以理解为:使用了支持向量的算法,支持向量机是一种基于分类边界分界的方法。以二维数据为例,如果训练数据分布在二维平面上的点,它们按照其分类聚焦在不同的区域。基于分类边界的分类算法的目标:通过训练,找到这些分类之间的边界(如果是直线的,称为线性划分,如果是曲线的,称为非线性划分)。 过程如上述三个图,SVM就是试图把棍放在最佳的位置上,最好让棍两边有尽可能大的间隙,这

柳小葱的博客 2万+

SVM详解

SVM详解

qq_30150579的博客 2515

SVM的核函数详解

核函数进阶

夏之微风的博客 8849

SVM学习总结

1. 目标      SVM是一个二类分类器,它的目标是找到一个超平面,使用两类数据离超平面越远越好,从而对新的数据分类更准确,即此分类器更加健壮。      支持向量(Support Vetor):就是离分隔超平面最近的哪些点。      寻找最大间隔:就是寻找最大化支持向量到分隔超平面的距离,在此条件下求出分隔超平面。      数据分类类别:      1)线性可分      2

MyArrow的专栏 2万+
上一篇: 学会 Python yield 关键词,此文就够了
下一篇: 安卓专用,ios勿入 !
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值