预处理具有大分类变量的数据集

Preprocessing Dataset with Large Categorical Variables

我试图找到这个问题的基本答案,但 Stack Overflow 上的 none 似乎是最合适的。

我有一个包含 40 列和 55,000 行的数据集。这些列中只有 8 列是数字。剩下的 32 个是分类的,每个都有字符串值。

现在我想对预测模型进行探索性数据分析,我需要删除某些与目标(预测变量)没有高度相关性的不相关列。但是由于所有这 32 个变量都是分类变量,我该怎么做才能看到它们与目标变量的相关性?

我想尝试的是:

  1. 对所有 32 列进行标签编码,然后 运行 通过 PCA 进行降维,然后创建预测模型。 (如果我这样做,那么我如何通过删除具有低 corr() 与目标的无关列来清理我的数据?)

  2. 一个热编码所有 32 列并直接 运行 一个预测模型。 (如果我这样做,那么清洗数据的概念就完全失去了,列数会猛增,模型会考虑所有相关和不相关的变量进行预测!)

在这种情况下,如果你有很多分类列,最终建立预测模型的最佳实践应该是什么?

你可以看看你的分类变量是否适合Spearman等级相关,它对分类变量进行排序并计算相关系数。但是,请注意分类变量之间的共线性。

你得检查相关性..我能想到两种情况..

  1. 如果目标变量是连续变量且自变量是分类变量,则可以使用 Kendall Tau 相关
  2. 如果目标变量和自变量都是分类变量,您可以使用 CramersV 相关性

python 中有一个包可以为您完成所有这些工作,您可以 select 只选择您需要的列..

pip 安装 ctrl4ai

从 ctrl4ai 导入 automl

automl.preprocess(数据框,学习类型)

使用 help(automl.preprocess) 了解更多关于超参数的信息,您可以按照您想要的方式自定义预处理..

请检查 automl.master_correlation,它根据我上面解释的方法检查相关性。