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

时间:2019-09-04 10:38:08

标签: python pandas machine-learning data-analysis preprocessor

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

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

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

我想尝试的方法:

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

  2. 一次热编码所有32列,并直接在其上运行预测模型。 (如果执行此操作,则清理数据的概念将完全消失,列数将激增,模型将考虑所有相关变量和无关变量进行预测!)

在这种情况下,如果您最终拥有许多类别列,那么最好的做法是什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您必须检查相关性。.我可以想到两种情况。

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

python中有一个软件包,可以为您完成所有这些操作,您只能选择所需的列。

pip安装ctrl4ai

从ctrl4ai导入automl

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

使用help(automl.preprocess)来了解有关超参数的更多信息,并且您可以按照自己的方式自定义预处理。

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