支持向量机上的核函数对比

这篇具有很好参考价值的文章主要介绍了支持向量机上的核函数对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

探索核函数在不同数据集上的表现

导入模块

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import svm
from sklearn.datasets import make_circles, make_moons, make_blobs,make_classification

创建数据集,定义核函数的选择

n_samples = 100

# 创建数据列表
datasets = [
    make_moons(n_samples=n_samples, noise=0.2, random_state=0),
    make_circles(n_samples=n_samples, noise=0.2, factor=0.5, random_state=0), 
    make_blobs(n_samples=n_samples, centers=2, random_state=5),
    make_classification(n_samples=n_samples,n_features =2,n_informative=2,n_redundant=0, random_state=5)
    ]

# 创建核函数列表
Kernel = ["linear","poly","rbf","sigmoid"]
# 看一下数据的样子
for x, y in datasets:
    plt.figure(figsize=[5,4])
    plt.scatter(x[:,0], x[:,1], c=y, s=50, cmap="rainbow")


支持向量机上的核函数对比

支持向量机上的核函数对比

支持向量机上的核函数对比

支持向量机上的核函数对比

开始进行子图循环

#   构建子图
nrows = len(datasets)
ncols = len(Kernel) + 1
fig, axes = plt.subplots(nrows, ncols, figsize=(20, 16))

#   enumerate(datasets)结构 = (index,(X, Y))
#   第一层循环:在不同的数据集中循环
for ds_cnt, (X,Y) in enumerate(datasets):
    
    #   在图像中的第一列,放置原数据的分布
    ax = axes[ds_cnt, 0]
    if ds_cnt == 0:
        ax.set_title("Input data")
    ax.scatter(X[:,0], X[:,1], c=Y, zorder=10, cmap=plt.cm.Paired, edgecolors='k')
    ax.set_xticks(())
    ax.set_yticks(())
    
    #   第二层循环:在不同的核函数中循环
    #   从图像的第二列开始,一个个填充分类结果
    for est_idx, kernel in enumerate(Kernel):
        #   定义子图位置
        ax = axes[ds_cnt, est_idx + 1]
        #   建模
        clf = svm.SVC(kernel=kernel, gamma=2).fit(X, Y)
        score = clf.score(X, Y)
        #   绘制图像本身分布的散点图
        ax.scatter(X[:, 0], X[:, 1], c=Y, zorder=10, cmap=plt.cm.Paired, edgecolors='k')
        #   绘制支持向量
        ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=50, facecolors='none', zorder=10, edgecolors='k')
        #   绘制决策边界
        x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
        y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
        #   一次性使用最大值和最小值来生成网格
        #   表示为[起始值:结束值:步长]
        #   如果步长是复数,则其整数部分就是起始值和结束值之间创建的点的数量,并且结束值被包含在内
        XX, YY = np.mgrid[x_min:x_max:200j, y_min:y_max:200j]
        #   np.c_,类似于np.vstack的功能
        Z = clf.decision_function(np.c_[XX.ravel(), YY.ravel()]).reshape(XX.shape)
        #   填充等高线不同区域的颜色
        ax.pcolormesh(XX, YY, Z > 0, cmap=plt.cm.Paired)
        #   绘制等高线
        ax.contour(XX, YY, Z, colors=['k', 'k', 'k'], linestyles=['--', '-', '--'], levels=[-1, 0, 1])
        #   设定坐标轴为不显示
        ax.set_xticks(())
        ax.set_yticks(())
        #   将标题放在第一行的顶上
        if ds_cnt == 0:
            ax.set_title(kernel)
        #   为每张图添加分类的分数  
        ax.text(0.95, 0.06, ('%.2f' % score), size=15
                , bbox=dict(boxstyle='round', alpha=0.8, facecolor='white')
                #   为分数添加一个白色的格子作为底色
                , transform=ax.transAxes #  确定文字所对应的坐标轴,就是ax子图的坐标轴本身 
                , horizontalalignment='right'#  位于坐标轴的什么方
                ) 
plt.tight_layout()
plt.show()
/var/folders/rd/3p75tbv52n57f69fdxmzbdvc0000gn/T/ipykernel_1566/1017815882.py:42: UserWarning: No contour levels were found within the data range.
  ax.contour(XX, YY, Z, colors=['k', 'k', 'k'], linestyles=['--', '-', '--'], levels=[-1, 0, 1])

支持向量机上的核函数对比文章来源地址https://www.toymoban.com/news/detail-424043.html

