Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组数据集1

简介: Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组数据集

在这篇文章中,我们讨论了基于gensim 包来可视化主题模型 (LDA) 的输出和结果的技术 。

介绍

我们遵循结构化的工作流程,基于潜在狄利克雷分配 (LDA) 算法构建了一个主题模型。

在这篇文章中,我们将使用主题模型,探索多种策略以使用matplotlib 绘图有效地可视化结果 。

我将使用 20 个新闻组数据集的一部分,因为重点更多地放在可视化结果的方法上。

让我们从导入包和 20 News Groups 数据集开始。

import matplotlib.pyplot as plt
# NLTK停止词
fom nlt.copus imort stowods
sop_wrds = stowords.wrds('chinse')

导入新闻组数据集

让我们导入新闻组数据集并仅保留 4 个 类别。

# 导入数据集
d = f.ocdftargtname.in(\[so.relion.chritan
dftargt_name.in(\[so.relion.chritan, 'ec.sot.okey', 'ak.piticmdast' 'rec.oorcyces'\]) , :\]
prin(f.hpe) #> (2361, 3)
df.(

标记句子并清理

删除电子邮件、换行符、单引号,最后使用 gensim 将句子拆分为单词列表 simple_preprocess()。设置 deacc=True 选项会删除标点符号。

def snds(seecs):
    for setees in sntces:
        sent = r.sub('\\S*@\\S*\\s?', '', sent) # 删除电子邮件
        snt = re.sb('\\s+', '', sent) # 移除换行字符
        set = re.sb("\\'", "", sent) # 删除单引号
        set = geim.uls.smplprerss(str(sent), deacc=True) 
# 转换为列表
data = df.cnt.lus.tolist()

构建双字母组、三字母组模型和推理

让我们使用模型形成双字母组、三字母组。为了提高执行速度,这个模型被传递给Phraser()。

接下来,将每个词词形还原为其词根形式,仅保留名词、形容词、动词和副词。

我们只保留这些POS标签,因为它们对句子的含义贡献最大。在这里,我使用spacy进行词法处理。

# 建立大词和三词模型
bigrm = endl.Pres(dta_ords, mncnt=5, thrshl=100) # 更高的阈值会减少短语。
tigam = genm.del.Prses(bgadtawors
dtawors, thrhld=100)  
bigm_od = gsim.molpss.Pasr(bgrm)
tigrmod = genm.mos.pres.hrser(tigam)
# 在终端运行一次
    ""删除止损词,形成大词、三词和词组""
    texts = \[\[wor fo wrd in sipeeproe(tr(dc)) 
     iramod\[oc
iram_od\[oc for doc in txts\]
    tets = rirammod\[igrmmod\[dc
rirammod\[igrmmod\[dc\] for dc in tets\]
    tetout = 
    np = scy.oad('en', dial=\['解析器', 'ner'\])
    for set in txs:
        dc = np(" ".join(sn)) 
        tex_.ppd(\[tknlea_ fr toen in oc if toenpo_ in aowed_ots\])
    # 在词法化之后,再一次删除停止词
atady = roe\_os(daa\_ds) # 处理过的文本数据!

构建主题模型

要使用 构建 LDA 主题模型,您需要语料库和字典。让我们先创建它们,然后构建模型。训练好的主题(关键字和权重)也输出在下面。

如果你检查一下主题关键词,它们共同代表了我们最初选择的主题。教会、冰球、地区和摩托车。很好!

# 创建字典
id2od = copoDciary(dta_eay)
# 创建语料库。术语文档频率
crpus = \[i2wod.o2bow(ext) for txt in daa_ey\]
# 建立LDA模型
Lal(copus=copus,
                                           id2wrd=id2wrd,
                                           nu_tpic=4, 
                                           radom_ate=100,
                                           updaeeery=1,
                                           chnsie=10,
                                           pas=10。
                                           alha='symmetric',
                                           iteatos=100,
                                           prdics=True)
(ldampcs())

什么是主导主题及其在每个文档中的百分比贡献

在 LDA 模型中,每个文档由多个主题组成。但是,通常只有一个主题占主导地位。下面的代码提取每个句子的主要主题,并在格式良好的输出中显示主题和关键字的权重。

这样,您将知道哪个文档主要属于哪个主题。

# 启动输出
    se_tpcf = p.Dataame()
    # 获取每个文档中的主要话题
    for i, ro_isin enate(ldmoelcrps
crps):
        rw = rw\_s0\] if lamoel.pe\_wortopis else rowlis            
        row = soed(ow, ky=laba x: (x\[1\]), evre=True)
        # 获取每个文档的主导主题、perc贡献和关键词
        for j, (toicum, pr_pic) in enate(row):
            if j == 0: # => 主导话题
                wp = ldel.shotoic(topic_num)
 
    # 在输出的最后添加原始文本
deeos = fratcs(lodel=damoe, copus=crpus, tets=dary)
# 格式化
topic = os.retidex()

每个话题最有代表性的一句话

有时您想获得最能代表给定主题的句子样本。此代码为每个主题获取最典型的句子。

# 显示设置,在列中显示更多的字符
for i, grp in serpd:
    senlet = pd.cnct(\[senlet, 
                                             gp.srtes(\['Peion'\], asng=Fase).hed(1)\] 
                                            ais=0)
# 重置索引    
seet.resex(drp=True, inlce=True)
# 格式化
senllet.couns = \['Toum', "TopCorib", "Kywrds", "rsa xt"\]
# 显示
sencoet.head(10)

文档中字数的频率分布

在处理大量文档时,您想知道文档的整体大小和主题大小。让我们绘制文档字数分布。

# 绘图
plt.fiue(fe=(6,7), dpi=60)
plt.xtcs(nplic(0,00,9))

import sebon as sns
fig.titat()
fig.sbts_juo0.90)
plt.xticks(np.lisa(0,00,9))
plt.sow()


Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组数据集2;https://developer.aliyun.com/article/1485103

相关文章
|
3月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
244 4
|
10月前
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
899 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
数据采集 Python
Python实用记录(七):通过retinaface对CASIA-WebFace人脸数据集进行清洗,并把错误图路径放入txt文档
使用RetinaFace模型对CASIA-WebFace人脸数据集进行清洗,并将无法检测到人脸的图片路径记录到txt文档中。
308 1
|
11月前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
641 15
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
2658 18
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
机器学习/深度学习 数据采集 算法
【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现
本文介绍了2024年中国研究生数学建模竞赛C题的详细分析,涵盖数据预处理、特征提取、模型训练及评估等多个方面。通过对磁通密度数据的处理,提取关键特征并应用多种分类算法进行波形分类。此外,还探讨了斯坦麦茨方程及其温度修正模型的应用,分析了温度、励磁波形和磁芯材料对磁芯损耗的影响,并提出了优化磁芯损耗与传输磁能的方法。最后,提供了B站视频教程链接,供进一步学习参考。
1171 7
【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
872 1
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
266 0
python知识点100篇系列(23)- 使用stylecloud生成词云
|
数据可视化 数据挖掘 大数据
Python 数据分析入门:从零开始处理数据集
Python 数据分析入门:从零开始处理数据集
|
自然语言处理 计算机视觉 Python
用 Python 创建词云
用 Python 创建词云
177 2

推荐镜像

更多
下一篇
oss云网关配置