特征相关性计较

Pearson相关系数

用于度量两个连续型变量之间的线性关系。取值范围在-1到1之间,0表示无线性关系,1表示完全正相关,-1表示完全负相关
在这里插入图片描述

import pandas as pd

# 创建一个包含两个连续型变量的DataFrame
data = {'Variable1': [1, 2, 3, 4, 5],
        'Variable2': [2, 3, 4, 5, 6]}
df = pd.DataFrame(data)

# 计算Pearson相关系数
pearson_corr = df['Variable1'].corr(df['Variable2'])
print(f"Pearson Correlation Coefficient: {pearson_corr}")

Spearman秩相关系数

Spearman秩相关系数是用于度量两个变量之间的单调关系的非参数统计量。与Pearson相关系数不同,Spearman秩相关系数不要求变量之间的关系是线性的,它测量的是变量的等级之间的关系。这使得Spearman相关系数对于非线性关系的探测更为敏感。
在这里插入图片描述

from scipy.stats import spearmanr

# 创建一个包含两个连续型变量的DataFrame
data = {'Variable1': [1, 2, 3, 4, 5],
        'Variable2': [2, 3, 4, 5, 6]}
df = pd.DataFrame(data)

# 计算Spearman秩相关系数
spearman_corr, p_value = spearmanr(df['Variable1'], df['Variable2'])
print(f"Spearman Rank Correlation Coefficient: {spearman_corr}")

Kendall秩相关系数

Kendall秩相关系数(Kendall’s Tau)是一种用于度量两个变量之间等级关系的非参数统计量。它对于数据中存在的并非线性关系的情况特别有用。Kendall秩相关系数考虑的是两个变量之间的“协同变动”的数量,即它测量两个变量的秩次之间的一致性
在这里插入图片描述

from scipy.stats import kendalltau

# 创建一个包含两个连续型变量的DataFrame
data = {'Variable1': [1, 2, 3, 4, 5],
        'Variable2': [2, 3, 4, 5, 6]}
df = pd.DataFrame(data)

# 计算Kendall秩相关系数
kendall_corr, p_value = kendalltau(df['Variable1'], df['Variable2'])
print(f"Kendall's Tau Correlation Coefficient: {kendall_corr}")

Cramér’s V

Cramér’s V 是一种用于度量两个分类变量之间关联程度的统计量。它是基于卡方检验的结果计算而得,可以用于判断两个分类变量是否存在关联,以及关联的强度

在这里插入图片描述

from scipy.stats import chi2_contingency

# 创建一个包含两个分类变量的DataFrame
data = {'Variable1': ['A', 'B', 'A', 'B', 'A'],
        'Variable2': ['X', 'Y', 'X', 'Y', 'X']}
df = pd.DataFrame(data)

# 构建列联表
contingency_table = pd.crosstab(df['Variable1'], df['Variable2'])

# 进行卡方检验并计算 Cramér's V
chi2, _, _, _ = chi2_contingency(contingency_table)
n = df.shape[0]
k = contingency_table.shape[0]
r = contingency_table.shape[1]
cramers_v = np.sqrt(chi2 / (n * min(k-1, r-1)))

print(f"Cramér's V: {cramers_v}")

Pointwise Mutual Information(点互信息

Pointwise Mutual Information (PMI) 是一种用于衡量两个事件之间关联性的统计度量。它经常在自然语言处理(NLP)领域中用于词语之间的关联性分析,但也可以应用于其他领域

在这里插入图片描述

import numpy as np

def calculate_pmi(p_ab, p_a, p_b):
    return np.log2(p_ab / (p_a * p_b))

# 示例:假设单词 "cat" 和 "dog" 同时出现的概率为 0.01,单独出现的概率分别为 0.05 和 0.1
p_ab = 0.01
p_a = 0.05
p_b = 0.1

pmi_value = calculate_pmi(p_ab, p_a, p_b)
print(f"PMI('cat', 'dog'): {pmi_value}")

熵相关度

在信息论中,“熵”(Entropy)通常用于衡量一个系统的混乱程度或不确定性。而 “熵相关度” 这一术语并没有明确的定义,可能指的是一种使用熵来衡量两个变量之间关系的概念。
在这里插入图片描述

互信息

互信息(Mutual Information)用于衡量两个随机变量之间的相关性。

在这里插入图片描述

from scipy.stats import entropy

# 示例数据
# 假设X和Y是两个离散随机变量
# 这里只是为了演示,实际使用时需要根据具体情况提供相应的概率分布
p_xy = np.array([[0.1, 0.2], [0.3, 0.4]])  # 联合概率分布
p_y = np.sum(p_xy, axis=0)  # Y的边缘概率分布

# 计算条件熵 H(X|Y)
h_x_given_y = entropy(p_xy, base=2, axis=0, keepdims=True) - np.log2(p_y)

# 计算互信息 I(X;Y)
h_x_y = entropy(p_xy, base=2, axis=None)  # 联合熵
i_x_y = h_x_y - np.sum(h_x_given_y * p_y)

print(f"条件熵 H(X|Y): {h_x_given_y}")
print(f"互信息 I(X;Y): {i_x_y}")

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值