到了这里,关于支持向量机上的核函数对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 同一台物理机上安装不同版本的python(内含python安装步骤)

    一:前言 由于python3.x的版本并不兼容python2.x的版本,或者工作涉及到Python多版本之间开发、测试,又或者需要用不同版本的python用来专门处理不同的内容,就需要在一台物理机上安装两个版本的Python(注意:同一个版本的python,同一台物理机机当且仅当只能存在一个)。 二:具

    2024年02月05日
    浏览(35)
  • 人工智能_机器学习065_SVM支持向量机KKT条件_深度理解KKT条件下的损失函数求解过程_公式详细推导_---人工智能工作笔记0105

    之前我们已经说了KKT条件,其实就是用来解决 如何实现对,不等式条件下的,目标函数的求解问题,之前我们说的拉格朗日乘数法,是用来对 等式条件下的目标函数进行求解. KKT条件是这样做的,添加了一个阿尔法平方对吧,这个阿尔法平方肯定是大于0的,那么 可以结合下面的文章去

    2024年02月04日
    浏览(27)
  • 129基于matlab的粒子群算法、遗传算法、鲸鱼算法、改进鲸鱼算法优化最小二乘支持向量机(lssvm)的gam正则化参数和sig2RBF函数的参数

    基于matlab的粒子群算法、遗传算法、鲸鱼算法、改进鲸鱼算法优化最小二乘支持向量机(lssvm)的gam正则化参数和sig2RBF函数的参数。输出适应度曲线,测试机和训练集准确率。程序已调通,可直接运行。 129 matlabLSSVM优化算法 (xiaohongshu.com)

    2024年01月16日
    浏览(35)
  • 文本词向量嵌入方法对比

    1、文本表示哪些方法? 下面对文本表示进行一个归纳,也就是对于一篇文本可以如何用数学语言表示呢? 词袋模型(bag-of-words):基于one-hot、tf-idf、textrank等的; 主题模型:LSA(SVD)、pLSA、LDA; 基于词向量的固定表征:word2vec、fastText、glove 基于词向量的动态表征:elmo、GP

    2024年02月14日
    浏览(62)
  • 【证明】矩阵不同特征值对应的特征向量线性无关

    定理 1 设 λ 1 , λ 2 , ⋯   , λ m lambda_1,lambda_2,cdots,lambda_m λ 1 ​ , λ 2 ​ , ⋯ , λ m ​ 是方阵 A boldsymbol{A} A 的 m m m 个特征值, p 1 , p 2 , ⋯   , p m boldsymbol{p}_1,boldsymbol{p}_2,cdots,boldsymbol{p}_m p 1 ​ , p 2 ​ , ⋯ , p m ​ 依次是与之对应的特征向量,如果 λ 1 , λ 2 , ⋯   , λ

    2024年02月09日
    浏览(39)
  • java + opencv对比图片不同

    1,去官网下载opencv,下载的时候需要注册一个 Oracle 账户,分分钟就能注册。然后安装。我下的是4.7的。 2,找到jar包放进项目里 3,项目结构,比较简单 4,把下载的文件放进C盘 5,主类代码 6,工具类 7,效果图。如果是一张彩色和一张黑白的图片,效果就不太理想了。 资

    2024年02月11日
    浏览(29)
  • MySQL不同插入方式性能对比实验

    最近负责的项目需要数据同步入库MySQL,为了测速那种入库方式效率比较高,为此进行了以下的对比实验,在此记录一下 共三种方法对比 一条一条插入,最后一次提交 用for循环拼接好插入sql,一次执行 使用MySQL提供的方法executeBatch(),同样使用一次提交 mutiSqlInsert singleSqlIn

    2024年01月22日
    浏览(33)
  • Vscode快速对比两个文件的不同部分

    打开vscode,打开文件或者文件夹 选中需要对比的文件 按住 ctrl 选择要对比的另一个文件,鼠标右键选择将已选项进行比较 结果如下: 打开文件,点击鼠标右键 命令面板 输入 compare 选择要比较的文件 结果如下 点击扩展,查找 file-compare ,并安装插件 打开文件,鼠标右键,

    2024年02月12日
    浏览(33)
  • KNN中不同距离度量对比和介绍

    k近邻算法KNN是一种简单而强大的算法,可用于分类和回归任务。他实现简单,主要依赖不同的距离度量来判断向量间的区别,但是有很多距离度量可以使用,所以本文演示了KNN与三种不同距离度量(Euclidean、Minkowski和Manhattan)的使用。 KNN是一种惰性、基于实例的算法。它的工作

    2024年02月03日
    浏览(17)
  • 线性代数|证明:矩阵不同特征值对应的特征向量线性无关

    定理 1 设 λ 1 , λ 2 , ⋯   , λ m lambda_1,lambda_2,cdots,lambda_m λ 1 ​ , λ 2 ​ , ⋯ , λ m ​ 是方阵 A boldsymbol{A} A 的 m m m 个特征值, p 1 , p 2 , ⋯   , p m boldsymbol{p}_1,boldsymbol{p}_2,cdots,boldsymbol{p}_m p 1 ​ , p 2 ​ , ⋯ , p m ​ 依次是与之对应的特征向量,如果 λ 1 , λ 2 , ⋯   , λ

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包