sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类

b5dd0e47416747eb1d688e5ccc281173.gif

何为数据挖掘,顾名思义就是从大量数据中挖掘或抽取出知识。在实际中,进行数据挖掘的数据不仅仅有数值型数据,还有图片型数据,文本型数据等。而所谓文本挖掘,就是从大量文本数据中,提取出对信息使用者有价值的信息。文本挖掘主要的研究领域有:文本结构分析,文本分类,文本聚类,文本关联分析等。今天,小编用一个例子为大家讲解使用支持向量机SVM进行短文本分类。

对于支持向量机,前面已有小伙伴对它进行详细介绍,若想了解具体情况,可查看历史文章:python机器学习——支持向量机(入门理解)

数据说明:本次用来训练及测试的分类数据有两类,分别是“体育”类及“文学出版”类,“体育”类数据由899个短文本组成,“文学出版”类数据由797个短文本组成。

先来看看利用SVM文本分类的流程吧!

数据预处理---->数据向量化---->利用Sklearn-learn进行SVM分类

一、数据预处理

对于文本挖掘,数据预处理的过程必不可少同时也至关重要。在数据预处理过程中,主要是进行中文分词及去除停用词。

(一)中文分词

分词就是将连续的字序列按照一定的规范重新组合成词序列的过程,该过程主要为第二步数据向量化特征选择做准备。Jieba分词是目前国内使用人数最多的中文分词工具,且支持三种分词模式,下面对其三种分词模式的使用方法进行简单介绍。

ff910d11bbe20e969cd27d2c6a0a76f1.png

(二)去除停用词

由于中国人的说话习惯,在中文语句中会有许多的语气用词“啊,呀,呢”及一些无特殊含义的词“的,这儿,一些”等,这些词没有实际意义确占比较大,一方面增大了计算量,另一方面减少了有意义词的权重。去除停用词采取的方法通常是,建立一个专门的停用词库,然后调用词库去掉无意义词汇,网上有许多停用词词库,这儿就不具体介绍了。

二、数据向量化

数据向量化是连接文本型数据与计算机的桥梁,可以将文本型数据转化为计算机可读的数值型数据。目前,较为常见的数据向量化方法是使用词向量模型。

词向量(Word embedding),又叫Word嵌入是自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,它是通过“浅层双层的神经网络”对大量文本进行训练,从而将每一个词对应一个向量,建立起词与词之间的关系。这儿对于其训练过程不做过多赘述,直接看如何使用吧!

3d73de9c351ede3504a259dcef441436.png 

三、利用Scikit-learn进行SVM分类

Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。当我们面临机器学习问题时,便可根据下图来选择相应的方法。

eed200b964c844c5fd8063e35141ff87.png

Scikit-learn中的SVM算法库分为两类,一类是分类的算法库,包括SVC, NuSVC和LinearSVC 3个类;另一类是回归算法库,包括SVR, NuSVR和LinearSVR 3个类。相关的类都包含在sklearn.svm模块之中。下面就开始使用Scikit-learn进行SVM短文本分类啦!

在该过程有如下几个步骤:

(一)分类数据贴标签

分别对两类数据进行数据预处理及数据向量化后,每一个短文本都由一个向量表示。接着按照分类将“体育”类文本贴上标签“1”,“文学出版”类文本贴上标签“0”。

(二)合并分类数据并拆分训练集,测试集

将两类数据及对应的数据标签对应合并,接下来使用“sklearn”模块中“train_test_split”包对数据进行切割,随机选择30%的数据作为测试集,剩余数据作为训练集。

(三)利用SVM模型进行训练并测试

SVM模型有许多核函数,使用不同核函数,其效果也不尽相同,在这里使用三个不同的核函数做对比,看看针对本案例那个核函数的预测效果更佳。在该过程使用了“sklearn”模块中“classification_report”和“accuracy_score”包获得预测的准确度,精确度,召回率,F1值。

Accuracy:(准确度),它是预测正确的正例和负例数据占全部数据的比例。

A=(TP+TN)/(TP+TN+FP+FN)

precision:(精确度),它是预测正确的正例数据占预测为正例数据的比例。

P=TP/(TP+FP)

Recall:(召回率),它是预测为正例的数据占实际为正例数据的比例。

R=TP/(TP+FN)

