Python基于KMeans算法进行文本聚类项目实战

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: Python基于KMeans算法进行文本聚类项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

随着计算机技术的发展、Web 应用的逐步普及,大量的电子文本已经触手可及,文本数据的增多引发了另一个问题:人们如何从规模庞大的文本数据中主动或被动地发现有用的信息。这是信息检索中的问题,也是深层次文本内容挖掘和分析中的问题。文本聚类分析是文本挖掘中一个方面的内容,主要应用于加速检索过程、对搜索引擎检索结果聚类呈现、话题的自动发现、文本摘要等。

文本聚类分析在信息检索(IR,Information Retrieval)领域有相当长的研究历史,近年来在文本数据上的聚类分析研究和应用越来越受到关注。文本聚类过程本质上就是将语义相同或者相近的文本聚在一起。

聚类与分类是人们认识自然、获取知识的两种手段。“物以类聚,人以群分”,人类往往依赖聚类和分类手段来认识客观世界并形成概念体系。比如自然界中的猴子就是一群具有长尾巴、会爬树等特征的生物,人们依据这些特征来识别和研究猴子,这是一个分类过程。但这些特征从何而来?这些特征往往是通过这些生物之间自身的相似性以及他们与其他事物之间的差异性得到的,这个过程就是一个聚类分析的过程。从众多的事物中自动地获取特征形成概念,其本质上就是一种聚类分析过程。 

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下

数据详情如下(部分展示):

编号

字段

备注

1

title

标题

2

tag

标签

3

info

信息

4

comments

评论

5

content

内容

部分数据展示:

image.png

3.数据预处理

3.1.读取和查看数据

关键代码:

image.png

结果展示:

image.png

3.2.查看书名和内容

关键代码:

image.png

结果展示:

image.png

查看了第一本书的书名和内容的前10个词。

4.探索性数据分析

4.1.规范化语料库

关键代码如下:

image.png

 

结果输出如下:

image.png

5.特征工程

5.1.提取tf-idf特征

关键代码:

image.png

结果展示:

image.png

上图可以看到特征的形状以及特征名字索引信息。

6.构建聚类模型

主要使用KMeans聚类算法,用于目标聚类分析。

6.1.寻找聚类最优的K

使用手肘法寻找最优的K。

关键代码:

image.png

结果展示:

image.png

通过上图可以看到,10达到最小,但是有一个缺陷是在此文本数据中,使用手肘法寻找最优的K,效果没有非常明显。

 

6.2.建立KMeans聚类模型 

编号

模型名称

参数

1

KMeans聚类模型

n_clusters=10

2

max_iter=10000

关键代码如下:

image.png

6.3.获取每个聚类的数量

关键代码:

image.png

结果展示:

image.png

6.4.文本聚类结果

关键代码:

image.png

输出: 

聚类类别

聚类结果

Cluster 0

Key features: ['自己', '阿米尔', '哈桑', '龙应台', '一件']

book in this cluster:

追风筝的人, 外婆的道歉信, 亲爱的安德烈, 不可思议的朋友, 穿过圩场, 孩子你慢慢来, 冬牧场, 博尔赫斯诗选

Cluster 1

Key features: ['世纪', '一个', '全球', '三部曲', '绘画']

book in this cluster:

百年孤独, 世界的凛冬, 月亮和六便士, 活着, 斯通纳, 世界的凛冬, 斯通纳, 世界的凛冬, 月亮和六便士, 活着, 江城, 下雨天一个人在家, 当我谈跑步时我谈些什么, ?活着, 北鸢, 黄金时代, ?百年孤独, 世界的凛冬, 小王子, 永恒的边缘, 下雨天一个人在家, 不思议图书馆, 怒, 当我谈跑步时我谈些什么, 奇鸟行状录, 东京奇谭集, 奥克诺斯, 唯有孤独恒常如新

Cluster 2

Key features: ['畅销', '女人', '叶舟', '两个', '本书']

