机器学习-10 基于sklearn支持向量机

《高级编程技术》作业[19]——python sklearn练习题 本周的作业是使用sklearn库来进行一些简单的机器学习练习。题目如下:接下来,我们按照题目中给出的步骤来一步步完成这个练习。1.创建一个样本量不小于1000,特征数不小于10的二元数据集。    因为要求的样本量比较大,所以我选择使用numpy.random.rand()函数来创建符合特定正态分布的样本特征,并分别把它们标记为0、1。    为了更好地检验之后机器学习算法得到的预测效果,在生成数... 阅读详情

机器学习-10 基于sklearn支持向量机

支持向量机——分类

支持向量机 (SVMs) 的应用面比较广,可用于回归、分类和和 异常检测。其最常见的应用是做分类。
支持向量机(Support Vector Machine, SVM) 是由最优分类面衍生而来, 在线性可分情况中, 其根本思想是将特征向量映射到一个比自身维度更高的空间里,在这个空间里建立一个新的隔离平面,使得隶属不同类别的特征向量点间隔最大。各类别对应的平行超平面间的距离越大,分类器的总误差则越小。
设 n 个样本的训练合集为 ( x i , y i ) , i = 1 , 2 , … … , n (x_{i},y_{i}),i=1,2,……,n (xi​,yi​),i=1,2,……,n。 d d d维空间中线性判别函数的形式为
g ( x ) = w x + b g(x)=wx+b g(x)=wx+b
某数据点 x i x_{i} xi​到分类平面的距离可以表示为 ∣ ω x + b ∣ ∥ ω ∥ \frac{\left| \omega x+b \right|}{\left\| \omega \right\|} ∥ω∥∣ωx+b∣​,点到原点的距离为 ∣ b ∣ ∥ ω ∥ \frac{\left| b \right|}{\left\| \omega \right\|} ∥ω∥∣b∣​。
离分类平面最近的数据点和它们对应的平行超平面,将判别函数归一化使所有数据点都满足 ∣ g ( x ) ∣ ≥ 1 \left| g(x) \right|\ge 1 ∣g(x)∣≥1,且距分类平面距离最小的数据点 ∣ g ( x ) ∣ = 1 \left| g(x) \right|=1 ∣g(x)∣=1。计算 ∥ ω ∥ 2 2 \frac{{{\left\| \omega \right\|}^{2}}}{2} 2∥ω∥2​极小值优化分类平面,使分类间隔最大化。
约束条件为:
y i [ ω x + b ] − 1 ≥ 0 {{y}_{i}}[\omega x+b]-1\ge 0 yi​[ωx+b]−1≥0
目标函数为:
φ ( ω ) = 1 2 ∥ ω ∥ 2 = 1 2 ( ω , ω ) \varphi (\omega )=\frac{1}{2}{{\left\| \omega \right\|}^{2}}=\frac{1}{2}(\omega ,\omega ) φ(ω)=21​∥ω∥2=21​(ω,ω)
可定义如下的 L a g r a n g e Lagrange Lagrange 函数
L ( ω , b , a ) = 1 2 ( ω , ω ) − ∑ i = 1 n a i { y i [ ( ω x i ) + b ] − 1 } L(\omega ,b,a)=\frac{1}{2}(\omega ,\omega )-\sum\limits_{i=1}^{n}{{{a}_{i}}\{{{y}_{i}}[(\omega {{x}_{i}})+b]-1\}} L(ω,b,a)=21​(ω,ω)−i=1∑n​ai​{yi​[(ωxi​)+b]−1}
其中 a i > 0 a_i>0 ai​>0,为 L a g r a n g e Lagrange Lagrange乘子,将所求问题转化为对 ω \omega ω和 b b b求 L a g r a n g e Lagrange Lagrange极小值。
对 ω \omega ω和 b b b求偏微分,令其等于0。
∑ i = 1 n a i y i = 0 \sum\limits_{i=1}^{n}{{{a}_{i}}{{y}_{i}}=0} i=1∑n​ai​yi​=0
其中 a i ≥ 0 a_i\ge 0 ai​≥0。求解下列函数的最大值
Q ( a ) = ∑ i = 1 n a i ∗ − 1 2 ∑ i , j = 1 n a i a j y i y j ( x i , x j ) Q(a)=\sum\limits_{i=1}^{n}{a_{i}^{*}-\frac{1}{2}\sum\limits_{i,j=1}^{n}{{{a}_{i}}{{a}_{j}}{{y}_{i}}{{y}_{j}}({{x}_{i}},{{x}_{j}})}} Q(a)=i=1∑n​ai∗​−21​i,j=1∑n​ai​aj​yi​yj​(xi​,xj​)
若 a i ∗ a_{i}^{*} ai∗​为最优解,则
ω ∗ = ∑ i = 1 n a i ∗ y i x i {{\omega }^{*}}=\sum\limits_{i=1}^{n}{a_{i}^{*}{{y}_{i}}}{{x}_{i}} ω∗=i=1∑n​ai∗​yi​xi​
采用训练样本,训练决策函数,使其具备分类功能,并在反复训练中不断优化确立最优分类平面,形成适用于此类样本分类问题的支持向量机。决策函数可表示为:
f ( x ) = s g n ( ∑ i = 1 n a i y i ( x , x i ) + b ) f(x)=sgn (\sum\limits_{i=1}^{n}{{{a}_{i}}}{{y}_{i}}(x,{{x}_{i}})+b) f(x)=sgn(i=1∑n​ai​yi​(x,xi​)+b)
所使用的核函数为 S i g m o i d Sigmoid Sigmoid函数。
K ( x , x t ) = tanh ⁡ ( v ( x i , x j ) + c ) K(x,{{x}_{t}})=\tanh (v({{x}_{i}},{{x}_{j}})+c) K(x,xt​)=tanh(v(xi​,xj​)+c)

