基于KMeans、DBSCAN新闻聚类分群

简介: 基于KMeans、DBSCAN新闻聚类分群

一、新闻聚类分群

1、✌ 导入相关库
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.cluster import KMeans
from sklearn.cluster import DBSCAN
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
import pandas as pd
import jieba

sklearn.feature_extraction.text import CountVectorizer:文本向量化

from sklearn.cluster import KMeans:KMeans模型

from sklearn.cluster import DBSCAN:DBSCAN模型

from sklearn.metrics.pairwise import cosine_similarity:余弦相似度

2、✌ 读取数据
data=pd.read_excel('news.xls')
data.head()

3、✌ 中文分词
words=[]
for i,row in data.iterrows():
    word=jieba.cut(row['标题'])
    result=' '.join(word)
    words.append(result)
words

将数据中的标题栏利用jieba库进行分词,为后面搭建词频矩阵使用

4、✌ 文本向量化:建立词频矩阵
from sklearn.feature_extraction.text import CountVectorizer
vect=CountVectorizer()
x=vect.fit_transform(words)
x=x.toarray()
x

Python在处理数据需要数值型数据,需要将上文的文本数据转化为词频矩阵,可以利用CountVectorizer函数

他的原理是将words中的每个词去重以及出去无意义的词,进行编号,然后对应每个原文本计数该次出现的次数

5、✌ 构造特征矩阵
words_name=vect.get_feature_names()
df=pd.DataFrame(x,columns=words_name)
df

词频矩阵处理好,需要构造特征向量为下面模型使用

6、✌ 模型搭建
(1)、✌ 通过KMeans算法进行聚类分群
from sklearn.cluster import KMeans
kms=KMeans(n_clusters=10,random_state=0)
label_kms=kms.fit_predict(df)
label_kms
import numpy as np
words_array=np.array(words)
words_array[label_kms==2]

(2)、✌ 通过DBSCAN算法进行聚类分群
from sklearn.cluster import DBSCAN
dbs=DBSCAN(eps=1,min_samples=3)
label_dbs=dbs.fit_predict(df)
label_dbs

这里我们发现分类出的标签有问题,全部都是-1,说明,全部都是离散点,因为词频处理后,特征过多,导致样本点之间距离较远,从而产生离群点,因此对于新闻文本而言,KMeans算法的聚类效果很好,而DBSCAN的效果较差

这也说明了对于特征较多的数据,KMeans算法的聚类效果要好于DBSCAN算法的聚类效果。

7、✌ 利用余弦相似度进行模型优化
from sklearn.metrics.pairwise import cosine_similarity
df_cs=cosine_similarity(df)
kms_cs=KMeans(n_clusters=10,random_state=0)
label_kms_cs=kms_cs.fit_predict(df_cs)
label_kms_cs

余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。

当文本出现重复值时,可以将原词频矩阵的数据进行余弦相似度处理,处理后的特征矩阵再带入模型。


目录
相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 数据可视化
28_主题建模详解:从LDA到BERTopic - 深度解析与教学
主题建模(Topic Modeling)是自然语言处理(NLP)领域的核心技术之一,旨在从大量非结构化文本中自动发现潜在的主题结构和语义模式。随着大语言模型的崛起,主题建模技术也在不断演进,从传统的统计方法到基于深度学习的高级模型,为文本理解、信息检索、舆情分析等任务提供了强大的技术支撑。
1706 0
|
机器学习/深度学习 自然语言处理 TensorFlow
tensorflow循环神经网络(RNN)文本生成莎士比亚剧集
我们将使用 Andrej Karpathy 在《循环神经网络不合理的有效性》一文中提供的莎士比亚作品数据集。给定此数据中的一个字符序列 (“Shakespear”),训练一个模型以预测该序列的下一个字符(“e”)。通过重复调用该模型,可以生成更长的文本序列。
413 0
|
机器学习/深度学习 数据采集 算法
KMeans+DBSCAN密度聚类+层次聚类的使用(附案例实战)
KMeans+DBSCAN密度聚类+层次聚类的使用(附案例实战)
2737 0
|
数据采集 DataWorks 数据可视化
数据分析之「数据探查」—帮您快速掌握数据情报
为了帮助用户一眼看穿当前数据的质量、结构、分布、统计信息,Dataworks数据分析系统提供了数据探查这个情报管家。它支持探查概览、支持探查详情、支持数据筛选、支持数据刷新、支持数据分布直方图动态装箱和多级下钻!我们会在电子表格顶部以图形和富文本的形式,智能展示每列数据类型和值分布的概览情况;同时,也支持切换到详细模式,查看更多更全面的数据信息。
4935 0
|
5月前
|
人工智能 运维 监控
开源项目分享 : Gitee热榜项目 2025-12-13 日榜
本文整理Gitee当日热门开源项目,涵盖AI智能体、低代码开发、数字人、容器化部署等前沿技术。聚焦智能化、降本增效与垂直场景应用,展现AI工程化、全栈融合与技术普惠趋势,助力开发者把握开源脉搏。
893 15
|
自然语言处理 算法 数据可视化
NLP-基于bertopic工具的新闻文本分析与挖掘
这篇文章介绍了如何使用Bertopic工具进行新闻文本分析与挖掘,包括安装Bertopic库、加载和预处理数据集、建立并训练主题模型、评估模型性能、分类新闻标题、调优聚类结果的详细步骤和方法。
NLP-基于bertopic工具的新闻文本分析与挖掘
|
Unix Linux Windows
操作系统的演变与基本原理
本文旨在深入探讨操作系统的历史演变过程及其背后的设计原理。通过对不同时期典型操作系统的分析,本文揭示了它们如何响应技术挑战和社会需求的变化。此外,文章还将阐述操作系统的核心功能和关键技术,如进程管理、内存管理和文件系统,并探讨这些技术如何影响计算机系统的性能和可靠性。通过综合历史案例和技术分析,本文希望为读者提供一个全面而深入的理解,为什么操作系统是现代计算不可或缺的基石。
415 28
|
安全 虚拟化 Docker
在win10中使用ModelScope官方镜像
为在办公环境笔记本win10上测试ModelScope的开源模型 ,记录踩坑过程
2749 0
在win10中使用ModelScope官方镜像
|
机器学习/深度学习 存储 自然语言处理
Adam介绍
【10月更文挑战第3天】
|
算法 Java
回溯算法详解(Back Tracking)
回溯算法详解(Back Tracking)
967 0