book in this cluster:

我的前半生, 新名字的故事, 雪落香杉树, 囚鸟, 双峰: 神秘史, 新名字的故事, 雪落香杉树, 囚鸟, 我的天才女友, 雪落香杉树, 囚鸟, 双峰: 神秘史, 时间的果, 瓦尔登湖, 时间的果, 一只特立独行的猪, 认识电影, 冷暴力, 时间的果, 瓦尔登湖, 没有色彩的多崎作和他的巡礼之年, 远方的鼓声, 没有女人的男人们, 现实与欲望, 恶之花, 二十首情诗与绝望的歌, 荒原

Cluster 3

Key features: ['一本', '情感', '太郎', '纪念', '水问']

book in this cluster:

我为你洒下月光, 皮囊, 孤独六讲, 我为你洒下月光, 东京本屋, 白夜行, 智惠子抄, 我为你洒下月光, 皮囊, 一个人的村庄, 遇到百分之百的女孩, 海子诗全集, 智惠子抄

Cluster 4

Key features: ['1q84', '喜欢', '钱钟书', '官方网站', 'douban']

book in this cluster:

1984, 1984, 1984, 我们仨, 我们仨, 1Q84 BOOK 1, ?我们仨, 1Q84 BOOK 1, 1Q84 BOOK 2, 1Q84 BOOK 3

Cluster 5

Key features: ['有时', '成长', '猝不及防', '般唱', '几桩']

book in this cluster:

杀死一只知更鸟, 杀死一只知更鸟, 杀死一只知更鸟, 杀死一只知更鸟

Cluster 6

Key features: ['小说', '一部', '汪曾祺', '中国', '生活']

book in this cluster:

鱼王, 围城, 鱼王, 飘, 灯塔, 鱼王, 步履不停, 红楼梦, ?沉默的大多数, 看见, 送你一颗子弹, 浮生六记, 民主的细节, 人间草木, 围城, 沉默的大多数, 平凡的世界(全三部), 送你一颗子弹, 白鹿原, 繁花, 明朝那些事儿(1-9), 爱你就像爱生命, 台北人, 倾城之恋, 人间草木, 一句顶一万句, 艺术的故事, 红楼梦, 围城, 飘, 平凡的世界(全三部), 恋情的终结, 中国历代政治得失, 國史大綱(上下), 人间失格, 百鬼夜行 阳, 金色梦乡, 挪威的森林, 强风吹拂, 火花, 海边的卡夫卡, 世界尽头与冷酷仙境, 浮生六记, 我口袋里的星辰如沙砾, 人间草木, 生活,是很好玩的, 海边的卡夫卡, 世界尽头与冷酷仙境, 挪威的森林, 且听风吟, 舞!舞!舞!, 爱吃沙拉的狮子, ?一只狼在放哨, 事物的味道,我尝得太早了, 诗的八堂课, 飞鸟集, 月光落在左手上, 摇摇晃晃的人间, 给孩子的诗, 二十亿光年的孤独

Cluster 7

Key features: ['杂货店', '内心', '一家', '写下', '座位']

book in this cluster:

?解忧杂货店, ?解忧杂货店, 咖啡未冷前, 大萝卜和难挑的鳄梨, 国境以南 太阳以西

Cluster 8

Key features: ['作品', '马尔克斯', '散文', '日子', '丰子恺']

book in this cluster:

房思琪的初戀樂園, 霍乱时期的爱情, 戴上手套擦泪, 二手时间, 霍乱时期的爱情, 活着为了讲述, 戴上手套擦泪, 房思琪的初戀樂園, 二手时间, 霍乱时期的爱情, 活着为了讲述, 吃鲷鱼让我打嗝, 撒哈拉的故事, 文学回忆录(全2册), 活着本来单纯, 山海经全译, 我的职业是小说家, 来自新世界 (上下), 活着本来单纯, 撒哈拉的故事, 此生多珍重, 所谓好玩的事,我再也不做了, ?我的职业是小说家, 无比芜杂的心绪, 鲍勃·迪伦诗歌集 (1961-2012), 万物静默如谜, 我的孤独是一座花园

