Python中的支持向量机SVM的使用(附实例代码)

Python中的支持向量机SVM的使用(附实例代码)

支持向量机(Support Vector Machine,SVM)是一种非常常见的分类算法,在解决复杂问题时有着很好的性能。

安装必要的库

要使用SVM,需要安装一些库。这里推荐使用以下库:

  • NumPy:用于支持向量机的数学运算和操作
  • Pandas:用于数据读取和处理
  • Scikit-learn:包含SVM模型和许多其他机器学习算法的库
!pip install numpy pandas scikit-learn

加载数据

我们将使用Iris数据集作为示例来演示SVM的使用。该数据集包含三种不同的鸢尾花品种(山鸢尾,变色鸢尾,维吉尼亚鸢尾)的150个样本,每个样本包含4个属性:萼片长度(Sepal Length)、萼片宽度(Sepal Width)、花瓣长度(Petal Length)和花瓣宽度(Petal Width)。

首先,我们需要使用Pandas加载数据。可以使用以下代码从CSV文件中加载数据:

import pandas as pd

# 加载数据
data = pd.read_csv('iris.csv')

接下来,我们将数据集拆分成两部分:一部分用于训练模型,另一部分用于测试模型。我们可以使用Scikit-learn库中的train_test_split函数轻松地完成这个任务。

from sklearn.model_selection import train_test_split

# 拆分数据集:80%用于训练,20%用于测试
train_data, test_data, train_labels, test_labels = train_test_split(
    data[['Sepal Length', 'Sepal Width', 'Petal Length', 'Petal Width']],
    data['Class'],
    test_size=0.2,
    random_state=0)

在这里,将数据的80%用于训练,20%用于测试。

训练模型

接下来,我们可以使用Scikit-learn库中的SVC类创建支持向量机模型。SVC类提供了不同的内核函数可用:线性、多项式、径向基和sigmoid。这个示例中,将使用线性内核函数。

from sklearn.svm import SVC

# 创建SVM模型,使用线性内核函数
model = SVC(kernel='linear')
model.fit(train_data, train_labels)

这里我们创建了一个SVM模型,并使用fit函数将数据喂给模型进行训练。

测试模型

训练模型之后,我们需要使用测试数据对模型进行测试。

from sklearn.metrics import accuracy_score

# 用测试数据评估模型的准确性
predictions = model.predict(test_data)
print('模型在测试数据上的准确性:', accuracy_score(test_labels, predictions))

这里使用predict函数对测试集中的数据进行预测,之后使用accuracy_score函数来评估模型在测试数据上的准确性。

示例1:使用SVM进行二分类

这个示例使用一个名为diabetes.csv的数据集。这个数据集包含有关患者的一些医学指标以及他们是否患有糖尿病的信息。

首先,我们需要加载数据,和之前操作一样使用Pandas

import pandas as pd

# 加载数据
data = pd.read_csv('diabetes.csv')

建议更改数据集的编码为utf-8,如:

import pandas as pd

# 加载数据
data = pd.read_csv('diabetes.csv', encoding='utf-8')

在这个示例中,我们需要将数据的标签从字符串转换为数字。为了做到这一点,我们可以使用以下代码:

# 将标签转换为数字
data['Outcome'] = pd.Categorical(data['Outcome']).codes

类别转换成数字后,使用train_test_split函数将数据集拆分为训练和测试部分。

from sklearn.model_selection import train_test_split

# 拆分数据集
train_data, test_data, train_labels, test_labels = train_test_split(
    data.iloc[:,:-1],
    data.iloc[:,-1],
    test_size=0.2,
    random_state=0)

在这个示例中,将数据的80%用于训练,20%用于测试。

现在,我们可以创建一个SVM模型并在训练数据上进行训练。这里使用了径向基内核函数。

from sklearn.svm import SVC

# 创建SVM模型,使用径向基内核函数
model = SVC(kernel='rbf')
model.fit(train_data, train_labels)

现在,我们可以使用测试数据对模型进行测试。与我们之前介绍的方法相同,我们可以使用predictaccuracy_score函数对测试数据进行预测和评估。

from sklearn.metrics import accuracy_score

# 用测试数据评估模型的准确性
predictions = model.predict(test_data)
print('模型在测试数据上的准确性:', accuracy_score(test_labels, predictions))

示例2:使用SVM进行多分类

这个示例使用Iris数据集来演示如何使用SVM进行多分类。当数据集具有多个类时,我们可以使用多类SVM模型来进行分类。

同样地,我们需要加载数据。

import pandas as pd

# 加载数据
data = pd.read_csv('iris.csv')

使用train_test_split函数将数据集拆分为训练和测试部分。

from sklearn.model_selection import train_test_split

# 拆分数据集
train_data, test_data, train_labels, test_labels = train_test_split(
    data[['Sepal Length', 'Sepal Width', 'Petal Length', 'Petal Width']],
    data['Class'],
    test_size=0.2,
    random_state=0)