代码展示

支持向量机:非平衡类的超平面分离

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs

# we create two clusters of random points
n_samples_1 = 1000
n_samples_2 = 100
centers = [[0.0, 0.0], [2.0, 2.0]]
clusters_std = [1.5, 0.5]
X, y = make_blobs(n_samples=[n_samples_1, n_samples_2],
                  centers=centers,
                  cluster_std=clusters_std,
                  random_state=0, shuffle=False)

# fit the model and get the separating hyperplane
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(X, y)

# fit the model and get the separating hyperplane using weighted classes
wclf = svm.SVC(kernel='linear', class_weight={1: 10})
wclf.fit(X, y)

# plot the samples
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired, edgecolors='k')

# plot the decision functions for both classifiers
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# create grid to evaluate model
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T

# get the separating hyperplane
Z = clf.decision_function(xy).reshape(XX.shape)

# plot decision boundary and margins
a = ax.contour(XX, YY, Z, colors='k', levels=[0], alpha=0.5, linestyles=['-'])

# get the separating hyperplane for weighted classes
Z = wclf.decision_function(xy).reshape(XX.shape)

# plot decision boundary and margins for weighted classes
b = ax.contour(XX, YY, Z, colors='r', levels=[0], alpha=0.5, linestyles=['-'])

plt.legend([a.collections[0], b.collections[0]], ["non weighted", "weighted"],
           loc="upper right")
plt.show()

在这里插入图片描述

支持向量机——回归