f1-score:(F1),它是精确度和召回率的调和平均值,c4b49432333644534ae21c5837a101e0.png

1.使用线性核函数的预测结果

361786bf3e1887a58dfae0ebb66ce168.png      Accuracy: 0.8646365422396856

2.使用多项式核函数的预测结果

d0df3c005a211d6d06d6137873227321.png 

Accuracy: 0.8567779960707269

3.使用径向基核函数的预测结果

12899532aef32e6b10263036126c8262.png

Accuracy: 0.8292730844793713

通过对比,可看出对于本案例,使用线性核函数的分类效果更好。通过这个例子,大家是否掌握了进行文本分类的技巧呢,实际上在文本挖掘中,它的前期处理过程大致相同,需要改变只有分类模型的使用哦!

以下,是代码和分类数据的百度网盘链接:

https://pan.baidu.com/s/1MO8cXoHvG4ylhhOv57zu5w 

提取码:qf2w

文字来源|陈丹

图片来源|陈丹

编辑|宋欣蕊

审核|叶紫薇

欢迎大家转发,但大家记得标明原创出处哟~如果喜欢记得点【在看】呀~,扫描关注我们的公众号↓

185d81d497fd2340def34b29bf52f7a4.png

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

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

相关文章

微信企业号已停止提供企业消息会话服务器,企业微信注册时显示会话服务已经被安装了怎么解决 解决攻略教程大全...

2016年4月18日,腾讯正式发布全平台企业办公工具“企业微信”,并通过腾讯应用宝独家首发安卓版。“企业微信”的推出将为企业员工提供最基础和最实用的办公服务,并加入贴合办公场景的特色功能、轻OA工具,合理化区分工作与生活&…

ftp服务器文件名存在,有什么办法根据已知文件名来检测FTP服务器上是否存在该文件? 急...

