Python AttributeError:未找到exp

Python AttributeError:未找到exp,python,numpy,scipy,networkx,exponential,Python,Numpy,Scipy,Networkx,Exponential,A是由代码创建的邻接矩阵: 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)) 我得到的错误是: df=pd.read_csv('training.csv') G=nx.from_pandas_dataframe(df,'node1',

A是由代码创建的邻接矩阵:

    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))
我得到的错误是:

df=pd.read_csv('training.csv')
G=nx.from_pandas_dataframe(df,'node1','node2','weight')

A = nx.adjacency_matrix(G)

注意:我也尝试了SO答案建议的解决方案A=A.aType(float)。

A
是一个scipy稀疏矩阵。这样的矩阵不实现
exp
函数,因为这会将所有0转换为1,从而导致密集的矩阵

要使用稀疏矩阵进行计算,可以将
1-np.exp(-a)
写成
-(np.exp(-a)-1)=-np.expm1(-a)
。即更换

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

相当于exp(x)-1。该函数将零映射到零,因此它是稀疏矩阵的“安全”元素函数

scipy稀疏矩阵有一个
expm1()
方法(它最终调用了
np.expm1
),因此您也可以将该行写成

Q = -P*np.expm1(-A)

A
是一个稀疏矩阵。这样的矩阵不实现
exp
函数,因为这会将所有0转换为1,从而导致密集的矩阵

要使用稀疏矩阵进行计算,可以将
1-np.exp(-a)
写成
-(np.exp(-a)-1)=-np.expm1(-a)
。即更换

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

相当于exp(x)-1。该函数将零映射到零,因此它是稀疏矩阵的“安全”元素函数

scipy稀疏矩阵有一个
expm1()
方法(它最终调用了
np.expm1
),因此您也可以将该行写成

Q = -P*np.expm1(-A)