Pandas中整数与布尔值的相关性分析及Pearson系数合理性探讨
计算价格与布尔特征的相关性及Pearson系数的合理性
嘿,这个问题问得很实际,我来帮你理清楚这两个关键点:
一、如何计算price与每个布尔特征的相关性
在Pandas里,布尔值会自动被映射为1(True)和0(False),所以计算相关性的操作非常直接,用你提到的df.corr()就能搞定,也可以单独针对每个布尔特征精准计算:
步骤1:构造数据集
import pandas as pd data = { 'price': [13000, 20000, 15000, 13000, 15000], 'bool_qual_1': [True, False, True, False, True], 'bool_qual_2': [True, True, True, False, True], 'bool_qual_3': [True, True, False, False, True] } df = pd.DataFrame(data)
步骤2:计算相关性
方法1:生成完整相关系数矩阵,直接查看price与三个布尔特征的对应值:
print(df.corr())输出结果中
price行对应的三个布尔列数值,就是你要的相关性系数。方法2:单独计算每个布尔特征与price的相关系数,更直观:
for col in ['bool_qual_1', 'bool_qual_2', 'bool_qual_3']: corr_value = df['price'].corr(df[col]) print(f"price 和 {col} 的Pearson相关系数: {corr_value:.4f}")
二、Pearson相关系数用于整数与布尔值是否合理?
完全合理!这里你其实用到的是点二列相关系数(Point-Biserial Correlation),而Pearson相关系数在「连续变量(比如price)+ 二分变量(你的布尔特征)」的场景下,和点二列相关系数是完全等价的。
简单来说:把布尔值编码为0/1后,Pearson系数会准确衡量price和布尔特征之间的线性相关程度——比如bool_qual_1为True时,price整体是更高还是更低,这种线性趋势的强弱程度。
补充注意点
如果你的布尔特征是从连续变量人为划分出来的(比如把price>15000设为True),那可能需要谨慎评估,但你的情况是原生的布尔属性(比如是否具备某个品质),所以Pearson完全适用。要是你担心数据不符合正态分布之类的假设,也可以试试Spearman秩相关系数,只需要在corr()里指定参数:df['price'].corr(df[col], method='spearman'),不过大部分情况下Pearson就足够满足需求了。
内容的提问来源于stack exchange,提问作者Zeruno
相关产品推荐
相关产品推荐