支持向量分类的方法可以被扩展用作解决回归问题. 这个方法被称作支持向量回归。
支持向量分类有三种不同的实现形式:SVR,NuSVR 和 LinearSVR。在只考虑线性核的情况下,LinearSVR 比 SVR 提供一个更快的实现形式。
采用对样本泛化性能极强的 SVR算法, 可以有效避免常规算法因样本数据不足引起的计算精度低和不易收敛等不足。给定训练集 :
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … … , ( x n , y n ) } T=\{(x_1,y_1),(x_2,y_2),……,(x_n,y_n)\} T={(x1​,y1​),(x2​,y2​),……,(xn​,yn​)}
假设其回归函数为:
y = f ( x ) = ω T ( x ) + b y=f(x)={{\omega }^{T}}(x)+b y=f(x)=ωT(x)+b
为了提高SVR算法的泛化能力, 引入核函数 K ( x i , x j ) K(x_i,x_j) K(xi​,xj​),将低维回归问题转化为高维优化问题。
min ⁡ ∑ i , j = 1 n ( α i − α i ∗ ) ( α j − α j ∗ ) K ( x i , x j ) + ε ∑ i = 1 n ( α i + α i ∗ ) − ∑ i = 1 n y i ( α i − α i ∗ ) \min \sum\limits_{i,j=1}^{n}{({{\alpha }_{i}}-\alpha _{i}^{*})}({{\alpha }_{j}}-\alpha _{j}^{*})K({{x}_{i}},{{x}_{j}})+\varepsilon \sum\limits_{i=1}^{n}{({{\alpha }_{i}}+\alpha _{i}^{*})}-\sum\limits_{i=1}^{n}{{{y}_{i}}({{\alpha }_{i}}-\alpha _{i}^{*})} mini,j=1∑n​(αi​−αi∗​)(αj​−αj∗​)K(xi​,xj​)+εi=1∑n​(αi​+αi∗​)−i=1∑n​yi​(αi​−αi∗​)
由此可以得到最优的非线性回归函数:
f ( x ) = ∑ i = 1 n ( α i − α i ∗ ) K ( x i , x j ) + b f(x)=\sum\limits_{i=1}^{n}{({{\alpha }_{i}}-\alpha _{i}^{*})}K({{x}_{i}},{{x}_{j}})+b f(x)=i=1∑n​(αi​−αi∗​)K(xi​,xj​)+b
选取径向基函数作为核函数:
K ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) K({{x}_{i}},{{x}_{j}})=\exp (-\frac{{{\left\| {{x}_{i}}-{{x}_{j}} \right\|}^{2}}}{2{{\sigma }^{2}}}) K(xi​,xj​)=exp(−2σ2∥xi​−xj​∥2​)

机器学习面试&考试避坑指南:从‘欠拟合’到‘SVM核函数’的10个高频考点详解 本文详细解析机器学习面试与考试中的10个高频考点,包括欠拟合、过拟合诊断、SVM核函数应用等核心概念。通过思维导图、对比表格和代码示例,帮助读者快速掌握关键知识点,提升面试和考试表现。特别针对高斯核函数在SVM中的广泛应用进行深入分析,为机器学习从业者提供实用指南。 阅读详情

相关推荐

机器学习期末突击:从线性回归到CNN的10大核心算法速成指南

本文为机器学习期末考试提供速成指南,涵盖从线性回归到CNN的10大核心算法。通过高频考点分析、代码片段演示和易错点标注,帮助考生快速掌握算法原理和实战应用。特别针对公式理解、例题解答和重点把握三大痛点,提供sklearn代码和押题提示,助力高效备考。

weixin_29176179的博客 223

机器学习--支持向量机(sklearn)

机器学习--支持向量机(sklearn)

weixin_50918736的博客 4072

10 - L8 机器学习 | 支持向量机 SVM

支持向量机通过最大化类间的间隔来进行分类。它通过核函数能很好地处理线性不可分问题,是一种非常强大、灵活的分类算法。尽管SVM计算复杂度较高,但在许多实际应用中,它的表现往往非常出色。在实际操作中,选择合适的核函数是一个关键步骤,通常需要通过交叉验证等方法来确定最优的核函数类型及相应的参数。一旦选定核函数,非线性SVM的学习算法(如SMO算法)会在这个“kernelized”特征空间中寻找最大边距超平面,从而解决了原始空间中非线性可分的问题。

hazel_cjx的博客 1389

机器学习Sklearn——SVM支持向量机(基础理论、决策过程可视化)

手撕SVM损失函数的求解,有拉格朗日乘子法、对偶问题、KKT条件,将使用SVM进行决策过程可视化从线性的推广到非线性的3D图中。

qq_47250064的博客 4099

Selenium自动化测试遇到shadow-root元素?3种实用解决方案帮你搞定

本文针对Selenium自动化测试中遇到shadow-root元素难以定位的常见问题,提供了三种实用的解决方案。详细阐述了通过JavaScript直接穿透Shadow DOM、利用浏览器工具快速获取JS Path以及使用Python第三方库进行优雅封装的方法,并分享了提升脚本健壮性的实战策略与最佳实践,帮助测试人员有效应对现代Web组件化开发带来的挑战。

code8的博客 408

Vivado时序违例debug

显示了数据路径延迟。例如,对于违例路径,若布线延迟超过50%,说明该延迟是导致时序不能收敛的主要因素,因此可围绕降低布线延迟这一靶心达到时序收敛。对于跨时钟域路径,Requirement数值会有所变化,但如果数值为0.1,显然是不合理的。目的时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达SRLC32E移位寄存器,对应。源时钟路径单元,时钟从adc0_bufg/O输出,到达PLLE4_ADV,经过BUFGCE输出,最终到达FDRE触发器,对应。

