sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类
何为数据挖掘,顾名思义就是从大量数据中挖掘或抽取出知识。在实际中,进行数据挖掘的数据不仅仅有数值型数据,还有图片型数据,文本型数据等。而所谓文本挖掘,就是从大量文本数据中,提取出对信息使用者有价值的信息。文本挖掘主要的研究领域有:文本结构分析,文本分类,文本聚类,文本关联分析等。今天,小编用一个例子为大家讲解使用支持向量机SVM进行短文本分类。
对于支持向量机,前面已有小伙伴对它进行详细介绍,若想了解具体情况,可查看历史文章:python机器学习——支持向量机(入门理解)
数据说明:本次用来训练及测试的分类数据有两类,分别是“体育”类及“文学出版”类,“体育”类数据由899个短文本组成,“文学出版”类数据由797个短文本组成。
先来看看利用SVM文本分类的流程吧!
数据预处理---->数据向量化---->利用Sklearn-learn进行SVM分类
一、数据预处理
对于文本挖掘,数据预处理的过程必不可少同时也至关重要。在数据预处理过程中,主要是进行中文分词及去除停用词。
(一)中文分词
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程,该过程主要为第二步数据向量化特征选择做准备。Jieba分词是目前国内使用人数最多的中文分词工具,且支持三种分词模式,下面对其三种分词模式的使用方法进行简单介绍。
(二)去除停用词
由于中国人的说话习惯,在中文语句中会有许多的语气用词“啊,呀,呢”及一些无特殊含义的词“的,这儿,一些”等,这些词没有实际意义确占比较大,一方面增大了计算量,另一方面减少了有意义词的权重。去除停用词采取的方法通常是,建立一个专门的停用词库,然后调用词库去掉无意义词汇,网上有许多停用词词库,这儿就不具体介绍了。
二、数据向量化
数据向量化是连接文本型数据与计算机的桥梁,可以将文本型数据转化为计算机可读的数值型数据。目前,较为常见的数据向量化方法是使用词向量模型。
词向量(Word embedding),又叫Word嵌入是自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,它是通过“浅层双层的神经网络”对大量文本进行训练,从而将每一个词对应一个向量,建立起词与词之间的关系。这儿对于其训练过程不做过多赘述,直接看如何使用吧!
三、利用Scikit-learn进行SVM分类
Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。当我们面临机器学习问题时,便可根据下图来选择相应的方法。
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),它是精确度和召回率的调和平均值,
1.使用线性核函数的预测结果
Accuracy: 0.8646365422396856
2.使用多项式核函数的预测结果
Accuracy: 0.8567779960707269
3.使用径向基核函数的预测结果
Accuracy: 0.8292730844793713
通过对比,可看出对于本案例,使用线性核函数的分类效果更好。通过这个例子,大家是否掌握了进行文本分类的技巧呢,实际上在文本挖掘中,它的前期处理过程大致相同,需要改变只有分类模型的使用哦!
以下,是代码和分类数据的百度网盘链接:
https://pan.baidu.com/s/1MO8cXoHvG4ylhhOv57zu5w
提取码:qf2w
文字来源|陈丹
图片来源|陈丹
编辑|宋欣蕊
审核|叶紫薇
欢迎大家转发,但大家记得标明原创出处哟~如果喜欢记得点【在看】呀~,扫描关注我们的公众号↓
sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类相关推荐
- sklearn svm如何选择核函数_机器学习之支持向量机多种核模型对比
机器学习 xueyifeiyun1989zx,公众号:围着围巾的小黑机器学习之监督学习实战 前文我们提到机器学习中的监督学习,其中有一个模型是我们提到的但是没有训练测试的,叫做支持向量机(简称SVM) ...
- sklearn svm如何选择核函数_使用python+sklearn实现成对度量、相关性和核函数
sklearn.metrics.pairwise子模块实现了评估样本集的成对距离或相关性.此模块包含距离度量和内核.这里对这两个问题作了简要的总结.距离度量是函数d(a, b),如果对象a和b被认为比 ...
- python svm核函数_机器学习算法实践-SVM核函数和软间隔
前言 上文中简单总结了对于线性可分数据的SVM的算法原理,本文对于非线性可分以及有噪声存在的时候我们需要对基本SVM算法的改进进行下总结其中包括: 核函数在SVM算法中的使用 引入松弛变量和惩罚函数的 ...
- lda主题模型python实现篇_基于LDA主题模型的短文本分类
VSM(向量空间模型)是信息检索领域最为经典的分析模型之一,采用VSM对短文本进行建模,即将每一篇短文本表示为向量的形式,用TF-TDF表示向量的值.给出一些符号定义:短文本集SD= {sd1,sd2 ...
- SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具
公众号关注 "视学算法" 设为 "星标",DLCV消息即可送达! 贾浩楠 发自 凹非寺 转自 | 量子位 SVM?老分类算法了,轻松拿下. 然而,每一次老板让你 ...
- SVM原理详细图文教程来了!一行代码自动选择核函数
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 转载自:量子位 SVM?老分类算法了,轻松拿下. 然而,每一次老板让你讲解SVM,或每一次面试被 ...
- svm常用核函数及选择核函数的方法
SVM核函数的选择对于其性能的表现有至关重要的作用,尤其是针对那些线性不可分的数据,因此核函数的选择在SVM算法中就显得至关重要.对于核技巧我们知道,其目的是希望通过将输入空间内线性不可分的数据映射到 ...
- 百题突击12:1,SVM算法的优缺点 2,SVM的超参数C如何调节 3,SVM的核函数如何选择 4,简述SVM硬间隔推导过程 5,简述SVM软间隔推导过程
1,SVM算法的优缺点 优点 可以解决高维问题,即大型特征空间: 解决小样本下机器学习问题: 能够处理非线性特征的相互作用: 无局部极小值问题:(相对于神经网络等算法) 无需依赖整个数据: 泛化能力比 ...
- 使用SVM分类如何选择核函数类型
先粘贴一下,以后有经验了再自己总结. 如果如果特征数远远大于样本数的情况下,使用线性核就可以了. 如果特征数和样本数都很大,例如文档分类,一般使用线性核, LIBLINEAR比LIBSVM速度要快很多 ...
最新文章
- linux中的ftp是什么意思,什么是linux的ftp
- oracle快速了解法,【oracle】rownum的快速了解
- 励志!送女儿去厦大读研后,爸爸回家就考了厦大的博士,现在是女儿的“学弟”...
- Java 文件目录显示
- java dubbo jsf_cubelink
- 什么是数字孪生?终于有人讲明白了
- hibernate框架(二)核心配置API
- 解决Oracle11g密码180天过期,账号锁住的问题
- 404 错误页面:重装上阵
- ROS防火墙规则收集
- Cesium-相机系统与视域移动
- 分治回溯--Nqueen
- java.io.IOException: There appears to be a gap in the edit log. We expected txid ***, but got txid
- 【电脑办公软件】万彩办公大师教程丨TextDiff文本比较工具
- 一文告诉你车载测试的秘密
- (三)SpringCloud实战之openfeign服务调用
- 毕设-基于JavaWeb毕业论文选题系统
- Linux 下载sublime
- bzoj4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III(bfs)
- 线性代数——向量的内积、范数、正交,向量组的线性相关性和向量空间
热门文章
- Java 内部类 和 匿名内部类
- Python 中 PyQt5 + pycharm 调用 Qt Designer,将.ui文件转换成 .py 文件
- java运行命令解释
- Tomcat学习笔记(一)
- 华为鸿蒙显示安卓,被谷歌除名,华为6月2日发布鸿蒙反击,开机界面已流出!...
- [记录] --- linux安装redis
- 检测电脑硬件的软件_【软件分享】PowerDVD | PotPlayer | AIDA64
- subscribe error不执行_你不知道的redis:第三方jar无封装命令我们该怎么执行?
- 电脑机器人_【头条】厚积薄发!卡达电脑智能机器人之纸箱码垛机赋能智能工厂...
- mysql怎么获取系统_MySQL获取系统性能和状态代码