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

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

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

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

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

python 复制代码
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
from sklearn import svm

X = 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。第一行是字段名,后面的行是数据记录。每一行的字段值使用逗号进行分隔:

python 复制代码
text,label
这个电影太好看了,1
这个电影真是太差了,0
我喜欢这个电视剧,1
这个电视剧太无聊了,0
python 复制代码
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'].values


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是一个数组,包含了预测结果

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

复制代码
这个电影太好看了,1
这个电影真是太差了,0
我喜欢这个电视剧,1
这个电视剧太无聊了,0
python 复制代码
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实现了这一步骤。

程序输出结果如下:

python 复制代码
[1]
相关推荐
万邦科技Lafite31 分钟前
京东按图搜索京东商品(拍立淘) API (.jd.item_search_img)快速抓取数据
开发语言·前端·数据库·python·电商开放平台·京东开放平台
Giser探索家32 分钟前
无人机桥梁巡检:以“空天地”智慧之力守护交通生命线
大数据·人工智能·算法·安全·架构·无人机
丁浩6661 小时前
Python机器学习---6.集成学习与随机森林
python·随机森林·机器学习
charlie1145141912 小时前
现代 Python 学习笔记:Statements & Syntax
笔记·python·学习·教程·基础·现代python·python3.13
救救孩子把3 小时前
30-机器学习与大模型开发数学教程-3-4 矩阵的逆与伪逆
线性代数·机器学习·矩阵
budingxiaomoli4 小时前
算法--滑动窗口(二)
算法
Coovally AI模型快速验证4 小时前
OmniNWM:突破自动驾驶世界模型三大瓶颈,全景多模态仿真新标杆(附代码地址)
人工智能·深度学习·机器学习·计算机视觉·自动驾驶·transformer
青春不败 177-3266-05204 小时前
GPT、DeepSeek等大语言模型应用
人工智能·gpt·深度学习·机器学习·语言模型·科研绘图
ID_180079054734 小时前
淘宝实时拍立淘按图搜索数据|商品详情|数据分析提取教程
算法·数据分析·图搜索算法
l1t4 小时前
Lua与LuaJIT的安装与使用
算法·junit·单元测试·lua·luajit