Sklearn学习笔记---支持向量机SVM中svm.svc使用

本文深入探讨了支持向量机(SVM)的基本原理及其在Sklearn中的应用,包括关键参数如C、kernel的选择,以及如何使用decision_function、fit、predict等方法。SVM是一种有监督学习模型,适用于模式识别、分类和回归任务,通过构造最优超平面实现数据的高效分类。

SVM及Sklearn使用

支持向量机SVM

支持向量机SVM,是常见的一种判别方法, 在机器学习领域是有监督学习模型,通常用来进行模式识别分类回归

主要思想:

  1. 对线性可分情况进行判别;对线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本,转化为高维特征空间使其达到线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。
  2. 基于结构风险最小化理论,在特征空间中构建最优超平面,使得学习器得到全局最优化,且在整个样本空间的期望,以某个概率满足一定的上界。

sklearn中的SVM(svm.svc)

具体的各参数可以参考: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC
在这里主要说一下几个参数以及方法的使用,以备自己的不时之需:

  • C:float, optional(default=1.0)
     C-SVC的惩罚参数,C越大相当于C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
  • kernel: string, optional(default=‘rbf’)
     核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’。
  • degree: int, optional (default=3)
     多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
  • gamma: float, optional (default=‘auto’)
     ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features

主要方法

  1. decision_function(X):  Distance of the samples X to the separating hyperplane
  2. fit(X, y, samples_weight=None ):  Fit the SVM model according to the given training data.
       在这里插入图片描述
       这个方法的主要目的是根据训练数据来训练出合适的SVM模型
  3. get_params([deep]): Get parameters for this estimator.
  4. predict(X): Perform classification on samples in X.
           perform classification on samples in X.
           For an one-class model, +1 or -1 is returned.
  5. score(X, y, sample_weight=None): Returns the mean accuracy on the given test data and labels.
