Python中实现多变量对单一变量的相关系数计算方法咨询
实现多变量对单变量的相关系数计算
方法一:使用Pandas的corr()方法(最简便)
Pandas DataFrame自带的corr()方法会生成全变量的相关系数矩阵,只需提取目标单变量与指定多变量的对应值即可:
import pandas as pd # 构造示例数据 data = { 'A': [1,5,3], 'B': [8,9,0], 'C': [6,5,1], 'D': [0,3,2] } df = pd.DataFrame(data) # 计算A、C与D的相关系数 corr_with_D = df.corr()['D'][['A', 'C']] print(corr_with_D) # 计算B、C、D与A的相关系数 corr_with_A = df.corr()['A'][['B', 'C', 'D']] print(corr_with_A)
方法二:使用Numpy的corrcoef()
Numpy的corrcoef()返回全相关矩阵,通过索引提取目标部分即可。注意设置rowvar=False,表示每一列对应一个变量:
import numpy as np # 提取A、C、D列的数据 target_data = df[['A', 'C', 'D']].values # 生成相关系数矩阵 corr_matrix = np.corrcoef(target_data, rowvar=False) # 提取D(第三列,索引2)与A、C的相关系数 corr_AD_CD = corr_matrix[2, :2] print("A与D的相关系数:", corr_AD_CD[0]) print("C与D的相关系数:", corr_AD_CD[1])
关于TensorFlow/Keras的使用
完全没必要用TensorFlow或Keras处理这类需求——Pandas和Numpy已经提供了轻量、高效的原生解决方案。如果项目深度依赖TF生态,可手动通过协方差与标准差的比值实现,但属于冗余操作:
import tensorflow as tf # 转为Tensor格式 A = tf.convert_to_tensor(df['A'], dtype=tf.float32) C = tf.convert_to_tensor(df['C'], dtype=tf.float32) D = tf.convert_to_tensor(df['D'], dtype=tf.float32) # 计算A与D的相关系数 cov_AD = tf.reduce_mean((A - tf.reduce_mean(A)) * (D - tf.reduce_mean(D))) corr_AD = cov_AD / (tf.math.reduce_std(A) * tf.math.reduce_std(D)) # 计算C与D的相关系数 cov_CD = tf.reduce_mean((C - tf.reduce_mean(C)) * (D - tf.reduce_mean(D))) corr_CD = cov_CD / (tf.math.reduce_std(C) * tf.math.reduce_std(D)) print("A与D的相关系数(TF版):", corr_AD.numpy()) print("C与D的相关系数(TF版):", corr_CD.numpy())
内容的提问来源于stack exchange,提问作者Michal
相关产品推荐
相关产品推荐

