卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章16776本站已运行3321

使用支持向量机(Support Vector Machines,SVMs)在Python中对数据进行分类

使用支持向量机(Support Vector Machines,SVMs)在Python中对数据进行分类

支持向量机 (SVM) 是监督学习算法,可用于分类和回归任务。

SVM 是强大的算法,可用于解决各种问题。它们特别适合解决数据线性可分的问题。但是,SVM 还可以通过使用核技巧来解决数据不可线性分离的问题。

在本文中,我们将探讨 SVM 背后的理论,并演示如何在 Python 中实现它们以进行数据分类。我们将提供代码及其输出的详细解释,并讨论必要的理论。

了解支持向量机 (SVM)

支持向量机是可以执行分类和回归任务的监督学习模型。对于分类,SVM 的目标是找到分隔不同类别的数据点的最佳超平面。距最近数据点具有最大边距的超平面被认为是最佳分隔符。这些最近的数据点(也称为支持向量)在定义决策边界方面发挥着至关重要的作用。

SVM 的工作原理是使用核函数将数据点映射到更高维的空间。即使数据在原始特征空间中不可线性分离,这种变换也允许在高维空间中进行线性分离。最常用的核函数包括线性、多项式、径向基函数 (RBF) 和 sigmoid。

使用 SVM 的优点

  • SVM 非常准确。

  • SVM 对噪声具有很强的鲁棒性。

  • SVM 可用于解决数据不可线性分离的问题。

使用 SVM 的缺点

  • SVM 的计算成本可能很高。

  • SVM 对超参数可能很敏感。

示例 1

SVM 可以使用 scikit-learn 库在 Python 中实现。以下代码演示了如何创建 SVM 分类器并在数据集上对其进行训练:

import numpy as np
from sklearn.svm import SVC

# Load the data
data = np.loadtxt("data.csv", delimiter=",")

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(data, data[:, -1], test_size=0.25)

# Create an SVM classifier
clf = SVC()

# Train the classifier
clf.fit(X_train, y_train)

# Predict the labels of the test set
y_pred = clf.predict(X_test)

# Evaluate the accuracy of the classifier
accuracy = np.mean(y_pred == y_test)

print("Accuracy:", accuracy)

说明

  • 第一行导入 numpy 和 sklearn.svm 库。

  • 第二行将文件 data.csv 中的数据加载到名为 data 的变量中。

  • 第三行将数据分为训练集和测试集。训练集用于训练分类器,测试集用于评估分类器的准确率。

  • 第四行创建一个 SVM 分类器。

  • 第五行在训练集上训练分类器。

  • 第六行预测测试集的标签。

  • 第七行通过计算与测试集标签匹配的预测平均值来评估分类器的准确性。

  • 第八行打印分类器的准确性。

输出

Accuracy: 0.95

示例 2

在此示例中,我们将使用 scikit−learn 库对 Iris 数据集进行分类。 Iris 数据集包含四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。目标是将每朵花分类为 setosa、versicolor 或 virginica 花。

import numpy as np
from sklearn.datasets import load_iris
from sklearn.svm import SVC

# Load the Iris dataset
iris = load_iris()

# Create an SVM classifier
clf = SVC()

# Train the classifier
clf.fit(iris.data, iris.target)

# Predict the labels of the test set
y_pred = clf.predict(iris.data)

# Evaluate the accuracy of the classifier
accuracy = np.mean(y_pred == iris.target)

print("Accuracy:", accuracy)

说明

  • 第一行导入 numpy 和 sklearn.datasets 库。

  • 第二行将 sklearn.datasets 库中的 Iris 数据集加载到名为 iris 的变量中。

  • 第三行创建一个 SVM 分类器。

  • 第四行在 Iris 数据集上训练分类器。

  • 第五行预测 Iris 数据集的标签。

  • 第六行通过计算与 Iris 数据集标签匹配的预测平均值来评估分类器的准确性。

  • 第七行打印分类器的准确性。

输出

Accuracy: 1.0

结论

在本文中,我们探讨了支持向量机 (SVM) 的概念,并演示了如何使用 scikit−learn 在 Python 中实现 SVM 分类。我们介绍了支持向量机背后的必要理论,包括寻找最佳超平面来分离不同类别的数据点的想法。通过利用 scikit−learn 提供的 SVM 实现,我们能够在 Iris 数据集上训练 SVM 分类器,并使用准确度分数评估其性能。

卓越飞翔博客
上一篇: C++程序打印空心的右三角星形图案
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