2017年第六届数学建模国际赛小美赛B题电子邮件中的笔迹分析解题全过程文档及程序
2017年第六届数学建模国际赛小美赛
B题 电子邮件中的笔迹分析
原题再现:
笔迹分析是一种非常特殊的调查形式,用于将人们与书面证据联系起来。在法庭或刑事调查中,通常要求笔迹鉴定人确认笔迹样本是否来自特定的人。由于许多语言证据出现在电子邮件中,从广义上讲,笔迹分析还包括如何根据电子邮件的语言特征识别作者的问题。
作者归属是语言学家开始使用语言风格的可识别特征(从词频到首选句法结构)来识别有争议文本的作者的过程。电子邮件内容短小,作者语言风格明显。请构造一个有效的模型,通过捕获电子邮件的语言特征来识别作者。您可以使用安然电子邮件数据集来培训和测试您的模型。
安然电子邮件数据集链接:http://bailando.sims.berkeley.edu/enron_email.html
整体求解过程概述(摘要)
本文开发了一个工具,可以用来识别这类电子邮件的作者。作者的风格可以通过测量文本中的各种茎秆特征来简化为一种模式。电子邮件还包含可测量的宏结构特征。这些特征可与支持向量机(SVM)学习算法一起使用,以分类或将电子邮件的作者身份归属给作者,提供适当的消息样本以供比较。
首先,第3章讨论了实验过程的计划和范围,该实验过程用于确定分析电子邮件的作者特征和识别电子邮件的作者身份是否可行。概述了需要评估的特征列表,并说明了为什么要使用支持向量机(SVM)算法进行这项工作。特征集包括但不限于:基于文档的特征、基于单词的特征、虚词比率、字长频率分布、搭配频率、基于字符的特征和字母2-gram。
接下来,第4章详细介绍了为对电子邮件作者进行系统分类而进行的实验,并报告了实验结果。这是通过首先进行一系列实验来完成的,这些实验旨在揭示纯文本块(不是电子邮件)的成功SVM作者属性的基线值,从而设置特征集、文本大小和消息数量的约束。这些基线实验为该项目的核心——识别电子邮件文本中包含的有用特性的任务——设置了框架。本章报告的实验列表见表12(第25页)。第38页报告了这些结果,证实了迄今使用的方法可作为进一步研究电子邮件数据的基础。
最后,第5章讨论了电子邮件的属性和分析。第5.1节讨论了对电子邮件数据进行的初步实验。电子邮件数据用于本章中讨论的实验,因此可以首次测试电子邮件特定功能的影响。第5.2节概述了如何改进结果。第5.3节确定了电子邮件中讨论主题的影响。本研究的目的是使用加权的宏平均F1度量,在大约85%的水平上实现电子邮件数据的正确分类。本章报告的结果表明,在增加了电子邮件的结构特征之后,这一目标就实现了。本章报告的实验列表见表22(第39页)。
最后一章对本文的主要结论进行了总结。这也为今后的工作提出了一些可能的扩展。
模型假设:
•我们已经考虑的因素发挥着至关重要的作用。
•我们收集的数据是准确的。
•人们的写作习惯没有改变。
问题分析:
问题背景:
许多公司和机构已经开始依赖因特网来处理业务,随着个人使用因特网,特别是自万维网建立以来,电子邮件流量显著增加。Lyman和Varian(2000年)估计,2000年将发送5 000亿至6 000亿封电子邮件,进一步估计到2003年,每年发送的电子邮件将超过2万亿封。在GVU’s1第8次WWW用户调查中(Pitkow等人,1997年),84%的受访者表示电子邮件是不必要的。
随着电子邮件流量的增加,出于不正当的原因,电子邮件的使用量也随之增加。误用的例子包括:发送垃圾邮件或未经请求的商业电子邮件(UCE),这是垃圾邮件的广泛传播;发送威胁;发送恶作剧;以及计算机病毒和蠕虫的传播。此外,贩运毒品或儿童色情制品等犯罪活动很容易通过发送简单的电子邮件来协助和教唆。
本文讨论的问题包括:
•设置使用支持向量机进行分类实验的框架
•选择候选文体特征以解决电子邮件作者分类问题
•确定测试电子邮件作者身份分类是否成功的实验序列
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:(代码和文档not free)
with open('x_C.pickle','rb') as f:x_C = pickle.load(f)f.close()
with open('y.pickle','rb') as f:y = pickle.load(f)f.close()
with open('x_W.pickle','rb') as f:x_W = pickle.load(f)f.close()
with open('x_F.pickle','rb') as f:x_F = pickle.load(f)f.close()
with open('x_L.pickle','rb') as f:x_L = pickle.load(f)f.close()
with open('x_C_W.pickle','rb') as f:x_C_W = pickle.load(f)f.close()
with open('x_C_F.pickle','rb') as f:x_C_F = pickle.load(f)f.close()
with open('x_W_F.pickle','rb') as f:x_W_F = pickle.load(f)f.close()
with open('x_F_L.pickle','rb') as f:x_F_L = pickle.load(f)f.close()
with open('x_F_C_W.pickle','rb') as f:x_F_C_W = pickle.load(f)f.close()
with open('x_F_C_L.pickle','rb') as f:x_F_C_L = pickle.load(f)f.close()
with open('x_F_L_W.pickle','rb') as f:x_F_L_W = pickle.load(f)f.close()
with open('x_F_C_L_W.pickle','rb') as f:x_F_C_L_W = pickle.load(f)f.close()
#test diffrent feaure effect (x_C)
x_train, x_test, y_train, y_test = train_test_split(x_C, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_C accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_W)
x_train, x_test, y_train, y_test = train_test_split(x_W, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F)
x_train, x_test, y_train, y_test = train_test_split(x_F, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_L)
x_train, x_test, y_train, y_test = train_test_split(x_L, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_L accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_C_W)
x_train, x_test, y_train, y_test = train_test_split(x_C_W, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_C_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_C_F)
x_train, x_test, y_train, y_test = train_test_split(x_C_F, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_C_F accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_W_F)
x_train, x_test, y_train, y_test = train_test_split(x_W_F, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_W_F accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_L)
x_train, x_test, y_train, y_test = train_test_split(x_F_L, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_L accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_C_W)
x_train, x_test, y_train, y_test = train_test_split(x_F_C_W, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_C_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_C_L)
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_C_L accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_L_W)
x_train, x_test, y_train, y_test = train_test_split(x_F_L_W, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_L_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_C_L_W)
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2,
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_C_L_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent kernel effect
new_kernel =['Linear','Polynomial','Radial basis function','Sigmoid tanh']
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2,
random_state=42)
for kernel in new_kernel:svclf = SVC(kernel=kernel)svclf.fit(x_train, y_train)pred = svclf.predict(x_test);print(kernel," accuracy: ", sum(pred == y_test)/len(y_test))
#test diffrent gama effect
gama_lst =[0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0]
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2,
random_state=42)
for gama in gama_lst:svclf = SVC(kernel = 'linear',gamma=gama)svclf.fit(x_train, y_train)pred = svclf.predict(x_test);print('gama=',gama," accuracy: ", sum(pred == y_test)/len(y_test))
#test diffrent degree effect
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2,
random_state=42)
for degree in range(1,11):svclf = SVC(kernel = 'linear',degree=degree)svclf.fit(x_train, y_train)pred = svclf.predict(x_test);print('gama=',degree," accuracy: ", sum(pred == y_test)/len(y_test))
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:

