支持向量机(SVM)进行文本分类的Python简单示例实现

支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,主要用于分类和回归问题。它的基本思想是将数据映射到高维空间中,使得数据在该空间中线性可分,然后在该空间中寻找最优的超平面,将不同类别的数据分开。

SVM的优点在于可以处理高维数据,具有较好的泛化能力和鲁棒性。同时,SVM还可以使用核函数将数据映射到更高维的空间中,从而处理非线性问题。

SVM的核心是支持向量,即距离超平面最近的数据点。在训练过程中,SVM会寻找最大间隔超平面,即距离支持向量最远的超平面。这样可以使得分类器的泛化能力更好,对新的数据具有更好的预测能力。

SVM的训练过程可以使用优化算法来实现,例如序列最小优化(Sequential Minimal Optimization,SMO)算法。在实际应用中,SVM还可以使用软间隔和核函数等技术来处理噪声和非线性问题。

from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
from sklearn import svmX = np.array(["这个电影太好看了","这个电影真是太差了","我喜欢这个电视剧","这个电视剧太无聊了"
])y = np.array([1, 0, 1, 0])  # 1代表积极,0代表消极vectorizer = CountVectorizer()
X = vectorizer.fit_transform(X)clf = svm.SVC() #创建一个SVC对象,并使用fit方法拟合数据
clf.fit(X, y)new_text = np.array(["这个电影非常棒"])  #假设有一个新的文本数据new_text
new_text = vectorizer.transform(new_text)
prediction = clf.predict(new_text)print(prediction)   #prediction是一个数组,包含了预测结果

如果你的数据来源于一个CSV文件中的很多条文本,你可以使用Python中的pandas库来读取CSV文件 。CSV中数据格式示例如下,包含两个字段:textlabel。第一行是字段名,后面的行是数据记录。每一行的字段值使用逗号进行分隔:

text,label
这个电影太好看了,1
这个电影真是太差了,0
我喜欢这个电视剧,1
这个电视剧太无聊了,0
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
from sklearn import svm# 读取CSV文件
df = pd.read_csv('data.csv', encoding='utf-8')# 获取文本数据和标签
X = df['text'].values
y = df['label'].valuesvectorizer = CountVectorizer()
X = vectorizer.fit_transform(X)clf = svm.SVC() #创建一个SVC对象,并使用fit方法拟合数据
clf.fit(X, y)new_text = np.array(["这个电影非常棒"])  #假设有一个新的文本数据new_text
new_text = vectorizer.transform(new_text)
prediction = clf.predict(new_text)print(prediction)   #prediction是一个数组,包含了预测结果

如果你的数据来源于一个txt文本中的很多句子,句子和标签之间用逗号分隔,示例如下:

这个电影太好看了,1
这个电影真是太差了,0
我喜欢这个电视剧,1
这个电视剧太无聊了,0
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
from sklearn import svm# 读取txt文件
with open('data.txt', 'r', encoding='utf-8') as file:lines = file.readlines()sentences = []
labels = []# 分割句子和标签
for line in lines:line = line.strip()  # 去除换行符和空格sentence, label = line.split(',')  # 使用逗号分隔句子和标签sentences.append(sentence)labels.append(label)y=np.array(labels)vectorizer = CountVectorizer()
X = vectorizer.fit_transform(sentences)clf = svm.SVC() #创建一个SVC对象,并使用fit方法拟合数据
clf.fit(X, y)new_text = np.array(["这个电影非常棒"])  #假设有一个新的文本数据new_text
new_text = vectorizer.transform(new_text)
prediction = clf.predict(new_text)print(prediction)   #prediction是一个数组,包含了预测结果

示例中使用了简单的词袋模型,将每个文本表示为一个向量,其中每个维度表示一个词的出现次数,使用CountVectorizer实现了这一步骤。

程序输出结果如下:

[1]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java SSM框架实现线上教学平台系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现线上教学平台演示 摘要 在社会快速发展的影响下,使线上教学平台的管理和运营比过去十年更加理性化。依照这一现实为基础,设计一个快捷而又方便的网上线上教学平台系统是一项十分重要并且有价值的事情。对于传统的线上教学平台控制…

走进shell

Linux系统启动时,会自动创建多个虚拟控制台。虚拟控制台是运行在Linux系统内存中的终端会话。 打开Linux控制台Terminal使用tty命令查看当前使用的虚拟控制台。 注:tty 表示电传打字机(teletypewriter) $ tty /dev/pts/0表示当前使用的是/dev/pts/0 虚拟…

(1)(1.13) SiK无线电高级配置(五)

文章目录 前言 10 可用频率范围 11 DUTY_CYCLE 设置 12 低延迟模式 13 先听后说 (LBT) 14 升级无线电固件 15 MAVLink协议说明 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 1…

