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语法之通过value找key问题

    对于Python中的字典类型,我们可以通过键值对的方式存储和访问数据。有时候我们需要通过值来找到对应的键,本文将详细讲解如何实现这个功能。 方法一:使用循环遍历字典 Python中的字典类型可以使用for…in循环遍历。我们可以遍历字典的元素,找到与目标值相同的元素,并返回对应的键。以下是示例代码: my_dict = {‘apple’: 1, ‘ban…

    python 2023年6月3日
    00
  • Python技巧之实现批量统一图片格式和尺寸

    下面详细讲解“Python技巧之实现批量统一图片格式和尺寸”的完整攻略。 问题及解决方案 在处理图片时,经常需要将多张图片转换成相同的格式和尺寸,以方便后续的处理和展示。比如,将网上下载的图片批量转换成PNG格式和大小为400×400像素的尺寸。手动处理这些图片显然非常费时间和精力,我们可以使用Python来批处理这些图片。 实现步骤 以下是实现步骤: 确定…

    python 2023年5月19日
    00
  • pip报错“ImportError: cannot import name ‘main’ from ‘pip._internal’ (/usr/lib/python3/dist-packages/pip/_internal/init.py)”怎么处理?

    当使用 pip 安装 Python 包时,可能会遇到 “ImportError: cannot import name ‘main’ from ‘pip._internal’ (/usr/lib/python3/dist-packages/pip/_internal/init.py)” 错误。这个错误通常是由于 pip 安装过程中出现问题导致的。以下是详细讲…

    python 2023年5月4日
    00
  • 限制 Python 进程内存使用

    【问题标题】:Limit Python process memory usage限制 Python 进程内存使用 【发布时间】:2023-04-05 10:32:01 【问题描述】: 我有一个内存为 16GB 的系统。我为一些数据挖掘应用程序运行了一个python 脚本,该过程占用了整个 16GB。我想限制python进程只占用有限的内存。 可以这样做吗?如…

    Python开发 2023年4月5日
    00
  • 浅谈Python几种常见的归一化方法

    浅谈Python几种常见的归一化方法 在机器学习中,归一化是一种常用的数据预处理技术,其目的是将不同量纲的特征值缩放到相同的范内,以便更好地进行模型训练和预测。本文将介绍Python中几种常见的归一化方法,并提供两个示例说明。 1. Min-Max归一化 Min-Max归一化是一种常用的线性归一化方法,其公式如下: $${norm} = \frac{x – …

    python 2023年5月14日
    00
  • python3使用scrapy生成csv文件代码示例

    下面是“python3使用scrapy生成csv文件代码示例”的完整攻略,由以下几部分组成: 安装Scrapy框架 创建一个Scrapy项目并定义数据模型(items) 编写Spider爬虫代码 编写Pipeline代码,用于处理爬取结果并生成CSV文件 1. 安装Scrapy框架 Scrapy是一个用于爬取数据的Python框架,我们需要先安装Scrapy…

    python 2023年6月3日
    00
  • Python利用request库实现翻译接口

    在Python中,可以使用requests库实现翻译接口。以下是详细讲解Python利用requests库实现翻译接口的攻略,包含两个例。 使用requests库实现有道翻译接口 有道翻译是一个常用的在线翻译服务,可以使用requests库实现有道翻译接口。以下是一个示例: import requests import json url = ‘http://…

    python 2023年5月15日
    00
  • 在 Python 中检查 A 是否是 B 的超类

    【问题标题】:Checking if A is superclass of B in Python在 Python 中检查 A 是否是 B 的超类 【发布时间】:2023-04-05 04:35:02 【问题描述】: class p1(object): pass class p2(p1): pass 所以 p2 是 p1 的子类。有没有办法以编程方式找出 p…

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