当前位置: 首页 > article >正文

猫头鹰的秘密网络

原文towardsdatascience.com/the-secret-network-of-owls-d55e7b2c4910你知道 8 月 4 日是国际猫头鹰意识日吗我也不知道直到无聊地浏览可爱的猫头鹰表情包这让我来到了这个网站。然后正如我们最近在我们的花园里发现了一窝可爱的猫头鹰我想在维基百科上查看它们——结果令人震惊地看到维基上有254 种猫头鹰被记录这是我们最喜欢的免费开放获取的知识来源。唯一合理的下一步是将这些资料转化为数据可视化以便更好地理解国际猫头鹰景观。也就是说我将自动下载猫头鹰物种的完整列表以及它们的维基百科资料。然后我将使用文本匹配和网络 X 图分析库来提取猫头鹰物种的相似性网络然后进行可视化。这样我们将有一个猫头鹰物种的视觉表示这使得解释不同物种之间的关系变得容易得多。此外虽然这里讨论的猫头鹰主题是及时的但方法和步骤可以轻松地适应我们想要涵盖的任何其他主题并将其转化为依赖于公开可用的维基百科数据库的知识图。所有图像均由作者创建。1. 收集猫头鹰物种列表第一步是快速收集所有列出的猫头鹰物种的名称这些名称被整洁地上传到维基百科上的这个表格中https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/f7a75b79e1d4e2c8972c2ae522cf6a63.png来源en.wikipedia.org/wiki/List_of_owl_species为了获取这个表格的内容我首先使用请求库下载了 HTML 源代码然后快速使用Beautiful Soup提取了所有相关信息如下所示。正如代码单元格的输出所示我能够获取到所有 254 种猫头鹰的名称。# import the necessary librariesfromurllib.requestimporturlopenimportbs4asbs# take the url from wikipediaurlhttps://en.wikipedia.org/wiki/List_of_owl_species# download and parse the html sourcesauceurlopen(url).read()soupbs.BeautifulSoup(sauce,lxml)# extract the owl names from the relevant tags within the table# note: the td tags will also contain the binomial names, which I# managed to filter out by simply dropping all elements which as any# year-looking objects in it (since no owl species were discoverd in the 2000s,# filtering for 1 is just enough)tagssoup.find_all(td)tags[tfortintagsifhrefinstr(t)]owls[]fortintags:if1notint.text:owls.append(t.text)len(owls)这个单元格应该输出包含所有猫头鹰名称的列表长度为 254。注意在这里我只提取了它们的普通名称因为正如你将在下一节中看到的这已经足够下载它们的维基百科资料。2. 下载每种猫头鹰物种的维基百科资料现在我们已经拥有了猫头鹰物种的完整列表每种都由它们的普通名称描述让我们使用Wikipedia API下载它们的资料页面并将它们的文本内容保存以供以后使用。让我们开始设置并执行一个示例查询# importing the apiimportwikipediaapi# setting up the api connectionwiki_wikiwikipediaapi.Wikipedia(owl-miniproject)# preparing a folder to save our colleted dataimportos folderoutwiki_page_contentifnotos.path.exists(folderout):os.makedirs(folderout)# a test samplepagewiki_wiki.page(Greater sooty owl)page.text[0:1000]输出是大型烟灰猫头鹰资料页面的前 1000 个字符https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a05853177e0d601715a06b305316c233.png为了比较你还可以在维基百科上找到这个https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/46e1f47dc651101c6a3959f39efd956c.png来源en.wikipedia.org/wiki/Greater_sooty_owl现在让我们下载所有资料foridx,owlinenumerate(owls):ifidx%100:print(idx)ifnotos.path.exists(folderout/owl):pagewiki_wiki.page(owl)foutopen(folderout/owl,w)fout.write(page.text)fout.close()这将产生 254 个文本文件每个文件都包含相应猫头鹰物种的完整文本资料。现在在最后一节让我们将其转换为图。3. 构建猫头鹰网络在这里首先我们将解析之前下载的包含猫头鹰资料的文本数据。然后在两个 for 循环中我们以成对的方式比较每种猫头鹰物种并计算它们的相似度即我们图中的连接强度通过两种物种资料之间的交叉引用总数。这受到第一种物种在第二种物种资料中提及的次数以及相反情况的影响。为了构建图我们使用NetworkX。# lets store the textual profile of each owl in the following dictionarynames_texts{}fornamein[fforfinos.listdir(folderout)if.DSnotinf]:withopen(folderout/name)asmyfile:names_texts[name]myfile.read().split(External links)[0]# import networkx as create an empty graph objectimportnetworkxasnx Gnx.Graph()# now build the graph by pair-wise comparing each owl profileedges{}forname1,text1innames_texts.items():forname2,text2innames_texts.items():ifname1!name2:weighttext1.count(name2)text2.count(name1)ifweight0:G.add_edge(name1,name2,weightweight)# finally, lets show the size of the graph we builtprint(G.number_of_nodes(),G.number_of_edges())接下来我使用了 Matplotlib 和 NetworkX 来快速可视化这个图importmatplotlib.pyplotasplt# Define the node size proportional to the node degreenode_sizes[100*nx.degree(G,node)fornodeinG.nodes()]# Define the edge width proportional to the edge weightedge_widths[G[u][v][weight]foru,vinG.edges()]# Get positions for the nodes using a force layoutposnx.spring_layout(G,k0.6)# Draw the nodes with labelsf,axplt.subplots(1,1,figsize(10,10))nx.draw_networkx_nodes(G,pos,node_sizenode_sizes,node_colorlightblue,axax)nx.draw_networkx_labels(G,pos,font_size5,axax)# Draw the edges with widths proportional to the weightsnx.draw_networkx_edges(G,pos,widthedge_widths,axax)ax.axis(off)https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a91c2550998c2d4a56b16d8cbb8f31c7.png然而由于这个图是在 Python 中绘制的只需几行代码所以这个图相当混乱所以我再次尝试并在Gephi如何做到这一点的教程即将推出中可视化它。结果如下https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/77086e53aa63e084164a9f33505f27f9.png我们得到的图在揭示这些伟大的猫头鹰物种如何形成更大的群体方面实际上非常有趣和有揭示性——即使我们是鸟类学家。最大的一个以欧洲鹰鸮为中心主要包含生活在欧洲和亚洲的物种。我们可能还会看到另一个包含各种鸮鸟的大集群——结果证明鸮鸟是小型到中型的猫头鹰。我们还看到一个独立的图组件包含各种袋鼠鸮它们是澳大利亚和新西兰的栖息地猫头鹰而右下角的网络集群主要包含在森林中常见的矮小猫头鹰从热带雨林到干旱森林和山区。虽然通过进行这次快速的知识图谱分析我当然没有成为猫头鹰专家。然而我确实比以前学到了更多关于猫头鹰的知识。这也突显了网络分析和知识图谱在如何快速探索任何领域从科学到艺术从商业到人力资源方面的力量通过结合数据处理和可视化并为更高级的分析步骤以及领域专家合作开辟空间。

