计算机系统应用教程网站

网站首页 > 技术文章 正文

支持向量机的原理和使用方法

btikc 2024-11-19 02:03:15 技术文章 3 ℃ 0 评论


原理:

1. 基本思想 - SVM的目标是在高维空间中找到一个超平面,能够将不同类别的数据samples分隔开,且分隔超平面与最近的数据samples之间的距离最大化。这些最近的数据samples就是支持向量。

2. 核技巧 - 对于非线性可分的数据,SVM使用一种称为核技巧(kernel trick)的方法,将数据映射到更高维度的空间,使其在高维空间内线性可分。常用的核函数有线性核、多项式核、高斯核等。

3. 软间隔 -对于某些数据集,不可能找到一个能完全正确分类所有samples的超平面。软间隔允许SVM在一定程度上忽略outliers,以获得更好的泛化能力。

使用方法(Python中的scikit-learn):

from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

# 加载数据

iris = datasets.load_iris()
X = iris.data[:, :2] # 仅使用前两个特征
y = iris.target

# 创建Pipeline对象,包含标准化和SVM分类器

clf = Pipeline([('scaler', StandardScaler()),('linear_svc', SVC(kernel='linear', C=1))])

# 训练模型

clf.fit(X, y)

# 预测新数据

new_data = [[5.1, 3.5], [5.9, 3.0]]
print('New samples predictions: ', clf.predict(new_data))

首先导入必要的库,然后加载iris鸢尾花数据集。我们只使用前两个特征(花萼长度和宽度)进行训练。接下来,创建一个Pipeline对象,包含标准化(StandardScaler)和线性核SVM分类器(SVC)。`C`是SVM中的惩罚参数,用于控制软间隔的程度。使用`fit()`方法训练模型,最后可以对新数据`new_data`进行预测(`predict()`)。除了`SVC`用于分类之外,`SVR`可用于回归问题。SVM还支持多项式核、RBF核等,通过`kernel`参数指定。还可以通过`gamma`,`degree`等参数对核函数进行调优。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表