蛊毒传说我不敢说_________________using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.IO;namespace test{ class Program { static void Main(string[] args) { string path "ftp://192.168.1.200/ser…

A* 寻路 +寻路演示(js)

效果 每个单元格内文字: (F) (Price) (G) (H) 原理 原理是参考另一篇csdn博文,不过忘记收藏找不到了 初始化 open_set和 close_set。将 起点 加入open_set中,并设置优先级为0(优先级最高)。如果open_set不为空&…

pc端无法ping android模拟器_【内附下载方式】PC端最新宝可梦 Lets Go去皮去伊模拟器+最新dlc+mod...

游戏名称:精灵宝可梦 Let‘s go 皮卡丘 伊布游戏总大小:9GB游戏简介:《精灵宝可梦 Lets Go 皮卡丘/伊布》是宝可梦系列全新作品,也是该系列首次登上Switch主机,为后续作品的开发奠定了基础。本作可以视为是对第一世代红…

自定义处理网页选区字符并实时显示(js)

概述 浏览网页的时候,可能需要去数一下某段文字的字符数量,或者需要对选中内容做些实时翻译,比如进制的转化,可以使用脚本做个简单的实时翻译。 效果 选中内容,并且鼠标移动时会在左下角显示翻译后的结果。示例为翻…

伽罗瓦域(256) 生成指定纠错码字的生成多项式 (js)

效果 使用 复制code 保存为html 涉及内容 1、有限域、伽罗瓦域(256) 2、对数反对数 3、XOR 异或 两个因式各项相乘,当系数项相乘时,指数相加并mod(255) 合并同类项时,相同项的系数合并为 XOR操作; 伽罗瓦域依旧有些犯懵&…

实现二维码-完整三种编码流程加代码解析(javascript)

效果 输入内容:XXXwedewed生日//&sss乐❤XXXwedewed生日//&sss乐❤ 完整的演示效果为,输入内容后会将解码绘制的每一步都展示(有点长就不全截图了,可以直接移至最后复制代码到本地运行): 原理…

three.js 拖动场景中物体(原生|拖拽控制器)

非控制器版 拖动场景中的物体实际上是在一个平行于窗口的平面中进行拖动&#xff0c;确定这个平面并确定鼠标在该平面中的位置变化&#xff0c;就将问题转换成简单的2d移动物体了 <!DOCTYPE html> <html> <head><meta charsetutf-8><title>015-…

element-ui 可复选树型表格

效果 思路 自定义模板当点击某个行复选框时&#xff0c;其所有后代复选框都要同步状态&#xff0c;且其直系父辈状态需要根据所点击复选框的状态来修正点击全选复选框时&#xff0c;批量同步所有行内复选框状态 代码 非封装组件&#xff0c;按需自行改写 确保引入element-ui…

树形可拖拽排序配置组件

效果 使用场景 vue2下自定义表格表头配置: 列排序&#xff0c;显示/隐藏等。确保表头以配置项的形式加载&#xff0c;这样表格才能对修改后的配置作响应 思路 1、表格使用render函数加载(如有疑问可私信)&#xff0c;通过类似如下的columns配置表头 columns: [{ label: 姓名…

自适应浮动表单填充布局脚本

效果 1、适合搜素表单布局&#xff0c;查询重置等功能块始终位于最后一行的最后一列 2、适合普通多行两端对齐&#xff0c;未填充满的行左对齐 思路 此脚本目的为实现整齐风格的表单布局&#xff0c;为了达到整齐的效果&#xff0c;每个表单元素或者块都要设置一致的 宽度…

矩阵字符串配置任意合并表格布局

效果 核心 布局配置矩阵&#xff08;以下为多个模式),可以使用|或\n表示矩阵行 const gridArr [1,2,a,b 3,4,a,b 5,6,a,b ,1,2 3,4 5,6 ,1,2,3,4 3,4]任意横向或者纵向相同的字符表示一个合并块 使用 <CalcTable grid"1,2,a,b|3,4,a,b|5,6,a,b" ><span…

bsc是指什么_为什么KPI令人厌恶?中小企业不要乱用KPI!

私信小编“绩效”两字&#xff0c;免费发送60分钟薪酬绩效管理内部培训视频。导读现在很多的企业都会对员工做一些绩效考核&#xff0c;大多数还是采用KPI的方式。但是员工对KPI的考核越来越反感&#xff0c;甚至出现抵触的情况。为什么会出现这种想象呢&#xff1f;其实很简单…

解决微信小程序 [Component] slot ““ is not found.

解决方式 当使用自定义组件或者slot标签作为组件A的插槽内容时&#xff0c;在组件A中必须定义一个默认插槽&#xff0c;对普通view等标签无限制。且因为wx:if为false的插槽等同没有定义 场景复现&#xff08;仅以自己遇到情况为例&#xff09; 1、调试基础库2.19.4 2、使用w…

列表排序应用FLIP动画(vue)

效果 原理详解 链接 1.beforeUpdate 获取first 变化前位置 (以id建立map映射) 2.updated 获取变化后位置 last 3.禁用transition并transform元素回初始位置 4.异步恢复transition 并取消 transform 代码 <template><div ref"container"><div style&…

面试项目亮点_码农:面试被问到自己项目亮点时,感觉自己的回答虚伪的不行!...

据我个人观察&#xff0c;大多数程序员都对自己现有的项目有吐糟的习惯&#xff0c;比如吐糟代码逻辑混乱&#xff0c;代码规范问题&#xff0c;代码可读性差&#xff0c;代码没有注释&#xff0c;没有文档&#xff0c;代码极度冗余等等&#xff0c;总之满眼看到的都是一些缺陷…

微信小程序 仿 SwipeCell 的滑动单元格 SwipeBox

效果 代码 页面 调用Page <block wx:for"{{4}}" wx:key"{{item}}"><view style"text-align:center;padding:20px"><swipe-box><view slot"left" style"">左侧内容</view><view class&q…

u852日期限制解决补丁_《赛博朋克》1.06补丁出炉:进一步提升主机版本稳定性...

《赛博朋克2077》虽说是出师不利&#xff0c;但是开发商CDPR承诺自己会持续优化这款“尚待打磨”的作品&#xff0c;这种态度还是要稍微肯定一下的。我们看到之前CDPR就已经推送了1.05补丁&#xff0c;修复了大量的BUG以及问题&#xff0c;并且以游戏主机的BUG修复为重点&#…

微信小程序原生横向步骤条steps

效果 代码 调用 <rug-step options"{{steps}}" active"{{stepActive}}"></rug-step>steps: [{ label: 步骤1 },{ label: 步骤步骤步骤步骤2 },{ label: 步骤3 },{ label: 步骤步骤步骤步骤步骤4 },{ label: 步骤4 },{ label: 步骤4 },{ label…