相关文章:

猫头鹰的秘密网络

原文:towardsdatascience.com/the-secret-network-of-owls-d55e7b2c4910 你知道 8 月 4 日是国际猫头鹰意识日吗?我也不知道,直到无聊地浏览可爱的猫头鹰表情包,这让我来到了这个网站。然后,正如我们最近在我们的花园里…...

终极指南:如何用FFmpeg Batch AV Converter轻松实现批量视频转换

终极指南:如何用FFmpeg Batch AV Converter轻松实现批量视频转换 【免费下载链接】ffmpeg_batch FFmpeg Batch AV Converter 项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg_batch 你是否曾经需要同时处理多个视频文件,却因为复杂的命令行参…...

别再让电机只会转不会停了!L298N驱动模块PWM调速的正确接线姿势(附Arduino代码)

L298N驱动模块PWM调速的深度解析与实战指南 引言 在机器人制作和自动化控制领域,电机驱动是基础却至关重要的环节。L298N作为经典的H桥电机驱动模块,因其稳定性和易用性广受创客和电子爱好者青睐。然而,许多初学者在使用PWM调速功能时&#x…...

51单片机入门实战:用Keil+Proteus做个带蜂鸣器报警的按键计数器(附完整代码)

51单片机实战:从零构建带蜂鸣器报警的按键计数器 项目背景与核心功能 对于刚接触51单片机的开发者来说,独立完成一个小型综合项目往往能带来巨大的成就感。这次我们要实现的是一个结合按键计数、数码管显示和蜂鸣器报警的完整系统。当用户按下按键时&a…...

CARLA与Autoware融合实践:从自定义地图构建到闭环仿真测试

1. 自定义高精地图的构建与格式转换 在自动驾驶仿真开发中,高精地图是车辆感知和决策的基础。CARLA仿真环境提供了灵活的地图编辑工具,但要将自建地图与Autoware无缝对接,需要特别注意数据格式的兼容性。我曾在实际项目中遇到过多次地图导入…...

5种架构模式解析:Awesome-Dify-Workflow的可视化AI工作流技术实现

