logo网站设计,成都旅游景点攻略,seo公司哪家好用,潍坊小企业网站建设#x1f3af;要点
#x1f3af; 数学模型邻接矩阵及其相关的转移概率 | #x1f3af;蒙特卡罗模拟进化动力学 | #x1f3af;细胞进化交叉图族概率 | #x1f3af;进化图模型及其数学因子 | #x1f3af;混合图模式对进化概率的影响 | #x1f3af;造血干细胞群体的空间…要点 数学模型邻接矩阵及其相关的转移概率 | 蒙特卡罗模拟进化动力学 | 细胞进化交叉图族概率 | 进化图模型及其数学因子 | 混合图模式对进化概率的影响 | 造血干细胞群体的空间图结构
网络结构模型用例
Python社群纽带关系谱和图神经
Python元胞自动机沙堆糖景堵塞模型图学习
Python竞技比赛流体动力学艺术品和药物质量图学习
Python图数据
我们经常使用表格来概括地表示信息。但图形使用专门的数据结构节点代表一个元素而不是表行。边连接两个节点以指示它们的关系。这种图数据结构使我们能够从独特的角度观察数据这就是为什么图数据科学被应用于从分子生物学到社会科学的各个领域。
创建一个图很简单
import networkx as nx
G nx.Graph()但 G 还不是一个图它没有节点和边。
我们可以通过将 Graph() 的返回值与 .add_node() 链接在一起或对于列表中的多个节点使用 .add_nodes_from()来将节点添加到网络。我们还可以通过传递字典作为参数来向节点添加任意特征或属性如节点 4 和节点 5 所示
G.add_node(node 1)
G.add_nodes_from([node 2, node 3])
G.add_nodes_from([(node 4, {abc: 123}), (node 5, {abc: 0})])
print(G.nodes)
print(G.nodes[node 4][abc]) # accessed like a dictionary输出
[node 1, node 2, node 3, node 4, node 5]
123与节点技术类似我们可以使用 .add_edge() 并将两个节点的名称作为参数或 .add_edges_from() 用于列表中的多个边并且可以选择包含属性字典
G.add_edge(node 1, node 2)
G.add_edge(node 1, node 6)
G.add_edges_from([(node 1, node 3), (node 3, node 4)])
G.add_edges_from([(node 1, node 5, {weight : 3}), (node 2, node 4, {weight : 5})])NetworkX 库支持此类图其中每条边可以具有权重。例如在社交网络图中节点是用户边是交互权重可以表示给定一对用户之间发生了多少次交互 - 这是一个高度相关的指标。
NetworkX 使用 G.edges 时会列出所有边但不包括它们的属性。如果我们想要边属性我们可以使用 G[node_name] 获取连接到节点的所有内容或使用G[node_name][connected_node_name]获取特定边的属性
print(G.nodes)
print(G.edges)
print(G[node 1])
print(G[node 1][node 5])输出
[node 1, node 2, node 3, node 4, node 5, node 6]
[(node 1, node 2), (node 1, node 6), (node 1, node 3), (node 1, node 5), (node 2, node 4), (node 3, node 4)]
{node 2: {}, node 6: {}, node 3: {}, node 5: {weight: 3}}
{weight: 3}星球大战角色图
首先我们将使用 nx.draw(G_starWars, with_labels True) 可视化数据通常一起出现的角色如 R2-D2 和 C-3PO看起来联系紧密。相比之下我们可以看到达斯·维德并没有与欧文分享场景。
NetworkX 还有其他布局使用不同的标准来定位节点例如circular_layout
pos nx.circular_layout(G_starWars)
nx.draw(G_starWars, pospos, with_labels True)这种布局是中性的因为节点的位置不取决于其重要性 - 所有节点都平等表示。圆形布局还可以帮助可视化单独的连通分量 - 子图在任意两个节点之间都有路径 - 但在这里整个图是一个大的连通分量。
我们看到的两种布局都有一定程度的视觉混乱因为边缘可以自由地交叉其他边缘。但Kamada-Kawai另一种力导向算法如 spring_layout它定位节点以最小化系统能量。这减少了边缘交叉但代价是它比其他布局慢因此不强烈推荐用于具有许多节点的图形。
这个有一个专门的绘图函数
nx.draw_kamada_kawai(G_starWars, with_labels True)在没有任何特殊干预的情况下算法将主要角色如卢克、莱娅和 C-3PO放在中心而不太突出的角色如卡米和多多娜将军放在边界。
使用特定布局可视化图表可以给我们一些有趣的定性结果。尽管如此定量结果仍然是任何数据科学分析的重要组成部分因此我们需要定义一些指标。
现在我们可以清楚地可视化我们的网络我们可能会对表征节点感兴趣。有多种度量来描述节点的特征在我们的示例中描述角色的特征。节点的一个基本指标是它的度它有多少条边。星球大战角色的节点度衡量了他们与多少个其他角色共享一个场景。
Degree() 函数可以计算一个字符或整个网络的度数
print(G_starWars.degree[LUKE])
print(G_starWars.degree)输出
15
[(R2-D2, 9), (CHEWBACCA, 6), (C-3PO, 10), (LUKE, 15), (DARTH VADER, 4), (CAMIE, 2), (BIGGS, 8), (LEIA, 12), (BERU, 5), (OWEN, 4), (OBI-WAN, 7), (MOTTI, 3), (TARKIN, 3), (HAN, 6), (DODONNA, 3), (GOLD LEADER, 5), (WEDGE, 5), (RED LEADER, 7), (RED TEN, 2)]根据度数从最高到最低对节点进行排序可以用一行代码完成
print(sorted(G_starWars.degree, keylambda x: x[1], reverseTrue))输出
[(LUKE, 15), (LEIA, 12), (C-3PO, 10), (R2-D2, 9), (BIGGS, 8), (OBI-WAN, 7), (RED LEADER, 7), (CHEWBACCA, 6), (HAN, 6), (BERU, 5), (GOLD LEADER, 5), (WEDGE, 5), (DARTH VADER, 4), (OWEN, 4), (MOTTI, 3), (TARKIN, 3), (DODONNA, 3), (CAMIE, 2), (RED TEN, 2)]参阅、更新计算思维 | 亚图跨际