Matlab(24 x 121)およびラベルファイル(1x 24)で生成された信号の行列を持っています。 ラベルMatlabで生成されたラベル付きの行列からのPythonグラフ
[array(['1-2'],
dtype='<U3') array(['1-3'],
dtype='<U3')
array(['1-4'],
dtype='<U3') array(['2-2'],
dtype='<U3')
array(['2-3'],
dtype='<U3') array(['2-4'],
dtype='<U3')
array(['49-2'],
dtype='<U4') array(['49-3'],
dtype='<U4')
array(['49-4'],
dtype='<U4') array(['50-2'],
dtype='<U4')
array(['50-3'],
dtype='<U4') array(['50-4'],
dtype='<U4')
array(['51-2'],
dtype='<U4') array(['51-3'],
dtype='<U4')
array(['51-4'],
dtype='<U4') array(['52-2'],
dtype='<U4')
array(['52-3'],
dtype='<U4') array(['52-4'],
dtype='<U4')
array(['53-2'],
dtype='<U4') array(['53-3'],
dtype='<U4')
array(['53-4'],
dtype='<U4') array(['54-2'],
dtype='<U4')
array(['54-3'],
dtype='<U4') array(['54-4'],
dtype='<U4')]
とX
[[ 1.31973026 1.04553767 0.98759242 ..., 0.87344433 0.8734996
0.88148139]
[ 1.54466891 1.50167134 1.43233076 ..., 0.71953425 0.72355352
0.76595696]
[ 0.26974139 0.27669694 0.26486576 ..., 0.86765017 0.84838513
0.83147331]
...,
[ 1.28762992 1.21298643 1.08822084 ..., 0.81903216 0.7559759
0.62566092]
[ 0.96190193 0.97199575 0.93630357 ..., 0.88570213 0.78969704
0.69140163]
[ 1.70054223 1.6876721 1.66986342 ..., 0.90825585 0.92562056
0.93568893]]
私はそれが重量> 0.7であれば、分岐を表示1相関対策の類似性に基づいてグラフを描画し、しないようにしたい:私はそれをロードした後、それがあります。私が使用しているコードは次のとおりです。
import scipy.io
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm # Large set of colormaps
import pandas as pd
from scipy.cluster import hierarchy
from sklearn import datasets
from sklearn import metrics
from sklearn import cluster
from scipy.spatial.distance import pdist
import networkx as nx
from matplotlib import pyplot as plt
import pylab
import networkx as nx
from matplotlib import pyplot as plt
o1 = scipy.io.loadmat('out.mat')
X=(o1['out'])
print(X)
o1 = scipy.io.loadmat('labels.mat')
labels=o1['labels']
labels = labels[0]
print(labels)
corr=1-np.corrcoef(X)
print(corr)
m, n = np.shape(corr)
G = nx.Graph()
corr[np.where(corr>0.7)]=0
for i in range(m):
for j in range(n):
s=labels[i]
b=labels[j]
w=corr[i,j]
G.add_edge(s,b,weight=w)
nx.draw(G)
plt.show()
私は問題が何であるかを把握することはできませんエラー
Traceback (most recent call last): File "C:/Users/Kristina/Desktop/NOBS/source/grafovi.py", line 36, in G.add_edge(s,b,weight=w) File "C:\Python34\lib\site-packages\networkx\classes\graph.py", line 706, in add_edge if u not in self.node: TypeError: unhashable type: 'numpy.ndarray'
を取得します。
array(['51-3'],dtype='<U4')
あなたがGraph.add_node
を呼び出し、それexpects something like this:
おそらくsとbはリストで、 'G.add_edge'は何か他のもの(例えばタプル)を望んでいるかもしれません。リストはハッシュできません。すべての不変オブジェクトはハッシュ可能(typleなど)です。 https://docs.python.org/3/glossary.htmlを参照して、 'hashable'を検索します。' G.add_edge'が辞書を作成し、sとbのどちらかをキーとして使用する場合、ハッシュ可能でなければなりません。 – Moritz