weixin_44513618的博客 1619

机器学习之支持向量机(SVM)原理详解、公式推导(手推)、面试问题、简单实例(sklearn调包)

主要内容分为理论推导和代码实现以及面试宝典三个部分。 理论推导主要是SVM的原理以及线性SMO算法的推导,也提了一下核函数和软间隔的理论,在推导之前还引入了拉格朗日乘子法、超平面、对偶问题的介绍。 代码实现包括sklearn调用,有几个对应实例。 面试宝典是一部分《机器学习》中的课后习题和一些《百面机器学习》的面试题,由公式推导和理论解答。

如果没有躺赢的命,那就站起来奔跑,你的努力一定会对得起这一路的颠沛流离。 2万+

动态规划法:n*m方格前进问题

在一个n*m的方格中,m为奇数,放置有n*m个数,方格中间的下方有一人,此人可按照正前方相临的五个方向(方格)前进但不能越出方格。人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出和的最大值。 算法设计: 可以使用动态规划方法,从顶部开始,将第二排的每个数加上顶部第一排的最优解,将6排的问题缩小为5排的问题,然后重复该操作,直到底部最后一排,此时

Winifred_1997的博客 4675

sklearn实现支持向量机

使用sklearn实现支持向量机

zhilanguifang的博客 1270

SAPABAP金色传说:关于导入和导出Excel时反复弹窗提示 SAP GUI安全性问题的解决方法

文章目录前言一、提示的到底是什么?二、关闭SAP GUI安全提示的步骤1.设置位置 前言 如果你在SAP中,经常需要将数据导出Excel,或者使用Excel进行批导数据,那么你对下面这个频繁出现的弹窗提示一定不陌生! 系统试图创建文件 C:\Users\15265\Desktop\EXPORT.XLSX 于目录 C:\Users\15265\Desktop\ 是否要授权修改父目录及其所有子目录? 不管你是不是选的记住我的决定,它必出!就很烦!那如何处理才能关闭呢? 提示:以下是本篇文章正文内容,看完快

Easystudios博客 1万+

AMESim柱塞泵建模全指南:从HCD库搭建到联合仿真

液压系统仿真中,轴向柱塞泵的建模始终是难点与热点。柱塞泵结构紧凑、功率密度高,在工程机械与航空航天领域应用广泛,然而其运动学与流体细节深度耦合,给仿真带来不小挑战。AMESim平台中的HCD库提供了一种从物理结构出发的建模思路,将柱塞泵分解为容积腔、节流口与机械约束等基础单元,从而真实刻画柱塞腔压力波动、配流特性和容积效率等关键行为,摆脱黑盒模型的局限。基于机理建模的仿真结果,可用于泵参数优化、故障特征分析以及控制策略验证。进一步结合AMESim与Simulink联合仿真,可以高效开发变量泵排量控制系统,研

weixin_29159441的博客 289

sklearn.svm.SVC 支持向量机-简介

sklearn.svm.SVC 是 Scikit-learn(一个常用的机器学习库)中的一个类,用于支持向量机(Support Vector Machine,SVM)算法中的分类任务。SVM 是一种用于分类和回归的监督学习算法。在分类任务中,SVM 构建一个决策边界,将不同类别的样本分开。SVC 类则实现了标准的支持向量机分类器。

我有明珠一颗的博客 1455

VTK学习(入门级教程,包括安装和使用)~持续更新中

说明:研究QT+VTK有段时间了,准备把学到的东西分享给大家,这篇博客以VS+QT+VTK为主进行展开学习的。

HXX904的博客 4757

机器学习-Sklearn-10(支持向量机SVM-下)

机器学习-Sklearn-10(支持向量机SVM-下)

m0_37755995的博客 2223

VTK vtkLookupTable vtkScalarBarActor 颜色条

有时需要给数据做一个 vtkScalarBarActor, 我们把显示的数据的一个 坐标系 来显示 颜色条1.以 Z 显示颜色 效果如下。

q610098308的专栏 4039

pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)

【代码】pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?

虫无涯的博客 1391

DataSciencePython终极实战指南:10个机器学习项目完整代码解析

