【揭开Scikit-learn支持向量机神秘面纱】实战案例带你轻松入门!

发布时间:2025-06-08 02:38:24

引言

支撑向量机(Support Vector Machine,SVM)是一种富强的呆板进修算法,广泛利用于分类跟回归成绩。Scikit-learn库供给了对SVM算法的实现,使得利用SVM变得简单而高效。本文将经由过程一个实战案例,带你轻松入门Scikit-learn中的SVM。

SVM简介

SVM的目标是找到一个超平面,将差别类其余样本点尽可能地分开。在二分类成绩中,SVM经由过程最大年夜化两类样本点之间的间隔来实现这一点。SVM可能处理线性可分跟线性弗成分的数据,经由过程核函数将数据映射到高维空间,实现非线性分类。

实战案例:鸢尾花数据集分类

在本案例中,我们将利用鸢尾花数据集,经由过程SVM停止分类。

1. 数据加载与预处理

起首,我们须要加载鸢尾花数据集,并停止预处理。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 加载数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target

# 分别练习集跟测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 特点标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

2. SVM模型练习

接上去,我们利用SVM模型停止练习。

from sklearn.svm import SVC

# 实例化SVM模型
model = SVC(kernel='linear')

# 练习模型
model.fit(X_train, y_train)

3. 模型评价

利用测试集评价模型的机能。

from sklearn.metrics import classification_report, accuracy_score

# 猜测
y_pred = model.predict(X_test)

# 评价
print(classification_report(y_test, y_pred))
print("Accuracy:", accuracy_score(y_test, y_pred))

4. 模型参数调优

为了进步模型的机能,我们可能对SVM的参数停止调优。

from sklearn.model_selection import GridSearchCV

# 参数网格
param_grid = {
    'C': [0.1, 1, 10],
    'kernel': ['linear', 'rbf'],
    'gamma': [0.001, 0.01, 0.1, 1]
}

# 实例化网格查抄
grid_search = GridSearchCV(model, param_grid, cv=5)

# 查抄最佳参数
grid_search.fit(X_train, y_train)

# 输出最佳参数
print("Best parameters:", grid_search.best_params_)

总结

经由过程本文的实战案例,我们懂得了Scikit-learn中SVM的基本用法,包含数据预处理、模型练习、评价跟参数调优。SVM是一种富强的呆板进修算法,在多个范畴都有广泛的利用。盼望本文能帮助你轻松入门SVM。