支持向量机上篇内容更重要。
上篇地址:程序员最趁手的SVM算法,学完你会哭着感谢努力的自己!上篇。-CSDN博客
废话不说直接进入主题:
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博客