Python语言实现刑事犯罪罪名判定算法

使用Python语言实现刑事犯罪罪名判定算法,判断出罪名信息。

摘要

本课题的研究目标是使用Python语言实现刑事犯罪罪名判定算法,以罪名为标签,以案件情况说明为文本特征,先进行简单数据预处理,再进行相关文本处理,接着用训练集数据对支持向量机、逻辑回归、多项式朴素贝叶斯三个模型进行训练,判断出罪名信息,最后结合两个模型对低频罪名二次强化预测。

刑事犯罪的罪名判定方法

任务描述

通过对支持向量机、逻辑回归、多项式朴素贝叶斯三个模型的评估比较分析,选择适合罪名判定的最佳模型。

数据准备

此次实验使用的数据集,分为训练集、测试集,其中保存训练集数据、测试集数据的txt文件的文件夹名称分别为“dataTrainSet_under200”和“dataTestSet_under200”。

数据集存放数据集文件夹名称划分概率罪名数量案件数量
训练集dataTrainSet_under2000.721617329
测试集dataTestSet_under2000.32167310

实验设置

对于所有的案件情况描述进行jieba分词,然后进行去停用词处理之后,开始TF-IDF处理进行单词权值的计算,提取特征尺寸为5000的特征进行输入,即设置参数max_features= 5000,接着分别对支持向量机、逻辑回归、多项式朴素贝叶斯三个模型进行训练。

利用OneVsRestClassifier类实现svm.SVC的多分类并采用线性核函数进行支持向量机模型的训练,逻辑回归模型优化后的参数为(multi_class=“multinomial”, solver=‘saga’, max_iter=20, random_state=20),对于多项式朴素贝叶斯的参数不做处理,保持默认状态。

模型评估结果分析

​ 三个模型预测测试集数据的评估指标对比

模型AccuracyPrecision_ macro _avgRecall_ macro _avgF1-score_ macro _avg测试集数据量
支持向量机0.800.680.620.637310
逻辑回归0.770.540.500.507310
多项式朴素贝叶斯0.710.690.680.657310

刑事犯罪的低频罪名判定方法

任务描述

本文把在刑事案件数量在[2,50)范围的罪名,称为低频罪名。

在前面的罪名判定实验的TF-IDF+支持向量机模型的基础上,对低频罪名进行预测的评估。

为了提高低频罪名的判定的效果,将所有的低频罪名样本作为一个大类并将其标签命名为“其他类”,和其他样本一起训练出第一个模型,再单独对低频罪名的数据训练第二个模型,当用第一个模型预测低频罪名的测试案件说明时,预测结果为“其他类”,就调用第二个模型进行预测,使预测效果进行二次强化。

实验设置

本次实验的两个模型,使用了在前面实验取得模型评估效果最佳的支持向量机模型,参数也是线性核函数,这两个模型的不同之处在于使用的训练集数据不同。

模型评估结果分析

​ 第一个模型的整体评估指标结果

数据AccuracyPrecision_ macro _avgRecall_ macro _avgF1-score_ macro _avg测试集数据量
第一个模型测试集0.810.810.810.817310

​ 经过两次强化后的低频罪名预测结果

数据Precision_ macro _avgRecall_ macro _avgF1-score_ macro _avg测试集数据量
第一个模型标签“其他类”的数据0.630.540.58383
第二个模型测试集0.660.670.65383

总结

本文基于刑事犯罪罪名判定算法的设计与实现,可以实现简单的单重罪名判定和提高低频罪名判定效果,但在本次的实验仍然有许多需要完善的问题,如样本不均衡、易混淆罪名等等问题,多重罪名判定的问题没有得以解决。
如需代码,请私信联系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨痕_777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>