大数据分析案例-基于随机森林算法构建新闻文本分类模型

news2025/2/23 13:02:20

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章

大数据分析案例合集
大数据分析案例-基于随机森林算法预测人类预期寿命
大数据分析案例-基于随机森林算法的商品评价情感分析
大数据分析案例-用RFM模型对客户价值分析(聚类)
大数据分析案例-对电信客户流失分析预警预测
大数据分析案例-基于随机森林模型对北京房价进行预测
大数据分析案例-基于RFM模型对电商客户价值分析
大数据分析案例-基于逻辑回归算法构建垃圾邮件分类器模型
大数据分析案例-基于决策树算法构建员工离职预测模型

大数据分析案例-基于KNN算法对茅台股票进行预测

大数据分析案例-基于多元线性回归算法构建广告投放收益模型
大数据分案例-基于随机森林算法构建返乡人群预测模型
大数据分析案例-基于决策树算法构建金融反欺诈分类模型

目录

1.项目背景

2.项目简介

2.1研究目的与意义

2.2研究方法与思路

2.3技术工具

3.算法原理

4.项目实施步骤

4.1理解数据

4.2探索性数据分析

4.3数据预处理

4.4特征工程

4.5模型构建

4.6模型评估

5.实验总结

源代码


1.项目背景

       报纸,杂志,电视,收音机,电影,书籍,音像制品,还有现在快速发展的互联网。其中,报纸、电视、广播和互联网是新闻和信息传播的主要媒介。新闻媒体又叫大众传媒,一般分为两类:纸质媒体(报纸)和电子媒体(广播电视)。随着因特网的出现,“新型的电子媒介”网络也逐渐发展成为一种新型的媒介。新闻传媒产业一般都有正式的格式,遵循某种规范,并按照发布会的主题精心挑选会议的时间和地点。记者、媒体负责人、行业主管、合作单位的代表、政府官员等参与,媒体行业实现了时间、人员、媒体的集中,通过报刊、电视、广播、网站等大众传播手段的集中发布,迅速将信息扩散给公众。新形式的新闻传媒产业显示出了很大的发展空间,传媒产业的产业结构也呈现出多元化的趋势。短视频、直播、新闻媒体占比显著提高,新闻传媒行业的信息信息、知识文化等非娱乐内容的传播已成为一股新的潮流,新闻传媒行业的内容总体上也出现了“视频化”和“价值向”两种趋势。国家网信办日前公布了《互联网新闻信息稿源单位名单》,其中包括中央新闻网站、中央新闻单位、行业媒体、地方新闻网站、地方新闻单位、地方新闻媒体、地方媒体、新闻媒体、政府新闻媒体等1358个稿源单位,并公布了最新版本的《互联网新闻信息稿源》。与此同时,该榜单上第一次出现了公开帐号和应用。另外,国家网信办发言人还强调,从今天开始,互联网新闻信息提供者在发布新闻信息时,应当按照最新版本的《互联网新闻信息稿源单位名单》进行发布。近几年,随着网络信息技术的飞速发展,媒介融合的速度也越来越快,从 Web1.0发展到今天的 Web3.0,形成了“两微一端一网”的传播渠道,网络新闻媒介在新闻信息传播、网络舆情引导、社会公共事务等方面发挥更加重要的作用,进入媒体融合发展的新时期。

        新形式的新闻传媒产业显示出了很大的发展空间,传媒产业的产业结构也呈现出多元化的趋势。短视频、直播、新闻媒体占比显著提高,新闻传媒行业的信息信息、知识文化等非娱乐内容的传播已成为一股新的潮流,新闻传媒行业的内容总体上也出现了“视频化”和“价值向”两种趋势。在传媒企业从机制走向运营的同时,也在积极探索融合与可持续发展的道路,传媒融合将会更加深入,新媒体与传统媒体的界限会更加模糊,不同媒体的互动性、互连性也会增强,媒体融合的发展也会更加深入。

2.项目简介

2.1研究目的与意义

        本次实验通过研究8种常见的新闻类别,找出其特点,构建新闻分类模型。模型的应用有利于各大新闻行业在发布新闻的时候能快速的得出待发布新闻的分类,提高效率,也有利于读者能精确的读取该分类下的新闻文章。

