尝试计算大矩阵(例如300000x12000)的Pearson系数
所以我接下来要做的事情:
导入库:
import pandas as pd
from scipy.spatial.distance import cosine
from scipy.stats.stats import pearsonr
使用pd.get_dummies执行虚拟表:
table=pd.get_dummies(data['word'])
使用DataFrame创建空矩阵:
data_ibs = pd.DataFrame(index=table.columns,columns=table.columns)
然后使用矩阵的for循环计算pearsonr:
for i in range(0,len(data_ibs.columns)) :
for j in range(0,len(data_ibs.columns)) :
data_ibs.ix[i,j] = pearsonr(table.ix[:,i],table.ix[:,j]) [0]
它有效但 waaay 减慢 - 它工作了4个小时仍然计算。还有其他可能吗?
提前致谢,我们会感激您的想法!
答案 0 :(得分:1)
你不能只使用corr
,它使用pearson作为默认方法:
table.corr()
例如:
np.random.seed(0)
>>> pd.DataFrame(np.random.randn(5, 5)).corr()
0 1 2 3 4
0 1.000000 0.029861 0.077225 0.905577 -0.254004
1 0.029861 1.000000 -0.548770 -0.394760 -0.868972
2 0.077225 -0.548770 1.000000 0.297952 0.819027
3 0.905577 -0.394760 0.297952 1.000000 0.129641
4 -0.254004 -0.868972 0.819027 0.129641 1.000000