答答问 > 投稿 > 正文
【揭开Scikit-learn支持向量机神秘面纱】实战案例带你轻松入门!

作者:用户RRLY 更新时间:2025-06-09 04:08:29 阅读时间: 2分钟

引言

支持向量机(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。

大家都在看
发布时间:2024-12-10 07:55
受《深圳市轨道交通规划(2012-2040年)》曝光的影响,地铁物业价值持续攀升,成为众多置业者和投资者的首选,记者近日在采访中了解到,部分地铁沿线物业近一年来升值幅度较大,个别物业与一年前相比上涨甚至超过4成。不少开发商打起了“地铁概念房。
发布时间:2024-10-29 18:09
五丝唐 褚朝阳越人传楚俗,截竹竞萦丝。水底深休也,日中还贺之。章施文胜质,列匹美于姬。锦绣侔新段,羔羊寝旧诗。但夸端午节,谁荐屈原祠。把酒时伸奠,汨罗空远而。端午日赐衣。
发布时间:2024-12-14 06:39
目前通车的只有3号线一条,其余的1-2号施工中,另外有10余条规划中,随着城市的发展,地铁线路将越来越多,规划也将随时变化,所以最多有几条是不确定的。。