基于支持向量机的新闻分类
利用支持向量机模型对2万条新闻进行分类
一、文本预处理
1、新闻用txt文件装,每一行一个新闻,为了减轻矩阵维数,只选择包括标题在内的与新闻内容最相关的前100个字。
2、对新闻进行jieba分词,分词后每一行是一条新闻的词语,格式是一个List
二、求文本的TF-IDF矩阵
直接上代码和注释,关于矩阵原理以及应用可翻看:
点这里
# coding:utf-8
from sklearn.feature_extraction.text import CountVectorizer # 计算TF的模块
from sklearn.feature_extraction.text import TfidfTransformer # 计算TF-IDF矩阵的模块
from sklearn.svm import SVC # 支持向量机模块
import timestart=time.time() # 计时开始# 以下是读取 训练、测试集文本、对应的分类标签
train_txt=open('train_contents.txt','r',encoding='utf-8').read().split('\n')
test_txt=open('test_contents.txt','r',encoding='utf-8').read().split('\n')
all_txt=train_txt+test_txttrain_labels=open('train_labels.txt','r',encoding='utf-8').read().split('\n')
test_labels=open('test_labels.txt','r',encoding='utf-8').read().split('\n')
count_vo=CountVectorizer() # 初始化这个对象
count_alls=count_vo.fit_transform(all_txt) # 构造一个全部文本的TF对象
count_v1=CountVectorizer(vocabulary=count_vo.vocabulary_)
count_train=count_v1.fit_transform(train_txt) # 求得训练集的TF矩阵
count_v2=CountVectorizer(vocabulary=count_vo.vocabulary_)
test_train=count_v2.fit_transform(test_txt) # 求得测试集TF矩阵
# 以下是根据TF矩阵 求TF-IDF矩阵
tf_idf=TfidfTransformer()
train_data=tf_idf.fit(count_train).transform(count_train)
test_data=tf_idf.fit(test_train).transform(test_train)
三、训练模型和预测
# 训练模型
svclf=SVC(kernel='linear') # 初始化SVM支持向量机模型
svclf.fit(train_data,train_labels) # 对训练集进行训练
predict=svclf.predict(test_data) # 对测试集进行预测# 求训分类准确率
num=0
for i in range(len(predict)):if predict[i]==test_labels[i]:num+=1
rat=float(num)/len(predict)
end=time.time()
print('用时:',(end-start)/60,'mins')
print(str(rat))
四、结果展示
正确率为0.844左右,还算不错,当然也可以进行优化,下次再写一篇关于专门的优化解决办法。
要文件的朋友可以私信我
私信的朋友比较多,我把数据放到云盘上了
https://pan.baidu.com/s/1gltcEoA2teXmUznggG0lmw
提取码:
d6xf
基于支持向量机的新闻分类相关推荐
- Pytorch实战——基于RNN的新闻分类
目录 一.项目介绍 二.基于RNN的新闻分类 Step1 加载数据集 Step2 分词和构建词汇表 Step3 构建数据加载器 dataloader Step4 定义神经网络模型 Step5 定义模型 ...
- 基于支持向量机的文本分类算法研究(二) —— 支持向量核函数介绍(stitp项目)
2 支持向量机核函数 支持向量机的理论基础(凸二次规划)决定了它最终求得的为全局最优值而不是局部最优值,也保证了它对未知样本的良好泛化能力.支持向量机是建立在统计学习理论基础之上的新一代机器学习算法, ...
- 基于支持向量机的文本分类算法研究(三)—— 核函数文本分类性能评价指标(stitp项目)
3 核函数评价指标 核函数评价指标,即准确率(P).召回率®和 F1 值,通过这几个数值,可以直观的反映核函数的性能,也使得支持向量机核函数评价科学化.准确化.本次实验函数从特征值 1000循环五十次 ...
- 基于支持向量机的文本分类算法研究(一) —— 支持向量机及核函数背景(stitp项目)
1 前言 上世纪90年代,Vapnik率先提出了用于分类的支持向量机方法(也称支持向量分类算法),接下的几年中,又提出了用于回归的支持向量机方法(也称支持向量回归算法).支持向量机(SVM)是在统计学 ...
- 【项目实战课】NLP入门第1课,人人免费可学,基于TextCNN的新闻文本分类实战...
欢迎大家来到我们的项目实战课,本期内容是<基于TextCNN的新闻文本分类实战>. 所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲解,可以 ...
- 自然语言处理(二)基于CNN的新闻文本分类
自然语言处理(二) 1.Task1 数据集探索 1.1下载数据集 1.2数据集的描述 1.3 数据的预处理 1.4 CNN卷积神经网络 1.5 训练与验证 2.IMDB 2.1下载 IMDB 数据集 ...
- 基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类)
基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类) 一.数据集说明 训练样本来自于github上的EasyPR的c++版本,包含一万三千多张数字及大写字母的图片以及三千多张中 ...
- 基于机器学习的新闻文本分类
Task1-数据探索分析 数据存储 由于用pandas一次性读取20w条数据显示memoryerror,内存不够,所以想到把数据存到数据库中,随用随取比较简便.把训练集20w条数据存到了mongodb ...
- 基于PaddleNLP的真假新闻分类(二)Skep模型
一.基于PaddleNLP的美国大选的新闻真假分类(二)基于SKEP模型的分类任务 0.解释 本来这个都烂尾了,看到有人问二在哪儿?只好说还没公开,自己挖的坑,含泪也要填.下次标题再也不屑一.二了,真 ...
- 【Pytorch基础教程36】基于Ernie预训练模型和Bert的新闻分类
文章目录 一.新闻分类任务 1.1 中文数据集 1.2 数据特点 1.3 跑起代码 二. 预训练语言模型ERNIE 2.1 ERNIE模型结构 2.2 bert模型结构 三.项目代码 1. bert模 ...
最新文章
- python【力扣LeetCode算法题库】300 最长上升子序列(动态规划)
- 信息技术专业常用协议指什么?
- 在Leaflet地图上集成Echarts
- Thymeleaf引入公共片段方式
- C++:关于“error C2374: 'i' : redefinition; multiple initialization”
- shell 循环 read line
- MySQL 数据还原
- 【java】Java中TypeReference用法说明
- SDIO接口WiFi驱动浅析
- EndNote常见问题:更改DOI号为超链接/用URL代替DOI号等
- 中国推出人民币外汇货币掉期交易 规避汇率风险
- 实验:配置Trunk
- 基于TensorFlow的开源JS库的网页前端人物动作捕捉的实现
- 腾讯的内外社区实践及未来开源布局
- 深入理解Android相机体系结构之二
- Docker监控远程服务器
- WebView实现改变选中区域颜色以及添加下划线
- react 实现图片上传功能
- CF 617E 莫队
- flutter_downloader文件下载插件
热门文章
- 阵列卡直通模式和raid模式_详解磁盘阵列RAID原理、种类及性能优缺点
- HDU - 2586 - How far away ? (最短路)
- 时间序列分析 23 DTW (时序相似度度量算法) 上
- Shadow插件化系列(一)简单详解
- 两轮电动车不需要高端
- 第十人理论 - 大前研一 - 专业主义
- layui的layer弹出层和form表单
- 计算机sci审稿意见,【小木虫SCI秘籍】感悟之二——一个审稿意见的回复 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
- 开启迅盘:ReadyBoost和ReadyDrive的开启方法
- 实际使用Windows 7中的Readyboost功能