Cluster 9

Key features: ['兄弟', '美国', '第一次世界大战', '生命', '以及']

book in this cluster:

巨人的陨落, 巨人的陨落, 巨人的陨落, 目送, 这些人,那些事, 巨人的陨落, 心理学与生活, 刀锋, 经济学原理(上下), 目送, 这些人,那些事, 悲伤与理智

由上面的聚类我们大致可以看出,cluster 0侧重生活,cluster 1侧重文学,cluster 9侧重战争生命等,达到了将相似内容聚集到一起的目标。

6.5.聚类结果可视化 

关键代码:

image.png

结果展示:

image.png

7.结论与展望

综上所述,本项目采用KMeans聚类算法对文本数据进行聚类,最终把相似的文本聚在了一起,达到了文本聚类的目的,最终证明了我们提出的模型效果良好,可用于日常生活中进行建模预测,以提高生产价值。

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1i33UIHC0sjwWAhxVMH9teg 
提取码:czc4
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
4月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
344 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
15天前
|
算法 Python
Apriori算法的Python实例演示
经过运行,你会看到一些集合出现,每个集合的支持度也会给出。这些集合就是你想要的,经常一起被购买的商品组合。不要忘记,`min_support`参数将决定频繁项集的数量和大小,你可以根据自己的需要进行更改。
53 18
|
15天前
|
存储 机器学习/深度学习 算法
论上网限制软件中 Python 动态衰减权重算法于行为管控领域的创新性应用
在网络安全与行为管理的学术语境中,上网限制软件面临着精准识别并管控用户不合规网络请求的复杂任务。传统的基于静态规则库或固定阈值的策略,在实践中暴露出较高的误判率与较差的动态适应性。本研究引入一种基于 “动态衰减权重算法” 的优化策略,融合时间序列分析与权重衰减机制,旨在显著提升上网限制软件的实时决策效能。
24 2
|
1月前
|
存储 监控 算法
员工电脑监控场景下 Python 红黑树算法的深度解析
在当代企业管理范式中,员工电脑监控业已成为一种广泛采用的策略性手段,其核心目标在于维护企业信息安全、提升工作效能并确保合规性。借助对员工电脑操作的实时监测机制,企业能够敏锐洞察潜在风险,诸如数据泄露、恶意软件侵袭等威胁。而员工电脑监控系统的高效运作,高度依赖于底层的数据结构与算法架构。本文旨在深入探究红黑树(Red - Black Tree)这一数据结构在员工电脑监控领域的应用,并通过 Python 代码实例详尽阐释其实现机制。
53 7
|
2月前
|
人工智能 编解码 算法
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
136 5
|
3月前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
100 12
|
3月前
|
算法 安全 网络安全
基于 Python 的布隆过滤器算法在内网行为管理中的应用探究
在复杂多变的网络环境中,内网行为管理至关重要。本文介绍布隆过滤器(Bloom Filter),一种高效的空间节省型概率数据结构,用于判断元素是否存在于集合中。通过多个哈希函数映射到位数组,实现快速访问控制。Python代码示例展示了如何构建和使用布隆过滤器,有效提升企业内网安全性和资源管理效率。
75 9
|
3月前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
90 10
|
4月前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
85 17
|
3月前
|
存储 算法 量子技术
解锁文档管理系统高效检索奥秘:Python 哈希表算法探究
在数字化时代,文档管理系统犹如知识宝库,支撑各行各业高效运转。哈希表作为核心数据结构,通过哈希函数将数据映射为固定长度的哈希值,实现快速查找与定位。本文聚焦哈希表在文档管理中的应用,以Python代码示例展示其高效检索特性,并探讨哈希冲突解决策略,助力构建智能化文档管理系统。