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

yizhihongxing

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日

相关文章

  • Python2和Python3中print的用法示例总结

    下面为您详细讲解“Python2和Python3中print的用法示例总结”的完整攻略。 Python2和Python3中print的用法 在Python2中,print是一个语句(statement),而在Python3中,print则是一个函数(function)。这导致在使用print语句时,Python2和Python3的用法是不同的。 Python…

    python 2023年6月3日
    00
  • python中validators库的使用方法详解

    Python中validators库是一款常用的用于验证常见数据类型及格式的包。它提供了多种函数,可用于检查字符串、URIs、电子邮件地址、IP地址等等。本文将详细介绍validators库的使用方法。 安装 使用pip命令安装validators库: pip install validators 使用方法 导入validators库: import val…

    python 2023年6月3日
    00
  • 移除切比雪夫多项式小拖尾系数的Python程序

    移除切比雪夫多项式小拖尾系数的过程,通常被称为切比雪夫多项式带通滤波。这个过程可以通过一系列的数学公式和操作完成。在Python中,我们可以用一些库和函数来实现这个过程。以下是一种比较完整的Python程序,它可以用来移除切比雪夫多项式小拖尾系数: 导入所需库 import scipy.signal as signalimport numpy as np 配…

    python-answer 2023年3月25日
    00
  • 详解python网络进程

    详解 Python 网络进程 本文旨在介绍 Python 中常用的网络编程模式及其在进程(多进程、多线程)中的应用,以及一些实际场景中的应用示例。 网络编程模式 Python 中关于网络编程的模式较多,其中常用的有以下三种: TCP 模式 TCP 是一种可靠的、面向连接的传输层协议。它保证数据的可靠性,因为数据会传输到指定的目的地,并且会被确认。TCP 适合…

    python 2023年5月14日
    00
  • python如何实现常用的五种排序算法详解

    下面是关于“Python实现常用的五种排序算法详解”的完整攻略。 1. 排序算法理论基础 排序算法是一种常用的算法,它可以一组数据按照一定的规则进行排序。常用的排序算法有五种,分别是冒泡排序、选择排序、插入排序、速排序和归并排序。 1.1 冒泡排序 冒泡排序是一种简单的排序算法,它的基本思想是通过邻元素之间的较和交换来实现排序。具体实现过程是从第一个元素开始…

    python 2023年5月13日
    00
  • Python实现加密接口测试方法步骤详解

    Python实现加密接口测试方法步骤详解 什么是加密接口 加密接口是指需要对参数进行加密后才能调用的接口。通常情况下,接口会要求传递加密后的参数,防止参数泄露和被篡改。 加密接口测试的挑战 加密接口测试相比普通接口测试,增加了一定的难度,需要我们掌握加密方法并对参数进行加密。对于初学者来说,可能会遇到以下挑战: 加密方法不了解,无法正确加密参数 参数加密后格…

    python 2023年6月3日
    00
  • python3 正则表达式基础廖雪峰

    Python3正则表达式基础 正则表达式是一种用于描述字符串模式的语言,可以用于配、查找、替换和分割。在Python中,可以使用re模块来使用正则表达式。本文将详细介绍Python中正则表达式的语法、字符集、转义字符以及常用函数,并提供两个示例说明。 基本语法 正则表达式由普通字符和元成,普字符表示本身,而元字符则有特殊的含义。下面是一些常用元字符: .:匹…

    python 2023年5月14日
    00
  • ModuleNotFoundError:即使在破解 sys.path() 之后,python 3 中也没有命名模块

    【问题标题】:ModuleNotFoundError: No module named in python 3 even after hacking sys.path()ModuleNotFoundError:即使在破解 sys.path() 之后,python 3 中也没有命名模块 【发布时间】:2023-04-03 09:45:02 【问题描述】: 我有…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部