51单片机汇编指令表--STC宏晶MCU

51单片机汇编指令表–STC宏晶MCU 51单片机汇编指令简介 51系列单片机汇编指令表非常庞大,包含了五大类指令,以下是各类指令的一个简要概述和部分示例: 一、数据传送类指令 这些指令用于在寄存器之间、寄存器与存储单元之间以及立即数与寄存…

2645. 构造有效字符串的最少插入数

Problem: 2645. 构造有效字符串的最少插入数 文章目录 思路解题方法复杂度Code 思路 决定开头的差距;决定中间的补足决定末尾的差距; 解题方法 开头的位置对于a不做处理,b则做出加一的处理,c则是加二的处理方法;中间的…

Guava:Strings 字符串处理工具

简介 String 或 CharSequence 实例有关的静态实用程序方法。 类方法说明 官方文档:Strings (Guava: Google Core Libraries for Java 27.0.1-jre API) 方法名称方法说明commonPrefix(CharSequence a, CharSequence b) 返回共同的前缀字符串.commonSuffix(CharSe…

vscode文件配置

lanuch.json {"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch",// "program": "输入程序名称,例…

C#基础:通过QQ邮件发送验证码到指定邮箱

一、控制台程序 using System; using System.Net; using System.Net.Mail;public class EmailSender {public void SendEmail(string toAddress, string subject, string body){// 设置发件人邮箱地址以及授权码string fromAddress "xxxxxqq.com";string password …

频率阈图像滤波

介绍 频率阈图像滤波是一种在频域中进行图像处理的方法,它基于图像的频率分布来实现滤波效果。具体步骤如下: 将原始图像转换到频域:使用快速傅里叶变换(FFT)将图像从空间域转换到频域。对频域图像应用频率阈滤波器&a…

CSS3背景样式详解(图像大小,图像位置等)

背景样式 在CSS3中,新增了3个背景属性 属性说明background-size背景大小background-origin背景位置background-clip背景剪切 background-size属性 概念:在CSS3之前,我们是不能用CSS来控制背景图片大小的,背景图片的大小都是由…

深入理解 Flink(三)Flink 内核基础设施源码级原理详解

Hadoop 生态各大常见组件的 RPC 技术实现 Flink RPC 网络通信框架 Akka 详解 1、ActorSystem 是管理 Actor 生命周期的组件,Actor 是负责进行通信的组件。 2、每个 Actor 都有一个 MailBox,别的 Actor 发送给它的消息都首先储存在 MailBox 中&#xff0c…

Tomcat-快速使用

关于Tomcat的概念及来由在Tomcat基本知识中进行了介绍,下面我们直接上手快速使用起来。 一、快速使用 (1)tomcat下载 (2)解压缩 (3)启动程序 (4)访问tomcat&#xff1a…

Serverless 开拓无服务器时代:云计算的新趋势(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

二级C语言备考2

一、单选 共40题 (共计40分) 第1题 (1.0分) 题号:6951 难度:较易 第1章 以下叙述中错误的是 A:算法正确的程序可以有零个输入 B:算法正确的程序最终一定会结束 C:算法正确的程序可以有零个输出 D:算…

精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型

精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型。 机器学习 人工智能的核心,是使计算机具有智能的根本途径。机器学习专注于算法,允许机器学习而不需要编程,并在暴露于新…

OpenHarmony之编译构建使用指导

目录结构 /build # 编译构建主目录├── __pycache__ ├── build_scripts/ # 编译相关的python脚本 ├── common/ ├── config/ # 编译相关的配置项 ├─…

FlinkAPI开发之窗口(Window)

案例用到的测试数据请参考文章: Flink自定义Source模拟数据流 原文链接:https://blog.csdn.net/m0_52606060/article/details/135436048 窗口的概念 Flink是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。…

10个提高 Python Web 开发效率的VS Code插件

VS Code具有灵活、便捷和丰富的可用插件库,是Web开发人员中非常受欢迎的代码编辑器。 本文介绍10个VS Code插件,它们可以提高你作为Web开发人员的工作效率。 1. Live Preview Live Preview插件支持在VS Code的小型浏览器中查看网站。因此,无…

数据库基础5

基本连接语句 教程 https://www.bilibili.com/video/BV1pw41147jm 导jar包 https://blog.csdn.net/qq_40893824/article/details/129118784 import java.sql.*;public class test {public static void main(String[] args) throws SQLException {//用户信息和urlString url …

【LeetCode2696】删除子串后的字符串最小长度

1、题目描述 【题目链接】 标签:栈 、字符串、模拟 难度:简单 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 “AB” 或 “CD” 子字符串。 通过执行操作…