最佳实践

时间:2019-10-22 19:14:32

标签: python cross-validation text-classification one-hot-encoding dimensionality-reduction

这些问题更多地与理论有关,而与我的语法中的特定问题无关。我有一个目前无法透露的数据集,也没有我的任何代码。但是,我的数据集具有199个特征和一个目标变量,我必须将其从多类(30个可能的值)转换为二进制(对或错)。我正在尝试使用有关这些记录的一些信息来预测应将记录指定为true还是false。就我的功能集而言,有些列以整数,浮点数和字符串值形式存在。但是,无论数据类型如何,其中许多都是名义分类特征,并且其中一些具有较高的基数。例如,一列包含具有超过4k个唯一值的数字错误代码列表。作为参考,如果我对整个数据集进行一次热编码(当然要减去响应变量),那么我最终将获得超过13k列。我目前正在探索散列作为降低维数的一种方法,但担心由于“冲突”导致的信息丢失。

鉴于此背景,我的问题如下:

1。将基于文本的响应变量标签转换为数值是否会产生序数?

在此示例中,1 =“真”,0 =表示“假”的任何原因。似乎不建议将标签编码用于功能,因为它会产生序数。使用

转换响应变量时是否存在相同的问题?
.astype('int')?

我应该将它们转换为'true'或'false'并将其保留为字符串吗?

2。是否应将数字,名义,分类变量转换为“类别”数据类型?在“错误代码”列的示例中,我不知道将它们保留为** int 数据类型还是将其转换为 category 更好。所有数值是否都具有固有的序数性,或者仅仅是我通过某种方式(例如标签编码)转换的数据?

3。如何平衡信息丢失和高维度

从我正在阅读的内容来看,散列会导致信息丢失至“冲突”,而一键编码会产生“高维”问题。是否有平衡这两者的最佳实践,还是特定于用例?是否可以在我可能进行的任何交叉验证测试中测试这两种方法?

如果您能就这些问题分享任何见解,我将不胜感激,并期待我们的讨论。

谢谢

0 个答案:

没有答案