我正在尝试制作一个小型数据科学工具(有点像迷你版的 WEKA)。现在,我的数据集包含大量特征(70-100+),而且它们大多是分类的。我正在使用 Python sklearn 进行机器学习逻辑,我需要根据我得到的 sklearn 错误将这些类别转换为数值。
鉴于此,One Hot Encoding 不是一种选择,因为它会将维度放大太多。
我研究了其他可能有效的方法,例如频率编码、标签编码等。但我不太确定在我的情况下应该选择什么。
另外,WEKA 实际上是如何处理这些的?我在 WEKA 中输入了我的数据集,它们运行良好,给了我很好的结果!
这取决于算法:有些算法本身就处理分类属性,例如 J48(Weka 的 C4.5 实现),它对分类属性执行多路分割。其他人必须转换数据,例如 SMO(支持向量机),它将标称属性二值化并增加可供学习的属性数量。