2017年第六届数学建模国际赛小美赛B题电子邮件中的笔迹分析解题全过程文档及程序
2017年第六届数学建模国际赛小美赛 B题 电子邮件中的笔迹分析 原题再现: 笔迹分析是一种非常特殊的调查形式,用于将人们与书面证据联系起来。在法庭或刑事调查中,通常要求笔迹鉴定人确认笔迹样本是否来自特定的人。由于许多语言证据出现在电…...

CentOS安装Python解释,CentOS设置python虚拟环境,linux设置python虚拟环境
一、安装python解释器 1、创建解释器安装的目录:/usr/local/python39 cd /usr/local mkdir python39 2、下载依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel …...

在线智能防雷监控(检测)系统应用方案
在线智能防雷监控系统是一种利用现代信息技术,对防雷设施的运行状态进行实时监测、管理和控制的系统,它可以有效提高防雷保护的安全性、可靠性和智能化程度,降低运维成本和风险,为用户提供全方位的防雷解决方案。 在线智能防雷监控…...

flutter + firebase 云消息通知教程 (android-安卓、ios-苹果)
如果能看到这篇文章的 一定已经对手机端的 消息推送通知 有了一定了解。 国内安卓厂商这里不提都有自己的FCM 可自行查找。(国内因无法科学原因 ,不能使用谷歌服务)只说海外的。 目前 adnroid 和 ios 推送消息分别叫 FCM 和 APNs。这里通过…...

2024年PMP考试新考纲-PMBOK第七版-项目管理原则真题解析
从战争中学习战争。对于参加2024年PMP考试的小伙伴来说,最有效的学习方式是这样地:①阅读了教材(PMBOK6、7和敏捷),了解基本概念;②反复刷近期的PMP考试真题,查漏补缺。 为此,华研荟…...

vscode开发python环境配置
前言 vscode作为一款好用的轻量级代码编辑器,不仅支持代码调试,而且还有丰富的插件库,可以说是免费好用,对于初学者来说用来写写python是再合适不过了。下面就推荐几款个人觉得还不错的插件,希望可以帮助大家更好地写…...

