分类变量和连续变量之间的相关性
简介
在机器学习中,数据和关于其行为的知识是一个人在处理任何类型的数据时应该拥有的基本东西。在机器学习中,不可能有相同参数和行为的数据,所以必须进行一些预训练阶段,也就是说,在训练模型之前,有必要对数据有一些了解。
相关性是每个数据科学家或数据分析师都想知道的,因为它揭示了数据的基本信息,这可以帮助人们执行特征工程技术。本文将讨论分类变量和连续变量之间的相关性,以及计算这些相关性的方法。
什么是相关性
机器学习中的相关性是一种统计量,它代表了一个特定变量在改变其他一些变量的值时的行为,也就是说,当我们在数据中波动或改变其他一些变量的值时,它让我们了解一个变量将如何表现或变化。
相关性凸轮对于进行一些特征工程和特征选择技术非常有帮助,因为我们可以快速了解与目标列相关的特征,并且可以从数据中剔除次要的相关变量。
已知有多种技术可以进行相关测试,其中一些是Pearson和Spearman相关。但是,这些技术并不能帮助进行连续变量和分类变量之间的相关测试。
在上面的图片中,我们可以看到一些相关的计算方法被列出,用于变量的各种情况。这里,卡方法可用于寻找分类变量之间的相关性,而线性回归可用于计算连续变量之间的相关性,因为线性回归会计算最佳拟合线的斜率和截距。
现在,如果你想计算分类变量和连续变量之间的相关性,那么可以使用方差分析检验来实现。另外,如果目标列是分类的,那么逻辑回归的方法更适合于计算相关性。除此以外,还可以使用点双积分方法来计算分类变量和连续变量之间的相关性。
方差分析测试
方差分析或方差分析测试主要用于计算变量之间的相关关系,使用它们的方差。方差分析检验也是一种参数检验,有一定的假设条件–
- 数据需要是正态分布的。
- 数据是等方差分布的。
- 数据中没有剧烈的异常值。
- 各组之间是相互独立的。
如果数据是正态分布,那么可以使用对数和平方根变换轻松地将其转换为正态分布。如果数据是右偏的,你可以使用对数变换,如果数据是左偏的,可以使用平方根变换。
例子
import pingouin as pg
import pandas as pd
import numpy as np
# create DataFrame
df = pd.DataFrame({'values'': [1,2,5,6,89,67,54,34], 'groups': np.repeat(['cat1','cat2','cat3'], repeats=5)})
# perform Welch's ANOVA
pg.welch_anova(dv='values', between='groups', data=df)
在上面的代码中,我们可以看到,我们已经传递了所有不同的类别,以及我们想要计算相关性的值。上述代码将给出一个表格的输出,其中f值和p值将出现。
如果从上述代码中得到的p值小于0.05,这意味着它拒绝了无效假设,所有类别的方差或特定值的平均值都是一样的。这些数值不会因为改变类别而受到影响。
点式比对检验
点二进制检验也被用来计算数据集中分类变量和连续变量之间的相关性。这种方法也是一种具有某些假设的统计参数方法。
- 数据是正常分布的。
- 数据中没有剧烈的异常值。
- 数据中存在相等的方差。
从点Biserial检验中得到的数值在-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。
主要启示
- 方差分析和点Biserial检验可以用来计算分类变量和连续变量之间的相关关系。
- 数据应该是正态分布的,而且方差相等是这两种方法的一个主要假设。
- 点二进制方法返回-1到1之间的相关值,其中0代表变量之间没有相关性。
总结
在这篇文章中,我们讨论了连续变量和分类变量之间的相关性,它们的核心直觉,以及用代码实例计算的方法。这将有助于人们更好地理解这个概念,并有效地处理这些案例。