分类变量和连续变量之间的相关性

分类变量和连续变量之间的相关性

介绍

在机器学习中,数据以及对其行为的了解是一项非常重要的工作。由于在机器学习中,很难获得具有相同参数和行为的数据,因此在训练模型之前进行一些预训练阶段是必要的,这意味着我们需要对数据有一些了解。

对数据进行相关性分析是每个数据科学家和数据分析师都希望了解的内容,因为它揭示了关于数据的重要信息,可以帮助我们进行特征工程技术。本文将讨论分类变量和连续变量之间的相关性以及计算相关性的方法。

什么是相关性

在机器学习中,相关性是一种统计度量,表示某个变量在改变其他变量的值时的行为,也就是说,它给我们提供了当我们在数据中波动或改变其他变量的值时,某个变量将如何行为或变化的理念。

相关性对于进行一些特征工程和特征选择技术非常有帮助,因为我们可以快速了解与目标列相关的特征,并可以将相关性较小的变量从数据中剔除。

已知有各种技术可以进行相关性测试,其中一些是皮尔逊和斯皮尔曼相关性。但是,这些技术无法帮助我们进行连续和分类变量之间的相关性测试。

Table guiding which test is suitable for what conditions Dependent Variables
Categorical Continuous
Independent Variables Categorical | Chi-Square Test | ANOVA Test
Continuous Logistic Regression | Linear Regression

在上面的图片中,我们可以看到列举了一些变量不同情况下的相关性计算方法。在这里,卡方方法可以用于找到分类变量之间的相关性,线性回归可以用于计算连续变量之间的相关性,因为线性回归计算了最佳拟合线的斜率和截距。 现在,如果您想计算分类和连续变量之间的相关性,则可以使用ANOVA测试来进行计算。此外,逻辑回归方法更适合计算相关性,如果目标列是分类变量的话。除此之外,点二列法也可以用于计算分类和连续变量之间的相关性。

ANOVA测试

ANOVA或方差分析测试主要用于计算变量之间的相关性,使用它们的方差。ANOVA测试也是一种参数化的测试,有一些假设条件:

  • 数据需要呈正态分布。
  • 数据具有相等的方差。
  • 数据中没有明显的异常值。
  • 各组彼此独立。

如果数据呈正态分布,可以通过对数和平方根转换来很容易地转换为正态分布。如果数据右偏,可以使用对数转换,如果数据左偏,可以使用平方根转换。

示例

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,则意味着拒绝了零假设,即特定值的所有类别的方差或均值相同。更改类别不会影响这些值。 点二列相关测试也用于计算数据集中分类变量和连续变量之间的相关性。这种方法也是一种统计参数方法,具有一定的假设。

  • 数据服从正态分布。
  • 数据中没有明显的异常值。
  • 数据具有相等的方差。

从点二列相关测试中获得的值介于-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。

重要要点

  • 方差分析和点二分检验可以用来计算分类变量和连续变量之间的相关性。

  • 数据应该服从正态分布和具有相等的方差是两种方法的主要假设。

  • 点二分方法返回介于-1到1之间的相关值,其中0表示变量之间没有相关性。

结论

在本文中,我们讨论了连续变量和分类变量之间的相关性、它们的核心直觉以及使用代码示例计算相关性的方法。这将有助于更好地理解这个概念并有效地进行这样的案例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程