数据库客户案例:每个物种都需要一个数据库!
1、GERDH——花卉多组学数据库 项目名称:GERDH:花卉多组学数据库 链接地址:https://dphdatabase.com 项目描述:GERDH包含了来自150多种园艺花卉植物种质的 12961个观赏植物。将不同花卉植物转录组学、表观组学等数据进行比较&am…...

数据分析思维导图
参考: https://zhuanlan.zhihu.com/p/567761684?utm_id0 1、数据分析步骤地图 2、数据分析基础知识地图 3、数据分析技术知识地图 4、数据分析业务流程 5、数据分析师能力体系 6、数据分析思路体系 7、电商数据分析核心主题 8、数据科学技能书知识地图 9、数据挖掘…...

网络基础【网线的制作、OSI七层模型、集线器、交换机介绍、路由器的配置】
目录 一.网线的制作 1.1.网线的标准 1.2.水晶头的做法 二.OSI七层模型、集线器、交换机介绍 集线器(Hub): 交换机(Switch): 三.路由器的配置 3.1.使用 3.2.常用的功能介绍 1、如何管理路由器 2、家…...

C++中的继承(二)
文章目录 前言多继承虚继承虚继承的底层组合 前言 上一篇文章我们C的正常继承其实已经讲完了,但是后面还有一个大坑。 实际当中继承有单继承和多继承。 单继承就是直接继承一个类。 只有一个直接父类的就叫做单继承。 如果是单继承那就比较简单。 现实世界除了有…...
sklearn多项式回归和线性回归
什么是线性回归? 回归分析是一种统计学方法,用于研究自变量和因变量之间的关系。它是一种建立关系模型的方法,可以帮助我们预测和解释变量之间的相互作用。 回归分析通常用于预测一个或多个因变量的值,这些因变量的值是由一个或多…...

Postman报:400 Bad Request
● 使用Postman发送Post请求报400,入参为JSON; 二、分析 1、Postman请求并没有请求到后台Api(由于语法错误,服务器无法理解请求); 2、入参出错范围:cookie、header、body、form-data、x-www-f…...
apache poi_5.2.5 实现表格内某一段单元格的复制
apache poi_5.2.5 实现表格内,某一段单元格的复制。 实现思路 1.定位开始位置 2.从开始位置之后,在行索引集合中添加行索引下标 3.截至到结束位置。 4.对行索引集合去重,并循环行索引集合 5.利用XWPFTableRow对像的getCtRow().copy()方法&a…...
Oracle重建索引详解
更新:2023-05-17 18:08 一、Oracle重建索引命令 Oracle重建索引可以通过ALTER INDEX命令来完成。下面是示例代码: ALTER INDEX index_name REBUILD [PARAMETERS];其中,index_name是需要重建的索引名称,PARAMETERS是可选的重建参…...

众和策略证券开户首选:股票增持是好还是坏?大股东增持规定?
股票增持是好仍是坏? 股东增持在一定程度上反映股东对个股比较看好,大量的买单,增加了市场上的多方力气,会推动股价上涨,是一种利好消息。 一般大股东会增持可能是上市公司运营成绩较好,具有较大的发展前…...

UE4移动端最小包优化实践
移动端对于包大小有着严苛的要求,然而UE哪怕是一个空工程打出来也有90+M,本文以一个复杂的工程为例,探索怎么把包大小降低到最小。 一、工程简介 工程包含代码、插件、资源、iOS原生库工程。 二、按官方文档进行基础优化 官方文档 1、勾选Use Pak File和Create comp…...

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成
一、插件 Settings... 1.1 File -- Settings 1.2 Settings -- Plugins 1.2.1 搜索框,也可以直接搜索 1.3 Plugins -- 【输入 & 搜索】mybatis 1.3.1 插件不同功能介绍 1.3.2 翻译如下 1.4 选中 Update,更新下 1.4.1 更新中 1.4.2 Restart IDE 1…...

java开发面试:常见业务场景之单点登录SSO(JWT)、权限认证、上传数据的安全性的控制、项目中遇到的问题、日志采集(ELK)、快速定位系统的瓶颈
单点登录(SSO) 单点登录,Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统。 如果是单个tomcat服务,session可以共享,如果是多个tomcat,那么服务s…...

Java网络编程原理与实践--从Socket到BIO再到NIO
文章目录 Java网络编程原理与实践--从Socket到BIO再到NIOSocket基本架构Socket 基本使用简单一次发送接收客户端服务端 字节流方式简单发送接收客户端服务端 双向通信客户端服务端 多次接收消息客户端服务端 Socket写法的问题BIO简单流程BIO写法客户端服务端 BIO的问题 NIO简述…...

ARM GIC(三) gicv2架构
ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cpu的中断管理,就不能像单core那样简单去管理,由此arm定义了GICv2架构,来支持多核cpu的中断管理 一、gicv2架构 GICv2,支持最大8个core。其框图如下图所示: 在gicv2中,gic由两个大模块组成: …...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...