python - 计算矩阵中的距离 Pandas Python

标签 python pandas scipy

尝试计算大矩阵的 PIL 逊系数(例如 300000x12000)

所以我接下来要做的是:

导入库:

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 个小时,但仍然在计算。还有另一种可能性吗?

提前致谢,我会欣赏您的想法!

最佳答案

你不能只使用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

关于python - 计算矩阵中的距离 Pandas Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36343456/

相关文章:

python - Raspberry Pi 通过 XRF 连续传感器监控与 Arduino 连接

python - 如何将没有双引号元素的列表的字符串表示形式转换为实际列表?

python - 在 Pandas 中将月份从数字重命名为名称

python - 为什么 scipy.linalg.lu() 不返回与 scipy.sparse.linalg.splu() 相同的 L 矩阵?

python - scipy.interpolate.griddata 和 scipy.interpolate.Rbf 之间的区别

python - scipy——如何从列表中随机提取数组

Python - isnull().sum() 与 isnull().count()

python - Python 中的分层 K 折叠

python:从beautifulsoup读取数据并排列在pandas dataframe中

python - 用于分隔 Excel 工作表的多个数据框列表