5种架构模式解析:Awesome-Dify-Workflow的可视化AI工作流技术实现 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Aw…...

iMX8MQ开发板实测:存储、网络与4K解码性能深度解析

1. 项目概述:iMX8MQ开发板深度评测最近拿到了一块飞凌嵌入式出品的OKMX8MQ-C开发板,这是一款基于NXP i.MX 8M Quad处理器设计的核心板底板套件。对于从事嵌入式多媒体、边缘计算或者工业网关开发的朋友来说,i.MX8系列一直是热门选择&#xff…...

从USB2.0到USB3.0:硬件工程师必须知道的电源管理与布线升级要点(含电平转换案例)

从USB2.0到USB3.0:硬件工程师必须掌握的电源管理与布线升级实战指南 在硬件设计领域,接口技术的迭代往往带来性能的飞跃,但同时也伴随着设计复杂度的显著提升。USB3.0作为当前主流的高速接口标准,其传输速率相比USB2.0提升了近10倍…...

范式跃迁·代差引领:时空AI重塑全域空间感知新基准

九大维度技术范式革新——传统UWB硬件局限与镜像视界算力原生体系全维度对标解析纵观全球高精度空间感知、数字孪生与实景时空治理产业发展脉络,行业数十年以来始终依托有源射频硬件、物理信号测距、固定式硬件组网、工程化场景改造的传统技术范式完成迭代落地。以U…...

长波双色InAs/GaSb超晶格红外探测器芯片:从材料设计到焦平面集成

1. 项目概述:从“双色”到“芯片”的技术跨越在红外探测领域,追求“看得更清、看得更远、看得更准”是永恒的主题。我们这次要聊的“长/长波双色InAs/GaSb超晶格焦平面探测器芯片”,听起来名字很长很专业,但它本质上解决的是一个非…...

ASTM D999-08 (2015) 全解析|运输包装容器振动测试标准完整版

前言ASTM D999-08 (2015)《运输集装箱的振动测试》是全球运输包装领域最经典的正弦振动与往复冲击测试标准,覆盖往复冲击振动、单件共振、托盘 / 集合包装共振三大类测试场景,广泛用于评估包装在运输振动环境下的强度与防护能力,同时等效满足…...

别再手动画封装了!用UltraLibrarian和3D ContentCentral搞定AD/Altium Designer的3D模型(附避坑技巧)

高效获取Altium Designer封装与3D模型的终极指南 在PCB设计领域,封装获取一直是工程师们日常工作中最耗时却又必不可少的环节。想象一下,当你正全神贯注于一个复杂的电路设计,突然发现某个关键元器件没有现成的封装可用,不得不停…...

一机多版本Quartus共存?教你修复USB Blaster识别冲突(修改JTAG服务路径详解)

多版本Quartus共存时的USB Blaster识别冲突解决方案 当我们需要在同一台电脑上安装多个版本的Quartus软件时(比如为了兼容不同时期的FPGA项目),经常会遇到一个棘手问题:USB Blaster无法被正确识别。这种情况通常发生在安装了新旧两…...

Linux内核死锁实战:从原理到调试与预防策略

1. 项目概述:当内核代码“卡住”时在Linux内核开发与系统运维的深水区,有一个让所有工程师都闻之色变、却又不得不面对的“幽灵”——死锁。它不像段错误那样直接崩溃,也不像内存泄漏那样缓慢侵蚀,而是以一种近乎“优雅”的静默方…...

Codesys运动学模型选型避坑指南:你的机械手真的适合TRAFO.Kin_ArticulatedRobot_6DOF吗?

Codesys运动学模型选型避坑指南:你的机械手真的适合TRAFO.Kin_ArticulatedRobot_6DOF吗? 在工业自动化领域,机械手的精准控制离不开正确的运动学模型选择。许多开发者在使用Codesys进行机械手控制时,常常陷入一个误区:…...

OBS智能镜头:5分钟实现直播自动对焦,让镜头始终跟随你

OBS智能镜头:5分钟实现直播自动对焦,让镜头始终跟随你 【免费下载链接】obs-face-tracker Face tracking plugin for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-face-tracker 你是否在直播时经常需要手动调整摄像头角度&#…...

用Wave2Lip和GFP-GAN给老电影片段配音:从《秋天不回来》到自定义音频的完整实践

用Wave2Lip和GFP-GAN重塑经典影像:从技术原理到影视级修复实战 当黑白胶片中的玛丽莲梦露突然用AI生成的嘴唇同步唱起Billie Eilish的《Bad Guy》,或是《罗马假日》里的奥黛丽赫本开始用你录制的生日祝福开口说话——这种跨越时空的"数字口技"…...

