如何在 Python 中自动化方差分析

数据挖掘 机器学习 Python 特征工程 降维 卡格尔
2022-02-17 20:56:14

我正处于模型的降维阶段。我有一个分类列列表,我想找到每列和我的连续SalePrice列之间的相关性。以下是列名列表:

categorical_columns = ['MSSubClass', 'MSZoning', 'LotShape', 'LandContour', 'LotConfig', 'Neighborhood', 'Condition1',
                       'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd',
                       'Foundation', 'Heating', 'Electrical', 'Functional', 'GarageType', 'PavedDrive', 'Fence',
                       'MiscFeature', 'SaleType', 'SaleCondition', 'Street', 'CentralAir']

因为它是分类的与连续的,所以我读过 ANOVA 是最好的方法,但我以前从未使用过它,也无法在 Python 中找到它的简明实现。我想循环并输出列表中每个元素与SalePrice列之间的相关性。

1个回答

我不确定 ANOVA 是否是找到这些分类特征与您的目标之间相关性的最佳和最简单的方法。您可能会看到这篇很棒的帖子,他们在其中提出了许多其他方法以及 ANOVA。如果您坚持使用 ANOVA 检验或 Kruskal-Wallis H 检验,您需要知道它是如何为您提供相关概念的(分类组之间的方差变化)。在那篇文章中很好地解释了这一点:

ANOVA 估计可以通过分类变量解释的连续变量的方差。需要使用分类变量对连续变量进行分组,测量每组的方差并将其与连续变量的总体方差进行比较。如果分组后的方差显着下降,则说明分类变量可以解释大部分连续变量的方差,因此这两个变量可能具有很强的关联性。如果变量没有相关性,则组中的方差预计与原始方差相似。

一旦你了解了它是如何工作的,实现它并自动化它就不难了。事实上 scipy 和 statsmodels 有方差分析。查看这篇文章,他们在其中详细演示了如何对实际数据集执行 ANOVA 测试并估计分类变量和连续目标之间的相关性。只需将这些部分放在一起并进行一些更改以使其适用于您自己的数据框。