2.2研究方法与思路

        本次实验主要使用pandas、numpy、jieba、sklearn等第三方库,首先使用pandas读取数据并了解数据情况,接着使用jieba对中文进行分词处理,然后对数据集进行划分,其中测试集比例为0.2,训练集比例为0.8,之后对划分的数据集进行文本向量化,最后构建随机森林分类模型并进行模型评估。

2.3技术工具

Python版本:3.9

代码编辑器:jupyter notebook

3.算法原理

        随机森林是一种有监督学习算法。就像它的名字一样,它创建了一个森林,并使它拥有某种方式随机性。所构建的“森林”是决策树的集成,大部分时候都是用“bagging”方法训练的。bagging 方法,即 bootstrapaggregating,采用的是随机有放回的选择训练数据然后构造分类器,最后组合学习到的模型来增加整体的效果。简而言之,随机森林建立了多个决策树,并将它们合并在一起以获得更准确和稳定的预测。其一大优势在于它既可用于分类,也可用于回归问题,这两类问题恰好构成了当前的大多数机器学习系统所需要面对的。

        随机森林分类器使用所有的决策树分类器以及 bagging 分类器的超参数来控制整体结构。与其先构建 bagging分类器,并将其传递给决策树分类器,我们可以直接使用随机森林分类器类,这样对于决策树而言,更加方便和优化。要注意的是,回归问题同样有一个随机森林回归器与之相对应。

        随机森林算法中树的增长会给模型带来额外的随机性。与决策树不同的是,每个节点被分割成最小化误差的最佳指标,在随机森林中我们选择随机选择的指标来构建最佳分割。因此,在随机森林中,仅考虑用于分割节点的随机子集,甚至可以通过在每个指标上使用随机阈值来使树更加随机,而不是如正常的决策树一样搜索最佳阈值。这个过程产生了广泛的多样性,通常可以得到更好的模型。

4.项目实施步骤

4.1理解数据

使用pandas读取数据集并查看数据前五行

使用df.shape查看数据大小

通过结果可以发现数据集共有800行,2列

使用df.info()查看数据基本信息

4.2探索性数据分析

使用df. value_counts()查看type列各类有多少条数据

通过结果可以看见type列共有体育、娱乐、彩票、房产、教育、游戏、科技、股票八个类别,每个类别有100条数据。 

4.3数据预处理

由于新闻文本属于文本型数据,所有我们需要使用jieba进行中文分词处理,同时这里还用到了停用词库对停用词进行过滤

接着还需要对type列进行数值转换,用1-8数值代替体育、娱乐等词汇

4.4特征工程

选取分词后的特征作为自变量x,type类型作为因变量y。并使用sklearn中的train_test_split对数据集进行划分,测试集比例为0.2,训练集比例为0.8.

接着使用sklearn中的CountVectorizer对x_tarin和x_test进行文本向量化

4.5模型构建

使用sklearn中的随机森林分类算法RandomForestClassifier进行构建模型

从结果可以看出模型的准确率为0.906,模型效果还不错。 

4.6模型评估

使用sklearn中的混淆矩阵和分类报告来继续模型评估

混淆矩阵结果中我们可以看到模型在每个类别上分类正确的个数,如对角线上的数字,以及分类错误的个数,如除了对角线上的数字。比如在分类7的时候,共有19个分类正确,共有6个分类错误,其中3个分类为2,2个分类为5,1个分类为6。分类报告结果中,我们可以看见每个分类类别的精确率、召回率、F1值等数据。 

5.实验总结

        本次实验是基于随机森林分类算法模型构建的新闻分类模型,最终模型准确率为90%,模型效果还不错,但是也还有改进之处,比如在数据预处理的时候,对中文文本的处理可以再细致点,使得分词效果更好,最后模型的准确率也会更高。

        通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

        在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

源代码

import pandas as pd
import warnings
warnings.filterwarnings('ignore')  # 忽略警告
# 导入数据
data = pd.read_excel('data.xlsx')
print(data.head())  # 查看数据前五行
# 查看数据大小
print(data.shape)
# 查看数据基本信息
print(data.info())
# 查看每个type类型共有多少条数据
print(data['type'].value_counts())
# 数据预处理
import re
import jieba

