IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 基于SVM(支持向量机)对鸢尾花进行分类 -> 正文阅读

[人工智能]基于SVM(支持向量机)对鸢尾花进行分类

支持向量机方法也是一种强大的机器学习分类方法。
在感知器算法中,我们的目标是最小化分类误差,而在SVM中,我们的优化目标是最大化分类间隔。
较大的分类间隔意味着模型有较小的泛化误差,较小的间隔则意味着模型可能会过拟合。
在SVM中的两条平行的决策边界为:
w 0 + w T x p o s = 1 w_0+\bm{w}^T\bm{x}_{pos}=1 w0?+wTxpos?=1
w 0 + w T x n e g = ? 1 w_0+\bm{w}^T\bm{x}_{neg}=-1 w0?+wTxneg?=?1
两式相减可得:
w T ( x p o s ? x n e g ) = 2 \bm{w}^T(\bm{x}_{pos}-\bm{x}_{neg})=2 wT(xpos??xneg?)=2
定义
∣ ∣ w ∣ ∣ = ∑ j = 1 m w j 2 ||\bm{w}||=\sqrt{\sum_{j=1}^{m}w_j^2} w=j=1m?wj2? ?
可得
w T ( x p o s ? x n e g ) ∣ ∣ w ∣ ∣ = 2 ∣ ∣ w ∣ ∣ \frac{\bm{w}^T(\bm{x}_{pos}-\bm{x}_{neg})}{||\bm{w}||}=\frac{2}{||\bm{w}||} wwT(xpos??xneg?)?=w2?
等式左侧为正负超平面间的距离,也就是所要最大化的间隔,故需使 2 / ∣ ∣ w ∣ ∣ 2/||\bm{w}|| 2/w最大。
SVM的目标函数记为:
w 0 + w T x i ≥ 1 , if? y ( i ) = 1 w_0+\bm{w}^T\bm{x}^{i}\ge1, \text{if} \ y^{(i)}=1 w0?+wTxi1,if?y(i)=1
w 0 + w T x i ≤ 1 , if? y ( i ) = ? 1 w_0+\bm{w}^T\bm{x}^{i}\le1, \text{if} \ y^{(i)}=-1 w0?+wTxi1,if?y(i)=?1
对于非线性可分的数据,需要放松线性约束条件,以保证在适当的罚项成本下,对错误的分类情况优化时能够收敛。
w 0 + w T x i ≥ 1 , if? y i = 1 ? ξ ( i ) w_0+\bm{w}^T\bm{x}^{i}\ge1, \text{if} \ y^{i}=1-\xi^{(i)} w0?+wTxi1,if?yi=1?ξ(i)
w 0 + w T x i ≤ 1 , if? y i = ? 1 + ξ ( i ) w_0+\bm{w}^T\bm{x}^{i}\le1, \text{if} \ y^{i}=-1+\xi^{(i)} w0?+wTxi1,if?yi=?1+ξ(i)
通过引入 C C C值,新的目标优化为使下式最小:
1 2 ∣ ∣ w ∣ ∣ 2 + C ( ∑ i ξ ( i ) ) \frac{1}{2}||\bm{w}||^2+C(\sum_i\xi^{(i)}) 21?w2+C(i?ξ(i))
通过这种方法我们也可以对鸢尾花进行分类,代码引自《python机器学习》

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
import numpy as np
iris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3,random_state=0)

sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std: object = sc.transform(X_test)


def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):
    # 设置marker generator和color map
    markers = ('s', 'x', 'o', '^', 'v')
    colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')
    cmap = ListedColormap(colors[:len(np.unique(y))])
    x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),
                           np.arange(x2_min, x2_max, resolution))
    Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)
    Z = Z.reshape(xx1.shape)
    plt.contourf(xx1, xx2, Z, alpha=0.4, cmap=cmap)
    plt.xlim(xx1.min(), xx1.max())
    plt.ylim = (xx2.min(), xx2.max())
    X_test, y_test = X[test_idx, :], y[test_idx]
    for idx, cl in enumerate(np.unique(y)):  # np.unique:去除重复数据
        plt.scatter(x=X[y == cl, 0], y=X[y == cl, 1], alpha=0.8, c=cmap(idx), marker=markers[idx], label=cl)
    if test_idx:
        X_test, y_test = X[test_idx, :], y[test_idx]
        plt.scatter(X_test[:, 0], X_test[:, 1], c='black', alpha=0.8, linewidths=1, marker='o', s=10, label='test set')


X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))
svm = SVC(kernel='linear', C=1.0, random_state=0)# 使用线性核函数,设置C值为1
svm.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105,150))
plt.xlabel('petal length {standardized}')
plt.ylabel('petal width {standardized}')
plt.legend(loc='upper left')
plt.show()

小黑点表示测试集数据,分类结果如下:
在这里插入图片描述
可以观察到分类结果较好。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:50:21  更:2022-01-24 10:55:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 21:39:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码