作者合作网络的权重 如何用公式编写?

我已经把每个作者在每篇文章中的贡献值算出来了,怎么算两两合作的权重呀?

img


img

import numpy as np

假设有一个表示作者合作网络的邻接矩阵 adjacency_matrix

计算每个作者的出度(即合作次数)

out_degree = np.sum(adjacency_matrix, axis=1)

计算每个作者的入度(即被合作次数)

in_degree = np.sum(adjacency_matrix, axis=0)

计算每个作者的合作网络权重

coauthorship_weight = out_degree + in_degree

将合作网络权重保存在一个字典中,其中键为作者的索引,值为对应作者的合作网络权重

author_weights = {i: coauthorship_weight[i] for i in range(len(coauthorship_weight))}

在一个作者合作网络中,每个作者与其他作者之间的合作关系可以表示为一个图形,其中每个作者都是一个节点,每个合作关系则是一条边。可以使用以下公式来计算每个节点(即每个作者)在合作网络中的权重:

w(i) = α * deg(i) + (1-α) * sum(w(j)/deg(j))

其中,w(i) 表示节点 i 的权重,deg(i) 表示节点 i 的度数(即与其相连的边的数量),w(j) 表示与节点 i 相连的节点 j 的权重,deg(j) 表示节点 j 的度数。α 是一个调整参数,用于平衡节点的度数和与其相连的节点的权重之间的影响。在这个公式中,度数越大的节点会得到更高的权重,与其相连的节点的权重也会对该节点的权重产生影响,同时调整参数 α 可以影响节点度数和相邻节点权重之间的平衡。

以下内容部分参考ChatGPT模型:


根据提供的信息,可以用以下公式计算两个作者之间的合作权重:

合作权重 = ∑(i=1 to n) min(贡献值A_i, 贡献值B_i)

其中,n是两个作者共同发表的文章数,贡献值A_i和贡献值B_i分别是两个作者在第i篇文章中的贡献值。

下面是一个Python代码示例,假设已经有了一个包含每个作者在每篇文章中贡献值的字典author_contributions,其中键是作者名字,值是一个列表,列表中每个元素是该作者在对应文章中的贡献值:

def calc_collaboration_weight(author1, author2, author_contributions):
    common_articles = set(author_contributions[author1].keys()) & set(author_contributions[author2].keys())
    weight = 0
    for article in common_articles:
        weight += sum(min(author_contributions[author1][article][i], author_contributions[author2][article][i]) for i in range(len(author_contributions[author1][article])))
    return weight

这个函数接受三个参数:两个作者的名字author1和author2,以及包含贡献值的字典author_contributions。函数首先找到两个作者共同发表的文章,然后对于每篇文章,计算两个作者在该文章中的合作权重并累加到weight中。最后返回weight作为两个作者的合作权重。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/766951
  • 你也可以参考下这篇文章:【数学】三维向量绕任意轴的旋转公式
  • 除此之外, 这篇博客: 矩阵特征值问题的数值解法中的 公式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 构造向量序列
    X(0),X(1)=AX(0),⋯ ,X(n)=AX(n−1) X^{(0)},X^{(1)}=AX^{(0)},\cdots,X^{(n)}=AX^{(n-1)} X(0),X(1)=AX(0),,X(n)=AX(n1)
    AAA为代求矩阵,X(0)X^{(0)}X(0)为任意非零向量向量

    主特征值λ1\lambda_1λ1满足规律
    λ1≈X(k+1)x(k)⇒λ1≈xi(k+1)xi(k) \lambda_1\approx\frac{X^{(k+1)}}{x^{(k)}}\Rightarrow\lambda_1\approx\frac{x_i^{(k+1)}}{x_i^{(k)}} λ1x(k)X(k+1)λ1xi(k)xi(k+1)
    实际计算公式
    {Y(k)=X(k)∣∣X(k)∣∣∞X(k+1)=A∗Y(k)k=0,1,2,⋯ \left\{ \begin{aligned} Y^{(k)}=\frac{X^{(k)}}{||X^{(k)}||_\infty}\\ X^{(k+1)}=A*Y^{(k)} \end{aligned} \right . \quad k=0,1,2,\cdots Y(k)=X(k)X(k)X(k+1)=AY(k)k=0,1,2,
    当k充分大的时候有,特征值λ1\lambda_1λ1和特征向量VVV分别等于
    {∣λ1∣=max⁡1≤1≤n∣xi(k)∣V1=Y(k) \left\{ \begin{aligned} |\lambda_1|=\max_{1\leq{1}\leq{n}}|x_i^{(k)}|\\ V_1=Y^{(k)} \end{aligned} \right . λ1=11nmaxxi(k)V1=Y(k)
    Y(k)Y^{(k)}Y(k) 是将X(k)X^{(k)}X(k)进行归一化处理后的结果

  • 您还可以看一下 包仔神探老师的公交查询系统课程中的 公交查询系统的换乘算法及分页实现小节, 巩固相关知识点

该回答引用ChatGPT GPT-4

运行结果

img

代码

def cooperation_weight(alpha, beta, gamma, w_ia, w_ib, w_ic):
    """
    计算两个作者在三个方面的合作权重。

    参数:
    alpha -- 期刊论文方面的权重
    beta -- 科研项目方面的权重
    gamma -- 专利合作方面的权重
    w_ia -- 作者 i 和作者 j 在期刊论文合作方面的合作强度
    w_ib -- 作者 i 和作者 j 在科研项目合作方面的合作强度
    w_ic -- 作者 i 和作者 j 在专利合作方面的合作强度

    返回:
    合作权重
    """
    weight = alpha * w_ia + beta * w_ib + gamma * w_ic
    return weight

# 示例
alpha = 0.5
beta = 0.3
gamma = 0.2
w_ia = 10
w_ib = 5
w_ic = 3

cooperation_weight_value = cooperation_weight(alpha, beta, gamma, w_ia, w_ib, w_ic)
print(f"两个作者在三个方面的合作权重: {cooperation_weight_value}")