def chinese_word_cut(x):
    # 文本预处理 :去除一些无用的字符只提取出中文出来
    my_data = re.findall('[\u4e00-\u9fa5]+', x, re.S)
    my_data = " ".join(my_data)

    # 文本分词
    seg_list_exact = jieba.cut(my_data, cut_all=True)
    result_list = []
    # 读取停用词库中的词语
    with open('stopwords.txt', encoding='utf-8') as f: # 可根据需要打开停用词库,然后加上不想显示的词语
        con = f.readlines()
        stop_words = set()
        for i in con:
            i = i.replace("\n", "")   # 去掉读取每一行数据的\n
            stop_words.add(i)
    # 对jieba分词后的词语进行去除停用词,并且筛选长度大于1的词语
    for word in seg_list_exact:
        if word not in stop_words and len(word) > 1:
            result_list.append(word)      
    return " ".join(result_list)
# 使用apply函数对content这一列数据进行中文分词处理
data["content_cutted"] = data.content.apply(chinese_word_cut)
print(data.head())
data['type'] = data['type'].map({'体育':1,'娱乐':2,'彩票':3,'房产':4,'教育':5,'游戏':6,'科技':7,'股票':8})
print(data.head())
# 准备数据
X = data['content_cutted']
y = data['type']
# 划分数据集
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, y,test_size=0.2)
# 文本向量化
from sklearn.feature_extraction.text import CountVectorizer
tf_vectorizer = CountVectorizer()
tf_vectorizer.fit(X)
x_tarin_vec = tf_vectorizer.transform(x_train)
x_test_vec = tf_vectorizer.transform(x_test)
# 构建随机森林模型
from sklearn.ensemble import RandomForestClassifier  
from sklearn.metrics import accuracy_score
model = RandomForestClassifier()
model.fit(x_tarin_vec,y_train)
y_pred = model.predict(x_test_vec)
print('模型准确率:',accuracy_score(y_pred,y_test))
# 模型评估
from sklearn.metrics import confusion_matrix,classification_report
print(confusion_matrix(y_pred,y_test))
print(classification_report(y_pred,y_test))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LCHub:vika维格表将 70 万行代码开源了

vika维格表将 70 万行代码开源了 今天,vika维格表郑重宣布:我们将 70 万行代码开源了! 更为准确地说,我们正式发布了vika维格表的社区版——「APITable」。 这意味着,你可以通过免费开源的多维表格技术去创造更多有趣的事物。 当然了,你也许会问这个社区版、这些开源的代…

【PhD Debate - 14】将科幻照进现实——元宇宙数字人的当下与未来

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!2023年1月11日,PhD Debate-14特别邀请了来自上海交通大学博士生马子阳、香港科技大学博士生范杰森、埃因霍温理工大学博士生尹路、马里兰大学博士生乔怿凌、香港科技大学博士生徐昊作为嘉宾&#xff0c…

A、B、C三类IP地址范围有哪些?5张表格收藏好就够了!

大家好,这里是网络技术联盟站。 今天给大家带来的是子网范围的精品帖子,觉得文章对您有帮助的,不妨多多转发给您的朋友哦! 每个章节我都会用表格进行汇总,可以保存收藏! A类地址 /8 地址数&#xff1a…

嵌入式linux系统快速启动优化的方法

1、嵌入式设备的启动过程 (1)上电首先执行芯片内部固化的代码,这段代码会将BootLoader读取到芯片的iRAM中执行,初始化内存,并将BootLoader代码搬运到内存中继续运行; (2)BootLoader是启动引导代码,主要作用是将内核加载…

【二分查找】一文带你掌握二分法 (附万能模板)

目录一、简介二、易错点三、例子四、万能模板五、参考资料一、简介 哪怕没有学过编程的同学,也许不知道二分法这个名字,但也一定接触过它的核心思想。不了解的同学也没关系,我用一句话就能概括出它的精髓:将一个区间一分为二&…

注意力汇聚:Nadaraya-Watson 核回归

Nadaraya-Watson核回归是具有注意力机制的机器学习范例。 Nadaraya-Watson核回归的注意力汇聚是对训练数据中输出的加权平均。从注意力的角度来看,分配给每个值的注意力权重取决于将值所对应的键和查询作为输入的函数。 注意力汇聚可以分为非参数型和带参数型。 …

这5个Linux安全相关的命令,很实用!

1.ss ss更多人认为是“网络”命令,但该命令也可用于安全目的。 比如: ss:列出所有连接ss -a:列出侦听和非侦听端口ss -t:列出 TCP 连接 2.who who命令列出所有登录的人。 Linux 是多用户的,所以这个命…

VBA检查指定应用程序是否已经打开

