使用线性SVM实现对垃圾邮件分类
本文内容
- 代码地址
- 使用线性SVM实现对垃圾邮件分类
- (1)问题描述:
- (2)实现过程:
- 实验小结:
代码地址
代码地址
使用线性SVM实现对垃圾邮件分类
(1)问题描述:
编程实现一个垃圾邮件SVM线性分类器,分别在训练集和测试集上计算准确率。其中训练数据文件:task3_train.mat,要求导入数据时输出样本数和特征维度。测试数据文件:task3_test.mat,要求导入数据时输出样本数和特征维度,测试数据标签未给出。(程序运行时间10mins左右)
(2)实现过程:
分析数据:
利用给出loadData(),读取数据,并输出维度:
X, y = svmF.loadData('task3_train.mat') shape = np.shape(X) print('训练集样本数:%d,特征维度:%d' % (shape[0], shape[1]))''' output: 训练集样本数:4000,特征维度:1899 '''
观察输入如下图所示:
可知,这里是已经完成了邮件特征变量的提取的数据。
完成了邮件特征变量的提取之后, 可以利用4000个训练样本和1000个测试样本训练SVM算法, 每个原始的邮件将会被转化为一个 x∈R1900x \in R^{1900}x∈R1900 的向量 (词汇表中有1899个词汇, x0=1x_{0}=1x0=1 会 被添加到向量中)。
训练模型:
载入数据集之后, 用变量 y=1y=1y=1 表示 垃圾邮件, 而 y=0y=0y=0 表示非垃圾邮件可就可以训练SVM算法了。
这里我们使用sklearn的svm,具体实现代码如下所示:
c = 0.1 clf = svm.SVC(c, kernel='linear') clf.fit(X, y)
在训练集上的精度如下:
p = clf.predict(X) print('Training Accuracy: {}'.format(np.mean(p == y) * 100))
尝试高斯核:
c = 1 sigma = 0.1 clf = svm.SVC(c, kernel='rbf', gamma=np.power(sigma, -2)) clf.fit(X, y)
输出预测结果:
result = clf.predict(X_t) np.savetxt('result.txt', result, fmt='%d', delimiter='\n')
实验小结:
支持向量机的参数选择
C:C:C:对于C,C越大,可以理解为正则化系数越小,会出现lower bias和high variance的问题就是过拟合;C越小,可以理解为lambda越大,会出现high bias和low variance的问题就是欠拟合。sigma:对于高斯函数的sigma,sigma越大,特征变化越平滑,会出现high bias和low variance的问题就是欠拟合;sigma越小,特征变化越陡峭,会出现lower bias和high variance的问题就是过拟合。
核函数选择:
当特征数量相对于训练集数量很大时,使用逻辑回归或者是使用线性核函数的支持向量机;
当特征数量很少,训练集数据量一般,使用高斯核函数的支持向量机;
当特征数量很少,训练集数据很大,可以考虑添加更多特征,然后使用逻辑回归或者是使用线性核函数的支持向量机。
使用线性SVM实现对垃圾邮件分类相关推荐
- 基于Bayes和SVM的垃圾邮件分类实现(改进版)
对本文标题进行分词和提取关键词,本文关键词如下:分类.垃圾邮件分类(spam).Bayes.SVM.改进版(体现在哪里?).本文不对Bayes.SVM原理做过多的摄入和解释,主要是使用这些算法做一个基 ...
- 垃圾邮件分类 python_在python中创建SMS垃圾邮件分类器
垃圾邮件分类 python 介绍 (Introduction) I have always been fascinated with Google's gmail spam detection sys ...
- [CS229学习笔记] 5.判别学习算法与生成学习算法,高斯判别分析,朴素贝叶斯,垃圾邮件分类,拉普拉斯平滑
本文对应的是吴恩达老师的CS229机器学习的第五课.这节课介绍了判别学习算法和生成学习算法,并给出了生成学习算法的一个实例:利用朴素贝叶斯进行垃圾邮件分类. 判别学习(Discriminative L ...
- 朴素贝叶斯(西瓜数据集分类,社区恶意留言分类,垃圾邮件分类,新浪新闻分类),AODE分类器 代码实现
朴素贝叶斯(西瓜数据集分类,社区恶意留言分类,垃圾邮件分类,新浪新闻分类),AODE分类器 代码实现 以下代码为本人学习后,修改或补充后的代码实现,数据集和原代码请参考:https://github. ...
- python训练opencb分类器_垃圾邮件分类.ipynb
{ "cells": [ { "cell_type": "markdown", "metadata": {}, &quo ...
- 【人工智能项目】机器学习中文垃圾邮件分类任务
[人工智能项目]机器学习中文垃圾邮件分类任务 本次采用机器学习模型对中文邮件是否为垃圾邮件进行判别.那么工友们,学起来吧!!! 任务说明 0,商业秘密的秘密性那是维系其商业价值和垄断地位的前提条件之一 ...
- 垃圾邮件分类(trec06c数据集)数据处理-特征提取
目录 目标:我要提取 发件人(From).收件人(To).邮件主题(Subject).邮件正文(zhengwen) 作为邮件特征,然后输入到线性分类模型中进行训练 首先是这四个特征提取的部分 发件人 ...
- 垃圾邮件分类(trec06c数据集)特征分词、特征向量化、模型训练
目录 得到全量数据集 得到采样数据集 模型训练 全部代码: 结果 已完结 接上: 垃圾邮件分类(trec06c数据集)数据处理-特征提取 https://blog.csdn.net/qq_393215 ...
- 文本分类:垃圾邮件分类
https://appliedmachinelearning.blog/2017/01/23/email-spam-filter-python-scikit-learn/ 转自:http://fina ...
最新文章
- HDOJ 1060 Leftmost Digit
- 【6】Zookeeper脚本及API
- DevOps笔记-04:DevOps工具和文化缺一不可
- 中学计算机课的现状和感受,中小学信息技术课程的现状与发展.doc
- Nginx 之一:编译安装nginx 1.8.1 及配置
- abp框架java,【Net】ABP框架学习之正面硬钢
- c语言编写的每个函数都可以进行独立的编译,2017年辽宁师范大学计算机与信息技术学院836C语言程序设计考研冲刺密押题...
- $.ajax注册表单
- ACM - 欧拉函数(内容)
- linux中的信号3——alarm、pause函数
- 小白必须懂的MongoDB的十大总结
- 学习有五个层次和境界
- excel导入的数据中文字段转英文
- 使用Pycharm打包应用程序
- 图形学中常用计算几何总结
- readyState的值的含义
- miRNA与 lncRNA的相互调控作用
- Vue3中watch和watchEffect监听的用法
- 小学三年级计算机画图工具作品,小学三年级美术下册《电脑绘画—模板帮我们作画》教案...
- mc服务器常用指令_我的世界服务器指令大全 史上最全的服务器指令介绍