分类-支持向量机

1、不仅仅分类,还要距离两边最大,即margin要尽可能没有错误的点,而且要距离要大

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、

>>> from sklearn.svm import SVC
>>> model = SVC()
>>> model.fit(x_values, y_values)

model 变量是一个拟合到数据 x_values 和 y_values 的支持向量机模型。拟合模型是指寻找拟合训练数据的最佳界线。我们使用模型的 predict() 函数进行两项预测

>>> print(model.predict([ [0.2, 0.8], [0.5, 0.4] ]))
[[ 0., 1.]]

超参数

当我们定义模型时,可以指定超参数。正如在此部分中看到的,最常见的超参数包括:

C:C 参数。
kernel:内核。最常见的内核为 'linear'、'poly' 和 'rbf'。
degree:如果内核是多项式,则此参数为内核中的最大单项式次数。
gamma:如果内核是径向基函数,则此参数为 γ 参数。
>>> model = SVC(kernel='poly', degree=4, C=0.1)

持向量机是一种常用的分类算法。我们看到了支持向量机的三种不同实现方法:

最大间隔分类器
线性不可分类型的分类
核方法

(1)最大间隔分类器

当数据可以完全分离时,线性支持向量机会尝试最大化从线性边界到最近点(称为支持向量)的距离。因此,在下面的图片中,左边的边界比右边的边界好。

在这里插入图片描述(2)线性不可分类型的分类

不幸的是,现实数据很少是象上图所示那样完全可分离的。因此我们引入一个新的超参数 C。超参数 C 用来权衡分类误差和边际误差的权重。c的取值区间是0到无穷大。当 C 值很大时,我们更注重数据的正确分类,而不是寻找合适的间隔。

注意: 当 C 值对一组特定数据太大时,你可能根本无法收敛,因为总会有些分类错误的点不能被成功分离。

在这里插入图片描述
(3)核方法

最后,我们学习了核方法,它使支持向量机真正强大。支持向量机中的核方法,使我们能在线性不可分情况下分离数据。具体来说,你看到了两种类型的核:

多项式
径向基函数 (rbf)

当前最流行的核是 rbf(径向基函数)。rbf 核使你有可能对在任何空间都难以分离的点进行分类。这是一种观察点间紧密程度的基于密度的方法。 这里引入另一个超参数 gamma。当 gamma 取较大值时,其结果类似于C有较大值,即你的算法将尝试正确分类所有的点。于此相对,当 gamma 较小时, 你的算法将尝试以更泛化方式进行分类,这样会增加分类错误,但会提高泛化能力。

在这里插入图片描述

你需要完成以下步骤:

1.构建支持向量机模型 *使用 scikit-learn 的 SVC 创建支持向量机分类模型并将其赋值给变量 model。

2.将模型与数据进行拟合

如果有必要的话,指定一些超参数。目标是在数据集中获得 100% 的准确率。 提示:并非所有内核都合适。

3.使用模型进行预测

预测训练集的标签,并将此列表赋值给变量 y_pred。

4.计算模型的准确率 *为此,使用 sklearn 函数 accuracy_score。

# Import statements 
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
import pandas as pd
import numpy as np

# Read the data.
data = np.asarray(pd.read_csv('data.csv', header=None))
# Assign the features to the variable X, and the labels to the variable y. 
X = data[:,0:2]
y = data[:,2]

# TODO: Create the model and assign it to the variable model.
# Find the right parameters for this model to achieve 100% accuracy on the dataset.
model = SVC(kernel='rbf', gamma=27)

# TODO: Fit the model.
model.fit(X,y)

# TODO: Make predictions. Store them in the variable y_pred.
y_pred = model.predict(X)

# TODO: Calculate the accuracy and assign it to the variable acc.
acc = accuracy_score(y, y_pred)

data.csv

0.24539,0.81725,0
0.21774,0.76462,0
0.20161,0.69737,0
0.20161,0.58041,0
0.2477,0.49561,0
0.32834,0.44883,0
0.39516,0.48099,0
0.39286,0.57164,0
0.33525,0.62135,0
0.33986,0.71199,0
0.34447,0.81433,0
0.28226,0.82602,0
0.26613,0.75,0
0.26613,0.63596,0
0.32604,0.54825,0
0.28917,0.65643,0
0.80069,0.71491,0
0.80069,0.64181,0
0.80069,0.50146,0
0.79839,0.36988,0
0.73157,0.25,0
0.63249,0.18275,0
0.60023,0.27047,0
0.66014,0.34649,0
0.70161,0.42251,0
0.70853,0.53947,0
0.71544,0.63304,0
0.74309,0.72076,0
0.75,0.63596,0
0.75,0.46345,0
0.72235,0.35526,0
0.66935,0.28509,0
0.20622,0.94298,1
0.26613,0.8962,1
0.38134,0.8962,1
0.42051,0.94591,1
0.49885,0.86404,1
0.31452,0.93421,1
0.53111,0.72076,1
0.45276,0.74415,1
0.53571,0.6038,1
0.60484,0.71491,1
0.60945,0.58333,1
0.51267,0.47807,1
0.50806,0.59211,1
0.46198,0.30556,1
0.5288,0.41082,1
0.38594,0.35819,1
0.31682,0.31433,1
0.29608,0.20906,1
0.36982,0.27632,1
0.42972,0.18275,1
0.51498,0.10965,1
0.53111,0.20906,1
0.59793,0.095029,1
0.73848,0.086257,1
0.83065,0.18275,1
0.8629,0.10965,1
0.88364,0.27924,1
0.93433,0.30848,1
0.93433,0.19444,1
0.92512,0.43421,1
0.87903,0.43421,1
0.87903,0.58626,1
0.9182,0.71491,1
0.85138,0.8348,1
0.85599,0.94006,1
0.70853,0.94298,1
0.70853,0.87281,1
0.59793,0.93129,1
0.61175,0.83187,1
0.78226,0.82895,1
0.78917,0.8962,1
0.90668,0.89912,1
0.14862,0.92251,1
0.15092,0.85819,1
0.097926,0.85819,1
0.079493,0.91374,1
0.079493,0.77632,1
0.10945,0.79678,1
0.12327,0.67982,1
0.077189,0.6886,1
0.081797,0.58626,1
0.14862,0.58041,1
0.14862,0.5307,1
0.14171,0.41959,1
0.08871,0.49269,1
0.095622,0.36696,1
0.24539,0.3962,1
0.1947,0.29678,1
0.16935,0.22368,1
0.15553,0.13596,1
0.23848,0.12427,1
0.33065,0.12427,1
0.095622,0.2617,1
0.091014,0.20322,1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值