分类变量和连续变量之间的相关性
简介
在机器学习中,数据及其行为的知识是处理任何类型的数据时必须具备的基本知识。在机器学习中,不可能拥有具有相同参数和行为的相同数据,因此必须进行一些预训练阶段,这意味着在训练模型之前必须对数据有一定的了解。
相关性是每个数据科学家或数据分析师都想知道的数据,因为它揭示了有关数据的基本信息,这可以帮助人们执行特征工程技术。本文将讨论分类变量和连续变量之间的相关性以及计算相关性的方法。
什么是相关性?
机器学习中的相关性是一种统计测量,表示特定变量在改变其他变量的值时的行为,这意味着它让我们了解当我们波动或改变数据中其他变量的值时,一个变量将如何表现或变化。
相关性凸轮在进行一些特征工程和特征选择技术时非常有用,因为我们可以快速了解与目标列相关的特征,并且可以从数据中删除次要相关变量。
众所周知,进行相关性测试的技术多种多样,其中一些是皮尔逊和斯皮尔曼相关性。然而,这些技术无助于进行连续变量和分类变量之间的相关性检验。
表格指导哪种检验适用于哪种条件 |
因变量 | ||
---|---|---|---|
分类 |
连续 | ||
独立变量 |
分类 |
卡方检验 |
方差分析 |
连续 |
逻辑回归 |
线性回归 |
在上图中,我们可以看到针对各种变量情况列出了一些相关性计算方法。这里,卡方法可用于查找分类变量之间的相关性,线性回归可用于计算连续变量之间的相关性,因为线性回归计算最佳拟合线的斜率和截距。
现在,如果您想计算分类变量和连续变量之间的相关性,则可以使用方差分析测试。此外,如果目标列是分类的,则逻辑回归方法更适合计算相关性。除此之外,点双列方法也可用于计算分类变量和连续变量之间的相关性。
方差分析测试
方差分析或方差分析测试主要用于使用变量的方差来计算变量之间的相关性。 ANOVA 检验也是一种具有某些假设的参数检验 −
数据需要呈正态分布。
数据呈等方差分布。
数据中没有明显的异常值。
各组之间相互独立。
如果数据呈正态分布,则可以使用对数和平方根变换轻松将其转换为正态分布。如果数据右偏,则可以使用对数变换;如果数据左偏,则可以使用平方根变换。
示例
import pingouin as pg import pandas as pd import numpy as np # 创建 DataFrame df = pd.DataFrame({'values'': [1,2,5,6,89,67,54,34], 'groups': np.repeat(['cat1','cat2','cat3'], repeats=5)}) # 执行 Welch 的ANOVA pg.welch_anova(dv='values', between='groups', data=df)
在上面的代码中,我们可以看到我们已经传递了我们拥有的所有不同类别以及我们想要计算相关性的值。上面的代码将输出一个表格,其中将出现 f 值和 p 值。
如果从上面的代码获得的 p 值小于 0.05,则意味着它拒绝了零假设,并且特定值的所有类别的所有方差或平均值都是相同的。更改类别不会影响这些值。
点双列检验
点双列检验也用于计算数据集中分类变量和连续变量之间的相关性。该方法也是一种具有某些假设的统计参数方法。
数据呈正态分布。
数据中没有显著的异常值。
数据中存在等方差。
点双列检验得到的值介于 -1 到 1 之间,其中等于 1 的值表示强正相关性,反之亦然。值 0 表示不存在相关性。
示例
import numpy as np from scipy import stats a = np.array([1,1,1,2,2,2]) b = np.arange(6) stats.pointbiserialr(a, b) np.corrcoef(a, b)
我们可以使用 scipy.stats 库来计算这些变量之间的点双列相关性。 np.corrcoef 将返回一个表格类型的输出,表示变量之间的相关性,范围从 -1 到 1。
关键要点
ANOVA 和 Point Biserial 检验可用于计算分类变量和连续变量之间的相关性。
数据应呈正态分布,方差相等是这两种方法的主要假设。
Point Biserial 方法返回 -1 到 1 之间的相关值,其中 0 表示变量之间没有相关性。
结论
在本文中,我们讨论了连续变量和分类变量之间的相关性、它们的核心直觉以及计算它们的方法,并附上了代码示例。这将有助于人们更好地理解这个概念并有效地处理此类案例。