AttributeError: exp not found
AttributeError: exp not found
n=sc.shape(A)[0]
sim=sc.eye(n)
I=sc.eye(n)
P= normalize(A, norm='l1', axis=0)
Q=P*(1-np.exp(-A))
A 是由代码创建的邻接矩阵:
df=pd.read_csv('training.csv')
G=nx.from_pandas_dataframe(df,'node1','node2','weight')
A = nx.adjacency_matrix(G)
我遇到的错误:
File "ROC_final.py", line 36, in ASCOSplus
Q=P*(1-np.exp(-A))
File "C:\Python27\lib\site-packages\scipy\sparse\base.py", line 647, in __getattr__
raise AttributeError(attr + " not found")
AttributeError: exp not found
注意:我也按照 SO answer 的建议尝试了解决方案 A= A.astype(float)。
A
是一个 scipy 稀疏矩阵。这样的矩阵没有实现 exp
函数,因为这会将所有的 0 都转换为 1,从而导致矩阵密集。
要使用稀疏矩阵进行计算,您可以将 1 - np.exp(-A)
写成 -(np.exp(-A) - 1) = -np.expm1(-A)
。即替换
Q=P*(1-np.exp(-A))
和
Q = -P*np.expm1(-A)
expm1(x)
等同于 exp(x) - 1
。该函数将零映射到零,因此它是一个 "safe" 稀疏矩阵的逐元素函数。
scipy 稀疏矩阵有一个 expm1()
方法(np.expm1
最终调用),因此您也可以将该行写为
Q = P*(-A).expm1()
n=sc.shape(A)[0]
sim=sc.eye(n)
I=sc.eye(n)
P= normalize(A, norm='l1', axis=0)
Q=P*(1-np.exp(-A))
A 是由代码创建的邻接矩阵:
df=pd.read_csv('training.csv')
G=nx.from_pandas_dataframe(df,'node1','node2','weight')
A = nx.adjacency_matrix(G)
我遇到的错误:
File "ROC_final.py", line 36, in ASCOSplus
Q=P*(1-np.exp(-A))
File "C:\Python27\lib\site-packages\scipy\sparse\base.py", line 647, in __getattr__
raise AttributeError(attr + " not found")
AttributeError: exp not found
注意:我也按照 SO answer 的建议尝试了解决方案 A= A.astype(float)。
A
是一个 scipy 稀疏矩阵。这样的矩阵没有实现 exp
函数,因为这会将所有的 0 都转换为 1,从而导致矩阵密集。
要使用稀疏矩阵进行计算,您可以将 1 - np.exp(-A)
写成 -(np.exp(-A) - 1) = -np.expm1(-A)
。即替换
Q=P*(1-np.exp(-A))
和
Q = -P*np.expm1(-A)
expm1(x)
等同于 exp(x) - 1
。该函数将零映射到零,因此它是一个 "safe" 稀疏矩阵的逐元素函数。
scipy 稀疏矩阵有一个 expm1()
方法(np.expm1
最终调用),因此您也可以将该行写为
Q = P*(-A).expm1()