程序员最趁手的SVM算法,学完你会哭着感谢努力的自己!下篇.

 支持向量机上篇内容更重要。

上篇地址:程序员最趁手的SVM算法,学完你会哭着感谢努力的自己!上篇。-CSDN博客

目录

6核贝叶斯支持向量机

7不平衡类别支持向量

废话不说直接进入主题:

6核贝叶斯支持向量机

核贝叶斯支持向量机通过学习一些已知的例子,并找到一个特殊的边界,用于将不同的事物区分开来。

核贝叶斯支持向量机可以应用于很多现实生活中的问题。例如:

1、邮件分类:将电子邮件自动分为垃圾邮件和非垃圾邮件。

2、图像识别:判断图像中是猫还是狗。

3、情感分析:自动判断文本评论是正面还是负面情感。

核贝叶斯支持向量机的公式可以简化为以下形式:

举个 Python 的例子

import numpy as np
import plotly.graph_objects as go
from sklearn.svm import SVC

# 生成示例数据
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
y = np.array([0, 1, 1, 0])

# 创建支持向量机模型
model = SVC(kernel='linear')

# 拟合数据
model.fit(X, y)

# 绘制数据点
data = [
    go.Scatter3d(
        x=X[:, 0],
        y=X[:, 1],
        z=X[:, 2],
        mode='markers',
        marker=dict(
            size=6,
            color=y,
            colorscale='Viridis',
            opacity=0.8
        )
    )
]

# 绘制决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
z_min, z_max = X[:, 2].min() - 1, X[:, 2].max() + 1
xx, yy, zz = np.meshgrid(np.arange(x_min, x_max, 0.1),
                         np.arange(y_min, y_max, 0.1),
                         np.arange(z_min, z_max, 0.1))
Z = model.predict(np.c_[xx.ravel(), yy.ravel(), zz.ravel()])
Z = Z.reshape(xx.shape)

# 添加决策边界到图形中
data.append(
    go.Surface(
        x=xx,
        y=yy,
        z=zz,
        surfacecolor=Z,
        colorscale='Viridis',
        showscale=False
    )
)

# 创建布局
layout = go.Layout(
    scene=dict(
        xaxis=dict(title='X'),
        yaxis=dict(title='Y'),
        zaxis=dict(title='Z')
    ),
    margin=dict(l=0, r=0, b=0, t=0)
)

# 绘制图形
fig = go.Figure(data=data, layout=layout)
fig.show()

7不平衡类别支持向量机

不平衡类别支持向量机是一种分类算法,它使用支持向量机的思想来处理不平衡类别数据集。

它的目标是通过调整决策边界,使得分类模型能够更好地识别少数类别,并提高整体分类准确率。

不平衡类别支持向量机常用于以下场景:

  • 欺诈检测:在信用卡交易中,欺诈行为往往只占极小比例,而正常交易占大部分。

  • 医学诊断:对于某些罕见病症或疾病,阳性样本数量通常较少。

  • 文本分类:在某些特定的主题或事件中,负面评论或垃圾邮件的数量相对较少。

不平衡类别支持向量机的目标是最小化以下公式:

import numpy as np
from sklearn.svm import SVC
import plotly.graph_objects as go

# 创建训练数据
X = np.array([[3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 0, 1, 1])

# 创建不平衡类别支持向量机模型
model = SVC(class_weight='balanced')

# 拟合模型
model.fit(X, y)

# 生成网格点用于绘制决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max, 0.1))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

# 绘制三维图
fig = go.Figure(data=[go.Surface(z=Z, x=xx, y=yy)])
fig.update_layout(title='Decision Boundary', autosize=False,
                  width=500, height=500, margin=dict(l=65, r=50, b=65, t=90))
fig.show()

这段代码使用 Scikit-learn 库中的 SVC 类来创建不平衡类别支持向量机模型,并使用plotly库绘制三维图来展示决策边界。在训练数据中,我们有两个特征和两个类别。通过拟合模型并预测网格点上的分类结果,我们可以得到决策边界,并将其可视化。

结束。谢谢观看,支持向量机上篇内容更重要。

上篇地址:程序员最趁手的SVM算法,学完你会哭着感谢努力的自己!上篇。-CSDN博客

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Boss.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值