华硕笔记本终极控制神器:G-Helper轻量化完全指南

华硕笔记本终极控制神器:G-Helper轻量化完全指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertb…...

钠金属负极自校正技术:复合纸基底设计原理与工程实践

1. 项目概述:从“火中取栗”到“驯服烈马”的钠金属负极革新在电池研发领域,金属钠负极一直被视为下一代高能量密度电池的“圣杯”,其理论比容量高达1166 mAh/g,是石墨负极的近三倍,且钠资源储量丰富、成本低廉。然而&…...

别再只写assign了!用三种Verilog建模风格重构你的三人表决器(行为级/数据流/门级)

别再只写assign了!用三种Verilog建模风格重构你的三人表决器 三人表决器是数字电路设计中的经典案例,它能直观展示不同抽象层次的Verilog建模风格如何影响代码质量与硬件实现。很多工程师习惯性地使用assign语句完成所有设计,却忽略了Verilo…...

基于MCP3421高精度ADC的电池电量监测方案设计与实践

1. 项目概述:为什么需要一个专用的电量监测板?在嵌入式开发和物联网设备中,电池供电是常态。无论是手持仪表、无线传感器节点还是便携式医疗设备,准确掌握电池的剩余电量,就像司机需要时刻关注油表一样,是确…...

智能体的真正核心:从“会聊天的大模型”到“会做事的系统”

大模型虽能"理解语言、回答问题、生成内容",但仅停留在对话层面无法构成真正智能体。智能体需具备理解目标、感知状态、拆解任务、选择工具、观察反馈、动态修正等闭环能力。其核心结构包括输入感知、记忆、规划、行动、反馈、评估六模块,形成…...

3步极速配置:LXMusic音源完全指南

3步极速配置:LXMusic音源完全指南 【免费下载链接】LXMusic音源 lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/guoyue2010/lxmusic- 作为全网音乐资源的整合引擎,LXMusic音源为你提供一站式音乐解决方…...

鸿蒙心理测评模块实战|PHQ-9/GAD7双量表答题、实时计分与结果本地化存储

一、前言 心晴驿站已正式稳定上架华为应用市场,所有专栏内容均基于线上真实版本复盘产出,所有逻辑、代码、优化方案均通过真机测试、性能校验、隐私合规审核,具备完整落地与参赛复用价值。 在前八篇专栏中,我们完成了项目整体架构…...

保姆级教程:用YOLOv8和Pyside6从零搭建一个火焰烟雾检测桌面应用(附完整源码和数据集)

从零构建火焰烟雾检测桌面应用:YOLOv8与Pyside6实战指南 在工业安全、家庭监控和实验室防护场景中,火焰与烟雾的早期检测至关重要。传统监控系统依赖人工值守或简单传感器,难以实现精准的实时预警。本文将带你用Python生态中最前沿的YOLOv8目…...

ROS Melodic下用Mapviz+天地图API显示GPS轨迹(保姆级避坑指南)

ROS Melodic下Mapviz与天地图API的高精度GPS轨迹可视化实战 在机器人定位与导航开发中,将GPS轨迹叠加到卫星地图上是验证算法效果的基础需求。对于国内开发者而言,直接使用Google Maps等国际服务常面临访问限制和偏移问题。本文将深入讲解如何在ROS Mel…...

彻底告别iPhone过热降频!thermalmonitordDisabler让你的设备性能满血释放

彻底告别iPhone过热降频!thermalmonitordDisabler让你的设备性能满血释放 【免费下载链接】thermalmonitordDisabler A tool used to disable iOS daemons. 项目地址: https://gitcode.com/gh_mirrors/th/thermalmonitordDisabler 你是否曾经在游戏激战中突然…...

如何快速获取网易云QQ音乐歌词:3大场景解决你的本地音乐无歌词困扰

如何快速获取网易云QQ音乐歌词:3大场景解决你的本地音乐无歌词困扰 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为本地音乐播放时没有歌词而烦恼吗&am…...

查询不准?响应延迟?Perplexity阅读推荐失效全归因,一线SRE团队72小时压测实录

更多请点击: https://intelliparadigm.com 第一章:查询不准?响应延迟?Perplexity阅读推荐失效全归因,一线SRE团队72小时压测实录 问题爆发现场还原 凌晨2:17,Perplexity阅读推荐API的P99延迟突增至8.4s&a…...

联想笔记本BIOS隐藏设置解锁工具:专业指南与深度解析

联想笔记本BIOS隐藏设置解锁工具:专业指南与深度解析 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/le…...