Python机器学习之支持向量机非线

2023/4/27 来源:不详

非线性SVC

上一节中,我们要使用一个多项式内核的系统。正如其名字暗示的,我们可以定义一条多项式曲线把决策空间分为两块。多项式的次数可以用degree选项指定。即使是非线性SVC,C依然是正则化回归系数。我们尝试使用内核为三次多项式、回归系数C取1的SVC算法。

另一种非线性内核为径向基函数(RBF)。这种内核生成的分隔面尝试把数据集的各个数据点分到沿径向方向分布的不同区域。

我们可以看到两类决策区域,训练集所有数据点均处于正确的位置。

绘制SVM分类器对iris数据集的分类效果图

前面的SVM例子使用数据集非常简单。我们来看一下SVC算法对更复杂的数据集的分类情况。我们使用之前用过的Iris数据集。

前面用过的SVC算法从仅包含两个类别的训练集中学习。接下来这个例子中,我们把它扩展到三个类别,因为Iris数据集包含三个类别的鸢尾花。

对于这个数据集,决策边界相互交叉,把决策空间(2D)和决策体(3D)分成两个部分。

两个线性模型均有线性决策边界(相交的超平面),而使用非线性内核的模型(多项式或高斯RBF)有非线性决策边界,后者在处理依赖于内核和参数的数据时更加灵活。

现在,我们再来看一下如何用非线性内核,比如多项式内核,生成非线性决策边界。

由上图可见,跟之前用线性内核得到的区域相比,用多项式内核得到的决策边界划分的决策区域差别较大。我们还可以接着看一下使用rbf径向基内核生成的径向决策区域。

支持向量回归

SVC方法经扩展甚至可以用来解决回归问题,这种方法称作支持向量回归(即SVR).

SVC生成的模型实际上没有使用全部训练集数据,而只是使用其中一部分,也就是离决策边界最近的数据点。类似地,SVR生成的模型也只依赖于部分训练数据。

我们将介绍SVR算法是如何使用diabetes数据集的,我们将只考虑第三个生理因素。我们使用是那种不同的回归算法:线性和两个非线性(多项式)。使用线性内核的SVR算法将生成一条直线作为线性预测模型,非常类似于前面见过的线性回归算法,而使用多项式内核的SVR算法生成二次和三次曲线。SVR()函数几乎与前面见过的SVC()函数完全相同。唯一需要考虑的就是测试集数据必须按生序形式排列。

三种回归曲线分别用三种颜色来表示。线性回归使用蓝色;二次曲线使用绿色表示,三次曲线使用红色表示。

转载请注明:
http://www.3g-city.net/gjycs/4350.html
  • 上一篇文章:

  • 下一篇文章:
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有2014-2024 冀ICP备19027023号-6
    今天是: