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,一经查实,立即删除!

相关文章

svg 折线添加新的折点

问题 现有已知折线 有多段,当双击折线的时候,需要将该双击的位置点Q 添加到折线上(排除端点情况),如何去判断Q要添加在折线的哪一段,或者Q分割了折线的哪一段?? 分析 方式1 一开始…

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

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

hashmap 扩容是元素还是数组_曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位?...

如何计算,一对key/value应该放在哪个哈希桶大家都知道,hashmap底层是数组链表(不讨论红黑树的情况),其中,这个数组,我们一般叫做哈希桶,大家如果去看jdk的源码,会发现里面有一些变量&#xff0c…

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)

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

css文本行高是哪个属性_CSS中的line-height行高属性的使用技巧小结

CSS中的line-hight属性是用来控制文本行之间的空隙的。它一般情况下没有单位的设定(如:line-height:1.4;)所以这是一个按字体尺寸的比例来计算。这对印刷版来说是一个很重要的属性。线条过低就会挤在一起,线条过高就会相距甚远,这两种情况都会…

模2运算及模2运算式计算 (js)

概述 学习二维码生成的时候卡在纠错码部分,然后就接触到了伽罗华域,了解到模2运算,恰好前不久刚了解了波兰表达式,就尝试写一个支持模2运算的算式解析计算。 结果 10011*101101.M2Calc() >"1011010" 涉及内容 模…

react配合python_部署React前端和Django后端的3种方法

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。2020年4月7日星期二,马修西格尔类别:Django如果您要用Django REST开发web应用程序后端,并使用React或Vue开发应用程序前端。有很多方法实现。你需要做出…

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

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

python贪心算法求删数问题_贪心算法删数问题

删数问题给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n和k,设计一个算法,找出剩下数字组成的新数最少的删数方案。输入示例: 178543 4输出: 13输入示例&am…

二维码-纠错码生成(js)

概要 本文主要为计算,而非对伽罗瓦域等数学内容的深入解析,在知道消息多项式以及纠错数量的情况下通过程序生成对应的纠错码。详细的二维码生成原理参考一个详细全面的二维码生成解析 效果 数据码: 长度16的示例数据码(正常获取的是示例的…

一步一步学python爬虫_初学Python之爬虫的简单入门

初学Python之爬虫的简单入门一、什么是爬虫?1.简单介绍爬虫爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等。网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据支撑。搜索引擎通过网络…

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

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

可视化排班管理_小白经理的思考日记-可视化看板和走动管理

前言:所谓勤于思,敏于行,实践能提升思考的深度,反思也能更好的指导实践。基于这样的认知,我将过往所学所思所行进行了专题整理,对内化知识和技能结构颇有益。又承蒙付老师抬爱和鼓励,推荐我看《…

headerIP php_PHP curl伪造IP地址和header信息代码实例

原标题:PHP curl伪造IP地址和header信息代码实例curl虽然功能强大,但是只能伪造$_SERVER["HTTP_X_FORWARDED_FOR"],对于大多数IP地址检测程序来说,$_SERVER["REMOTE_ADDR"]很难被伪造:首先是clien…

c++ 使用nacos_为什么选用Nacos?虎牙直播微服务改造实践

原标题:为什么选用Nacos?虎牙直播微服务改造实践“相比文字和图片,直播提供了人与人之间更丰富的沟通形式,其对平台稳定性的考验很大,那么倡导“以技术驱动娱乐”的虎牙直播如何在技术上赋能娱乐?本文将分为…

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

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