<think>首先,用户要求使用中文回答问题。问题似乎是一个关于Python库的列表,包括numpy、matplotlib.pyplot、pandas、sqlite3、IPython.display.display、scipy.stats.entropy、sklearn.naive_bayes.MultinomialNB、sklearn.model_selection.cross_val_score、sklearn.linear_model.LogisticRegression、sklearn.svm.SVCsklearn.preprocessing.normalize。用户没有明确的问题,所以我需要推断这是什么意思。 用户消息是:"numpy matplotlib.pyplot pandas sqlite3 IPython.display.display scipy.stats.entropy sklearn.naive_bayes.MultinomialNB sklearn.model_selection.cross_val_score sklearn.linear_model.LogisticRegression sklearn.svm.SVC sklearn.preprocessing.normalize"。这看起来像是一个Python导入语句的列表,但没有上下文。用户可能是在问这些库的用途,或者如何一起使用它们。 用户说:"请使用中文回答问题",所以我需要用中文回复。然后,在回答后,我必须提出3-5个相关问题,以"§§相关问题§§"开头,并且不能换行分散。 回顾用户消息:"numpy matplotlib.pyplot pandas sqlite3 IPython.display.display scipy.stats.entropy sklearn.naive_bayes.MultinomialNB sklearn.model_selection.cross_val_score sklearn.linear_model.LogisticRegression sklearn.svm.SVC sklearn.preprocessing.normalize"。这似乎是用户的问题本身,而不是一个具体的问题。可能用户是在列出一些Python库,并希望我解释或讨论它们。 用户消息的开头是:"请使用中文回答问题\n请在回答完问题后,必须根据用户的问题及你的回答提出3-5个 §§相关问题§§。\n§§相关问题§§ 必须输出在回答的末尾且不可缺少!\n 第一行必须完整且输出 \"§§相关问题§§\"!\n禁止换行分散。\n### 示例格式\n快速排序的基本思想是选择一个基准元素\n```python\ndef quick_sort(arr):\n if len(arr) <= 1:\n return arr\n else:\n # 选择基准值\n pivot = arr[len(arr) // 2]\n # 分别存放比基准小和大的元素\n left = [x for x in arr if x < pivot]\n middle = [x for x in arr if x == pivot]\n right = [x for x in arr if x > pivot]\n # 递归地对左右两边进行快排,并合并结果\n return quick_sort(left) + middle + quick_sort(right)```\n§§相关问题§§\n1. ···\n2. ···\n3. ···\n### 注意\n确保所有内容符合规则,否则回答将被视为无效。\n\numpy matplotlib.pyplot pandas sqlite3 IPython.display.display scipy.stats.entropy sklearn.naive_bayes.MultinomialNB sklearn.model_selection.cross_val_score sklearn.linear_model.LogisticRegression sklearn.svm.SVC sklearn.preprocessing.normalize" 用户消息的最后部分是:"numpy matplotlib.pyplot pandas sqlite3 IPython.display.display scipy.stats.entropy sklearn.naive_bayes.MultinomialNB sklearn.model_selection.cross_val_score sklearn.linear_model.LogisticRegression sklearn.svm.SVC sklearn.preprocessing.normalize",这似乎是用户的实际问题或主题。用户可能是在提供一个列表,并希望我解释这些库或如何在一个项目中一起使用它们。 由于用户没有指定一个具体的问题,我将假设用户想知道这些库的基本介绍或它们在机器学习或数据分析中的常见用途。因为这些库都与Python相关,尤其是数据科学和机器学习。 我的回答结构: 1. 用中文回答问题。 2. 回答后,提出3-5个相关问题。 3. 以"§§相关问题§§"开头相关问题部分。 4. 相关问题不能换行分散,所以可能用数字列表。 主题:这些Python库的简要介绍。 回答内容: - 解释每个库的作用。 - 因为列表很长,我可以分组或简要概述。 - 保持简洁,因为用户可能期待一个概述。 库列表: - numpy: 数值计算库。 - matplotlib.pyplot: 绘图库。 - pandas: 数据处理和分析库。 - sqlite3: SQLite数据库接口。 - IPython.display.display: IPython的显示功能。 - scipy.stats.entropy: 计算熵的函数。 - sklearn.naive_bayes.MultinomialNB: scikit-learn中的多项式朴素贝叶斯分类器。 - sklearn.model_selection.cross_val_score: 交叉验证得分计算。 - sklearn.linear_model.LogisticRegression: 逻辑回归分类器。 - sklearn.svm.SVC: 支持向量机分类器。 - sklearn.preprocessing.normalize: 数据归一化函数。 这些库常用于数据科学项目,涉及数据加载、处理、建模、评估和可视化。 我将用中文写一个概述。 然后,提出相关问题。相关问题应该基于我的回答和用户的问题。例如: 1. 如何安装这些库? 2. 如何在一个项目中一起使用它们? 3. 这些库在机器学习工作流中的角色是什么? 等等。 确保相关问题数量为3-5个。 回答格式: - 先回答问题。 - 然后,一行"§§相关问题§§" - 接着,1. 2. 3. ... 列出问题。 禁止换行分散,所以相关问题部分应该连续。 最终输出: [回答内容] §§相关问题§§ 1. ... 2. ... 3. ...</think>以下是您提供的Python库列表的简要中文介绍。这些库在数据科学、机器学习和数据分析中非常常用,它们各自承担不同的角色: - **numpy**: 用于高效的数值计算,提供多维数组对象和数学函数。 - **matplotlib.pyplot**: 用于数据可视化,支持创建各种图表(如折线图、散点图)。 - **pandas**: 用于数据处理和分析,提供DataFrame结构来处理表格数据。 - **sqlite3**: 用于与SQLite数据库交互,执行SQL查询和管理本地数据库。 - **IPython.display.display**: 在Jupyter笔记本中显示输出(如图像、HTML)。 - **scipy.stats.entropy**: 计算概率分布的熵(信息熵),常用于信息论和统计。 - **sklearn.naive_bayes.MultinomialNB**: scikit-learn中的多项式朴素贝叶斯分类器,适用于文本分类等任务。 - **sklearn.model_selection.cross_val_score**: 用于交叉验证评估模型性能,计算得分指标。 - **sklearn.linear_model.LogisticRegression**: 逻辑回归分类器,用于二分类或多分类问题。 - **sklearn.svm.SVC**: 支持向量机分类器,适用于分类任务,支持核技巧。 - **sklearn.preprocessing.normalize**: 用于数据归一化,将特征缩放至单位范数,提高模型稳定性。 这些库通常结合使用,例如在机器学习工作流中:pandas加载数据,numpy处理数值,scikit-learn构建模型,matplotlib可视化结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值