VBA中提供了CreateObject和GetObject两种方法获得对象实例,二者的区别在于GetObject用于获取已经打开的应用程序对象,但是如果该应用程序并没有打开,那么将产生运行时错误,代码中需要加入额外的错误处理代码。 在任务管理器中可以…

第17讲:Python中元组的概念以及应用

文章目录1.元组的概念2.元组的基本使用2.1.定义一个元组2.2.定义一个空元组2.3.元组的元素是不可变的2.4.当元组中的元素是一个列表时列表中的元素可变2.5.当元组中只定义一个元素时的注意事项3.列表的所有操作同样适用于元组4.就是想修改元组中的某个元素1.元组的概念 Python…

CVE-2022-33980 Apache Commons Configuration 远程命令执行漏洞分析

漏洞描述 7月6日,Apache官方发布安全公告,修复了一个存在于Apache Commons Configuration 组件的远程代码执行漏洞,漏洞编号:CVE-2022-33980,漏洞威胁等级:高危。恶意攻击者通过该漏洞,可在目标…

3. 其他数仓/BI架构解析

文章目录1. 独立数据集市架构2. 辐射状企业信息工厂Inmon架构范式建模维度建模3. 混合辐射状架构与Kimball架构目前,经过长时间的演进,各种数仓架构之间的区别变得越来越小,且不论哪种数仓架构,都会涉及维度建模。下面是几种常见的…

《项目管理精华》读书笔记

《项目管理精华》读后感 《项目管理精华》书中用实例讲解了项目管理的基本流程及一些项目管理技巧,通俗易懂且让人有读下去的欲望。本书按照项目管理的五大过程组的顺序逻辑加上一些作者认为项目管理中比较有价值的内容来介绍的,十大知识领域穿插在这些…

nodejs+vue+elementui在线水果商城购物网站vscode项目

摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 系统开发环境 5 2.1 Vue技术介绍 5 端技术:nodejsvueelementui 前端:HTML5,CSS3、JavaScript、VUE 系统分为不同的层次:视图层&#…

哪个室内导航地图好用?画地图用什么软件好?

在互联网服务中,所有互联网巨头均斥巨资布局C端的地图服务,喜闻乐见的地图形式极大地方便了人们在日常生活中的查询位置、了解环境、导航等应用需求,因此取得了巨大的成功。但目前这些地图服务数据的颗粒度基本仅到城市级;园区、景…

CVE-2022-32532 认证绕过漏洞分析

前言 结合自身经历,在使用正则表达式去匹配流量特征时,由于正则表达式中元字符“.”不匹配换行符(\n、\r)导致一直提取不上所需的流量。而如今,之前踩过的坑却出现在了Apache Shiro框架之中… 漏洞描述 6月29日&…

《MySQL实战45讲》——学习笔记24 “Master/Slave主备同步机制“

binlog可以用来归档,也可以用来做主备同步,binlog在MySQL的各种高可用方案上扮演了重要角色;本篇主要介绍MySQL主备(M-S结构)的基本原理、不同格式binlog的优缺点和设计者的思考、MySQL双主结构和循环复制问题&#xf…

关于 Linux 系统

个人主页:ζ小菜鸡 大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习Linux系统。 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 目录 一、Linux系统的组成 二、Linux 命令行的操作 三、Linux 目录结构 四、文件基本操作 五、用户及文件权限管…

jspssm小型药店药品管理系统

目 录 第一章 概述 1 1.1 研究背景 1 1.2开发意义 1 1.3 研究现状 1 1.4 研究内容 2 1.5论文结构 2 第二章 开发技术介绍 3 2.1 系统开发平台 3 2.2 平台开发相关技术 3 2.2.1 JSP技术介绍 3 2.2.2 Mysql数据库介绍 3 2.2.3 B/S架构 …

excel排名技巧:万能透视表加筛选找出销售冠军

在一组数据中统计单项排名第一的人员名单,如果用函数,我们需要考虑不同项目业绩相等的查找问题,需要考虑同项目业绩相等的查找问题。但如果用数据透视表加筛选,一切就很简单了。最后要么逐条地复制粘贴,要么用技巧合并…

ChatGPT 逆天测试,结局出乎预料

目录一、数学解题能力二、编程能力三、日常生活咨询四、问一些离谱的问题,它有啥反应?五、逆天大测试一、数学解题能力 据说 ChatGPT 会做数学题,给他几个条件不充分的问题,看看他是否真的会思考。 这家伙心理素质真好&#xff…