python - 相关网络
问题描述
对于我的基本数据科学学期的 CAS 学期论文,我正在解析一个包含所有文章及其元数据(作者、标题、副标题、摘要、标签、类别、子类别、创建 dt、更新 dt 等)的新闻网站 - 启发通过这个人https://www.youtube.com/watch?v=-YpwsdRKt8Q
一切运行良好,我的树莓派 15 分钟内都在收集这些数据,依此类推。
我只有一个问题。我想从标签中创建一个关联网络。这个标签列看起来像
0 panorama,schweiz,verkehr,news 1 sport,schweiz,eishockey,news 2 stans,panorama,verkehr,strassenverkehr,news 3 eishockey,sport,davos,news 4 wirtschaft,schweiz,konsum,kaffeetee,news 5 jeanclaudegerber,news,srilanka,tiere,wissen 6 schule,bellinzona,panorama,news 7 luzern,jrgenklopp,fussball,news 8 panorama,klima,gretathunberg,lissabon,news 9 australien,vermisstmeldung,gesellschaft,news 10 gesellschaft,amerika,news,ausstellung
现在我想计算标签之间的相关性。例如,在第一行“全景”有 1 行到“schweiz”、“verkehr”、“news” “schweiz”有 1 行到“全景”、“verkehr”、“新闻”等等。有时有 3 个标签,有时多达 7、8 个。
我想要一个脚本贯穿所有行并计算这种相关性并总结它。
第一个问题,有人可以给我一个提示我该怎么做吗?有没有可以提供帮助的模块?即使是一个小小的提示,我也会非常感激。
最后一个问题,有人也可以给我一个提示,我可以如何想象这一点。我想要一个可以看到整个地图的网络图。最常见的标签越大,最常见的连接线宽也越粗。
我的主要问题是,我什至不知道我要看什么。您可能注意到英语不是我的母语,而在德语中我还没有找到真正帮助我的东西;-)
非常感谢和来自瑞士马可的干杯
编辑,PS:为了指定更恰当。列表中的所有标签都是标签。所以如果我有:
panorama,schweiz,verkehr,news
这是 4 个标签,每个标签都与其他三个标签相关。
解决方案
我认为您要做的第一件事是计算每个标签的每个类别的出现次数,因此从一个以 Pandas 数据框tags
为索引的数据框开始:
df =
1 2 3 4
tags
panorama schweiz verkehr news None
sport schweiz eishockey news None
stans panorama verkehr strassenverkehr news
eishockey sport davos news None
wirtschaft schweiz konsum kaffeetee news
jeanclaudegerber news srilanka tiere wissen
schule bellinzona panorama news None
luzern jrgenklopp fussball news None
panorama klima gretathunberg lissabon news
australien vermisstmeldung gesellschaft news None
gesellschaft amerika news ausstellung None
我会:
- 堆叠数据框(熔化所有列的特殊情况)
- 按标签分组
- 计算每个类别出现每个标签的次数
# This does all of the above at once
counts = df.stack().rename('category').reset_index('tags').groupby('tags').category.value_counts()
这使
counts =
tags category
australien gesellschaft 1
news 1
vermisstmeldung 1
eishockey davos 1
news 1
sport 1
gesellschaft amerika 1
ausstellung 1
news 1
jeanclaudegerber news 1
srilanka 1
tiere 1
wissen 1
luzern fussball 1
jrgenklopp 1
news 1
panorama news 2
gretathunberg 1
klima 1
lissabon 1
schweiz 1
verkehr 1
schule bellinzona 1
news 1
panorama 1
sport eishockey 1
news 1
schweiz 1
stans news 1
panorama 1
strassenverkehr 1
verkehr 1
wirtschaft kaffeetee 1
konsum 1
news 1
schweiz 1
Name: category, dtype: int64
然后你可以解开这个系列给出一个表格:
counts.unstack()
category amerika ausstellung bellinzona davos eishockey \
tags
australien NaN NaN NaN NaN NaN
eishockey NaN NaN NaN 1.0 NaN
gesellschaft 1.0 1.0 NaN NaN NaN
jeanclaudegerber NaN NaN NaN NaN NaN
luzern NaN NaN NaN NaN NaN
panorama NaN NaN NaN NaN NaN
schule NaN NaN 1.0 NaN NaN
sport NaN NaN NaN NaN 1.0
stans NaN NaN NaN NaN NaN
wirtschaft NaN NaN NaN NaN NaN
...
然后你可以对该矩阵进行相关性
推荐阅读
- calculation - 在 Tableau 中统计新用户组
- python - 使用 sqlAlchemy 和 python 使用 plpgsql 函数在 PostgreSQL 中插入数据
- fetch - Svelte:如果用户滚动到页面末尾,如何获取更多信息
- javascript - React Native - 屏幕关闭的计时器进度
- c# - SqlBulkCopy 用于 c# 控制台应用程序中具有内部数据表的数据表
- node.js - 如何使用 Ramda 复制对象数组并仅更改对象索引?
- javascript - npm start 失败,来自本地依赖项的文件中有意外令牌
- docker - 使用 docker-desktop 在本地 kubernetes 集群上使用 FlexVolume
- docker - 如何调试因退出代码0而随机死亡的docker容器
- java - 为什么在尝试使用 3 状态复选框时 Timber 会给我一个 NoClassDefFoundError?