在这个示例中,将数据的80%用于训练,20%用于测试。

SVM具有多类支持。这里使用Scikit-learn库中的SVC类创建一个多类SVM模型。这个SVM模型有一个参数decision_function_shape,用于指定决策函数的形状。对于多类问题,Crammer和Singer提出了一个方法来解决多类SVM问题。对于这种方法,我们将decision_function_shape设置为ovr

from sklearn.svm import SVC

# 创建一个多类SVM模型
model = SVC(decision_function_shape='ovr')
model.fit(train_data, train_labels)

现在,我们可以使用测试数据对模型进行测试。

from sklearn.metrics import accuracy_score

# 用测试数据评估模型的准确性
predictions = model.predict(test_data)
print('模型在测试数据上的准确性:', accuracy_score(test_labels, predictions))

这里同样使用predictaccuracy_score函数对测试数据进行预测和评估。

总的来说,这是关于Python中支持向量机SVM使用的详细攻略,通过这些例子,您可以更好地理解如何使用SVM分类器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中的支持向量机SVM的使用(附实例代码) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Python中ConfigParser模块示例详解

    下面是“Python中ConfigParser模块示例详解”的完整攻略,希望能对您有所帮助。 什么是ConfigParser模块? ConfigParser是Python中一个用于读取配置文件的标准库模块,可以方便地管理和读取INI格式的配置文件。它提供了对INI类型的配置文件的读取和写入的功能。INI文件是一种用于配置应用程序的文件格式,它包含了各种参数和…

    python 2023年6月3日
    00
  • Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]

    下面是“Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]”的完整实例教程。 问题描述 在使用MySQL数据库时,我们经常会遇到中文乱码的问题,在查询和导出数据时也有可能会出现问题。具体表现为: 插入中文数据后,读取出来出现乱码; 查询中文数据时,查询结果中出现乱码; 导出数据为sql语句或Excel文件时,文件中出现乱码。 本教程将详细…

    python 2023年5月13日
    00
  • 一文详解如何创建自己的Python装饰器

    如何创建自己的Python装饰器 装饰器是 Python 中非常强大的功能之一。Python 装饰器可以在不修改函数的源代码的情况下,动态地修改函数的行为。以下是如何创建自己的 Python 装饰器的详细攻略。 创建装饰器的基本语法 Python 的装饰器实际上是一个函数,它可以接收一个其它函数作为参数并返回一个新的、修改过的函数。 def my_decor…

    python 2023年5月18日
    00
  • python绘图demo实现流程介绍

    下面是针对“python绘图demo实现流程介绍”的详细攻略: 1. 准备工作 在进行Python绘图前,需要安装Matplotlib库,通过pip命令进行安装: pip install matplotlib 安装完成后,导入Matplotlib库: import matplotlib as mpl import matplotlib.pyplot as p…

    python 2023年5月19日
    00
  • python带参数打包exe及调用方式

    下面我将详细讲解“Python带参数打包exe及调用方式”的完整攻略。 1. 大体思路 在Python程序中获取命令行参数。 使用PyInstaller对Python程序进行打包成exe文件。 使用subprocess模块在Python程序中调用exe程序,并通过参数传递数据。 2. 获取命令行参数 在Python程序中获取命令行参数,可以使用sys模块的a…

    python 2023年6月3日
    00
  • python opencv之分水岭算法示例

    下面是详细讲解“Python OpenCV之分水岭算法示例”的完整攻略,包括算法原理、Python实现和两个示例说明。 算法原理 分水岭算法是一种基于图论的算法,其主要思想是将图像看作一个拓扑图,将像素点看作节点,将像素点之间的连通性看作边,通过计算边的权重,找到图中的分水岭,从而实现图像分割。分水岭算法的实现过程如下: 对图像进行灰度化处理。 计算图像的梯…

    python 2023年5月14日
    00
  • Python中url标签使用知识点总结

    Python中url标签使用知识点总结 在Python中,我们可以使用url标签来处理URL地址。url标签是一个HTML标签,它可以用于创建超链接。在本教程中,我们将介绍Python中url标签的使用知识点。以下是一些常见的使用方法: 1. 创建超链接 我们可以使用url标签来创建超链接。以下是一个示例代码,演示如何使用url标签创建超链接: from I…

    python 2023年5月15日
    00
  • Python的bit_length函数来二进制的位数方法

    Python中的int类型,有着很多有用的方法。比如,我们可以使用bit_length函数来获取一个整数的二进制的位数。下面将详细讲解如何使用bit_length函数来获得一个整数的二进制的位数。 什么是二进制的位数 二进制的位数是指,一个二进制数字中包含的位数。例如,二进制数1101包含4位,二进制数101011包含6位。 Python中的bit_leng…

    python 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部