支持向量机(SVM)是一种强大的机器学习算法,广泛应用于分类和回归任务。Python中有着丰富的SVM库,如scikit-learn,使得SVM的学习和使用变得简单快捷。本文将带你从SVM的基础知识开始,逐步深入到实战应用,让你轻松掌握SVM。
一、SVM基础
1.1 什么是SVM?
SVM是一种二分类模型,其基本思想是将数据映射到一个高维空间,使得不同类别在空间中尽可能分开。在分类过程中,SVM寻找一个最优的超平面,使得正负样本点到超平面的距离最大化。
1.2 SVM模型类型
- 线性SVM:适用于线性可分的数据集。
- 非线性SVM:适用于非线性可分的数据集,如多项式核函数和径向基核函数。
- 核SVM:通过核技巧将数据映射到高维空间,实现非线性分类。
二、Python SVM库
Python中常用的SVM库是scikit-learn,它提供了丰富的SVM实现,包括线性SVM、非线性SVM和核SVM。
2.1 安装scikit-learn
首先,你需要安装scikit-learn库。可以使用pip命令进行安装:
pip install scikit-learn
2.2 导入SVM模块
在Python代码中,首先需要导入SVM模块:
from sklearn import svm
三、SVM实战
3.1 线性SVM
以下是一个使用线性SVM进行二分类的简单示例:
from sklearn import svm
from sklearn import datasets
# 加载数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 创建线性SVM分类器
clf = svm.SVC(kernel='linear')
# 训练模型
clf.fit(X, y)
# 预测
print(clf.predict([[5.1, 3.5, 1.4, 0.2]]))
3.2 非线性SVM
以下是一个使用多项式核函数进行非线性分类的示例:
from sklearn import svm
from sklearn import datasets
from sklearn.model_selection import train_test_split
# 加载数据集
boston = datasets.load_boston()
X = boston.data
y = boston.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建非线性SVM分类器
clf = svm.SVC(kernel='poly', degree=3)
# 训练模型
clf.fit(X_train, y_train)
# 评估模型
print(clf.score(X_test, y_test))
3.3 核SVM
以下是一个使用径向基核函数进行非线性分类的示例:
from sklearn import svm
from sklearn import datasets
from sklearn.model_selection import train_test_split
# 加载数据集
digits = datasets.load_digits()
X = digits.data
y = digits.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建核SVM分类器
clf = svm.SVC(kernel='rbf', gamma=0.001)
# 训练模型
clf.fit(X_train, y_train)
# 评估模型
print(clf.score(X_test, y_test))
四、总结
本文介绍了Python SVM库的入门知识,包括SVM基础、常用库和实战应用。通过学习本文,你将能够轻松掌握SVM在Python中的应用。在实际应用中,你可以根据具体问题选择合适的SVM模型和参数,提高模型的性能。祝你学习愉快!