【问题标题】:Python - Variable correlation with formulaPython - 与公式的变量相关性
【发布时间】:2017-09-01 14:50:18
【问题描述】:

我正在处理一个包含 150 个观察值和 1500 个变量的光谱医学数据数组,存储如下(所有这些数据都是浮点数):

blood = ([[sample1_var1..., sample1_var1500],[sample2_var1..., sample2_var1500]..., [sample_150_var1..., sample150_var1500]])

我想获得每个变量与存储在 150 个观察值列表中的另一个变量之间的相关系数,例如:

 ery = ([1.524, 1.987..., 1.369])

我需要获得var1ery之间的'r'相关系数,然后是var2ery。等等。有没有一种简单的方法可以做到这一点(也许使用 for 循环)?

【问题讨论】:

  • 但如果你想获得 1500 个变量之间的成对相关性,不是 1500x1500 的值吗?

标签: python arrays pandas variables correlation


【解决方案1】:

我对你的问题的理解是:

  • blood 有 1500 个变量和 150 个观察值
  • ery 是一个 1d 数组/列表(实际上,您在问题中将其作为 1 元素元组)
  • 您想找到 1500 个相关性(blood 中每个变量与向量 ery 的相关性)

使用 pandas 和 NumPy:

import pandas as pd
import numpy as np
np.random.seed(123)

blood = pd.DataFrame(np.random.rand(150,1500)).add_prefix('var')
# blood.shape = (150, 1500)
ery = pd.Series(np.random.rand(150))
print(blood.corrwith(ery))
var0      -0.12897
var1      -0.16448
var2       0.02315
var3      -0.09275
var4      -0.00337
var5       0.00094
var6      -0.13884
var7      -0.04296
var8       0.11895
var9       0.01626
var10      0.04122
var11     -0.04241

var1488    0.12936
var1489   -0.14607
var1490    0.14229
var1491    0.06072
var1492   -0.00815
var1493    0.03401
var1494   -0.00994
var1495   -0.10997
var1496    0.05980
var1497   -0.00930
var1498    0.05205
var1499   -0.11258
dtype: float64

疑难解答:它有助于指定您在问题中使用的数据结构。你现在拥有事物的方式是模棱两可的。如果ery 是一个列表,则需要blood.corrwith(pd.Series(ery))

【讨论】:

    猜你喜欢
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2018-01-17
    • 2020-10-24
    • 2018-03-10
    • 2013-08-29
    相关资源
    最近更新 更多