📅  最后修改于: 2023-12-03 15:19:59.782000             🧑  作者: Mango
支持向量机(Support Vector Machine, SVM)是一种分类算法,它在二元分类和多元分类问题中都有着广泛的应用,而且在模式识别、图像处理、生物信息学、文本分类等领域都有很好的表现。SVM的主要思想是把样本映射为高维特征空间,通过一个最优的超平面将不同类别的样本完全分开。
Scikit-learn是基于Python的开源机器学习库,可以轻松实现SVM算法。
可以使用pip安装Scikit-learn库:
pip install scikit-learn
首先需要准备一个数据集。Scikit-learn提供了一些示例数据集,包括分类数据集和回归数据集,可以使用load_函数加载到Python中,具体如下:
from sklearn import datasets
# 加载iris分类数据集
iris = datasets.load_iris()
# 加载digits分类数据集
digits = datasets.load_digits()
# 加载diabetes回归数据集
diabetes = datasets.load_diabetes()
下面是一个简单的二元分类示例,使用SVM进行分类:
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载iris分类数据集
iris = datasets.load_iris()
X = iris.data[:, :2] # 使用前两个特征
y = iris.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0)
# 创建一个SVM分类器,并进行训练
clf = svm.SVC(kernel='linear', C=1, random_state=0)
clf.fit(X_train, y_train)
# 使用测试数据进行预测
y_pred = clf.predict(X_test)
# 输出分类的准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
这个示例加载了Scikit-learn提供的iris分类数据集,然后从中选取了前两个特征作为训练数据。将数据集分为训练集和测试集,然后使用SVM分类器进行训练。最后使用测试数据进行预测,并输出分类的准确率。
Scikit-learn也提供了一些示例回归数据集,可以用来进行回归分析。下面是一个简单的回归分析示例,使用SVM进行回归:
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
# 加载diabetes回归数据集
diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0)
# 创建一个SVM回归器,并进行训练
clf = svm.SVR(kernel='linear', C=1, epsilon=0.2)
clf.fit(X_train, y_train)
# 使用测试数据进行预测
y_pred = clf.predict(X_test)
# 输出回归的R2值
r2 = r2_score(y_test, y_pred)
print("R2:", r2)
这个示例加载了Scikit-learn提供的diabetes回归数据集,然后将数据集分为训练集和测试集。接着创建了一个SVM回归器,并进行训练。最后使用测试数据进行预测,并输出回归的R2值。
Scikit-learn是一个非常强大的机器学习库,其中包含了很多常见的机器学习算法。使用Scikit-learn实现SVM算法非常简单,只需要几行Python代码便可以完成分类或回归分析。