python协方差阵转为相关阵_python – 如何将相关列表转换为协方差矩阵?

假设该表名为df,第一列标记为A,第二列为B,相关值标记为Correlation:

df2 = df.pivot(index='A', columns='B', values='Correlation')

>>> df2

B 1 2 3 4 5

A

2 -0.0798 NaN NaN NaN NaN

3 0.3580 -0.406 NaN NaN NaN

4 0.2880 -0.129 0.157 NaN NaN

5 -0.0756 0.479 -0.378 -0.265 NaN

6 0.0909 -0.364 0.482 0.293 -0.74

要将其转换为对角线中的对称方形矩阵:

# Get a unique list of all items in rows and columns.

items = list(df2)

items.extend(list(df2.index))

items = list(set(items))

# Create square symmetric correlation matrix

corr = df2.values.tolist()

corr.insert(0, [np.nan] * len(corr))

corr = pd.DataFrame(corr)

corr[len(corr) - 1] = [np.nan] * len(corr)

for i in range(len(corr)):

corr.iat[i, i] = 1. # Set diagonal to 1.00

corr.iloc[i, i:] = corr.iloc[i:, i].values # Flip matrix.

# Rename rows and columns.

corr.index = items

corr.columns = items

>>> corr

1 2 3 4 5 6

1 1.0000 -0.0798 0.358 0.288 -0.0756 0.0909

2 -0.0798 1.0000 -0.406 -0.129 0.4790 -0.3640

3 0.3580 -0.4060 1.000 0.157 -0.3780 0.4820

4 0.2880 -0.1290 0.157 1.000 -0.2650 0.2930

5 -0.0756 0.4790 -0.378 -0.265 1.0000 -0.7400

6 0.0909 -0.3640 0.482 0.293 -0.7400 1.0000

如果std dev数据尚未以矩阵形式存在,请执行相同的步骤.

假设此矩阵名为df_std,那么您可以获得协方差矩阵,如下所示:

df_cov = corr.multiply(df_std.multiply(df_std.T.values))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值