DataSciencePython是一个专注于使用Python完成常见数据分析和机器学习任务的项目,提供了丰富的实战案例和完整代码。本文将带您深入了解这个项目的核心功能、实战项目以及如何快速上手,帮助您轻松掌握机器学习实战技能。 ## 项目核心功能与优势 DataSciencePython项目涵盖了多种常见的数据分析和机器学习任务,包括逻辑回归、支持向量机、Twitter数据分析等。项目中的代

gitblog_01011的博客 1046

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

机器学习代码实战——K折交叉验证(K Fold Cross Validation)

文章目录1.实验目的2.导入数据和必要模块3.比较不同模型预测准确率3.1.逻辑回归3.2.决策树3.3.支持向量机3.4.随机森林 1.实验目的 使用sklearn库中的鸢尾花数据集,并针对以下模型使用cross_val_score来衡量每个模型的性能。 最后找出性能最佳的模型。 (1)逻辑回归 (2)支持向量机 (3)决策树 (4)随机森林 2.导入数据和必要模块 from sklearn.d...

weixin_37763870的博客 7445

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

sklearn笔记

机器学习代码分析GridSearchCV GridSearchCV sklearn.model_selection.GridSearchCV class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, iid=’warn’, refit=True, cv=’warn’, v...

qq_36478773的博客 378

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

第十五周,sklearn

Create a classification dataset (n samples ! 1000, n features ! 10) Split the dataset using 10-fold cross validation Train the algorithms GaussianNB SVC (possible C values [1e-02, 1e-0...

qq_36573673的博客 389

2018文章集合

2018年公众号文章集合,过年在家系统学习下。 机器学习实战 该系列讲解了经典机器学习算法的原理(KNN,决策树,SVM,k-means,pca等),并从伪代码入手,一步步深入到各种算法的Python实现。 机器学习实战之KNN算法 机器学习实战之朴素贝叶斯 机器学习实战之决策树 机器学习实战之Logistic回归 机器学习实战之AdaBoo...

罗罗攀 386

机器学习项目实践步骤简述

1 基本步骤 1.1 导入数据 1.1.1 导入类库 1.1.2 导入数据集 1.2 概述数据 1.3 数据可视化 1.4 评估算法 1.5 实施预测

stay hungry stay foolish 346

纯NumPy实现10种机器学习算法:从公式推导到代码实现

不依赖scikit-learn的模型实现,用纯NumPy手写10种经典机器学习算法,涵盖监督学习、无监督学习和降维。每个算法标注核心公式,全部通过与sklearn的精度对比验证。配套特征工程、模型评估、超参优化、模型解释和AutoML工具链。

2301_82161187的博客 465

从零开始学机器学习|经典算法 + 项目实战全攻略

2026年,机器学习仍是AI的“地基”。推荐系统、图像识别、医疗辅助诊断、金融风控……所有AI应用都建立在它之上。行业价值高薪敲门砖:算法工程师起薪20w+,懂经典算法是面试必考。思维升级:学会“让数据自己说话”,职场决策从凭感觉变成数据驱动。零基础友好:不需要高数,只需线性代数+概率统计入门 + Python基础。核心知识点:机器学习 =让机器从数据中自动找到规律,不再需要人工手写规则。监督学习“有答案学”,无监督学习“自己找规律”。

tangyudi001的博客 509

第15周作业 #高级编程技术

sklearn 题目 解题过程 1. Create a classification dataset (n samples 1000, n features 10) 2. Split the dataset using 10-fold cross validation 3. Train the algorithms GaussianNB SV...

yyyyzxc1234的博客 322

基于sklearn的机器学习 — 支持向量机(SVM)

支持向量机(SVM:support vector machine)另一种功能强大、应用广泛的学习算法,可应用于分类、回归、密度估计、聚类等问题。SVM可以看作是感知器(可被视为一种最简单形式的前馈神经网络,是一种二元线性分类器)的扩展,与逻辑回归相比,支持向量机在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。SVM是一种监督式的学习方法,用统计风险最小化的原则来估计一个分类的,其基础的概念非常简单,就是找到一个,让两类之间的最大化,使其可以完美地分隔开来。是n维空间中的n - 1个子空间。

2403
上一篇: 机器学习-09 基于sklearn 核岭回归
下一篇: 自然语言处理自学笔记-01 基于TensorFlow 单词表示的经典方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值