【问题标题】:How to plot a weighted graph of k-Neighbors in Python如何在 Python 中绘制 k-邻居的加权图
【发布时间】:2018-12-27 07:46:24
【问题描述】:

我已经使用scikit-learn 创建了一个 k-Neighbors 加权图,我想知道是否有任何方法可以将其绘制为图。

这是我要绘制的数组形式的计算结果:

array([[0.        , 2.08243189, 0.        , 3.42661108],
       [2.08243189, 0.        , 3.27141008, 0.        ],
       [0.        , 3.27141008, 0.        , 1.57294787],
       [0.        , 3.29779083, 1.57294787, 0.        ]])

我只需要获得一些数据的可视化,这就是我所需要的。


有关数组的更多详细信息:

每一行代表一个节点,每一列代表该节点与其他节点的连接权重。

例如:第一行的第二列(2.08243189)是第一个节点到第二个节点的连通性权重。
另一个例子:第二行第二列(0):从节点2到自身的连接权重。

数字代表欧式距离。

【问题讨论】:

  • 添加有关此数组的更多详细信息。行和列代表什么?
  • 每一行代表一个节点,每一列代表与其他节点的连接权重。例如:第一行的第二列是第一个节点到第二个节点的连接权重。另一个例子:第二行第二列:从节点2到自身的连接权重。
  • 在这种情况下,数字(权重)是什么意思?它们是否代表节点之间的距离、相似性或接近度。例如,为什么节点 1 和 2 的权重是 2.08,而节点 1 和 4 的权重是 3.42
  • 绘制相似度/距离矩阵的最简单方法通常是使用 PCA 将其推入 2D,然后绘制。
  • @VivekKumar 这是欧几里得距离...

标签: python python-3.x matplotlib scikit-learn


【解决方案1】:

您是否在谈论像这样简单的事情,其中​​点的大小可以直观地指示与其他值相比的相对权重?假设数组名为 ar:

for i in range(len(ar)):
    for j in range(len(ar)):
        v = ar[i,j]        
        plt.scatter(i+1,j+1,lw=0,s=10**v)
        plt.grid(True)
        plt.xlabel('Row')
        plt.ylabel('Column')
        ticks = list(range(1,1+len(ar)))
        plt.xticks(ticks)
        plt.yticks(ticks)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2013-08-11
    相关资源
    最近更新 更多