如何为随机森林分类拟合分类数据类型?


12

我需要通过应用随机森林算法来找到训练数据集的准确性。但是我的数据集类型既是分类的又是数字的。当我尝试拟合这些数据时,出现错误。

'输入包含NaN,无穷大或dtype('float32')太大的值。

问题可能出在对象数据类型上。如何在不进行RF转换的情况下拟合分类数据?

这是我的代码。

屏幕截图

屏幕截图

屏幕截图


如果您正在使用树模型,则无需执行one_hot,因为它不像其他方法那样测量距离。
Jun Yang

1
@ JunYang,scikit-learn当前确实需要编码类别。
Ben Reiniger,

Answers:


11

您需要将分类特征转换为数字属性。常见的方法是使用单编码,但这绝对不是唯一的选择。如果您的变量具有较高的分类级别,则应考虑合并级别或使用哈希技巧。Sklearn配备了几种方法(请参阅“另请参见”部分):一个热编码器和一个哈希技巧

如果您不打算使用sklearn,则h2o随机林实现将直接处理分类功能。


0

据我所知,获取此类错误存在一些问题。第一个是,在我的数据集中,存在多余的空间,为什么会显示错误,“输入包含NAN值;其次,python无法使用任何类型的对象值。我们需要将该对象值转换为数值。为了将对象转换为数字,存在两种类型的编码过程:标签编码器和一种热编码器。标签编码器编码对象值介于0到n_classes-1之间,而一个热编码器编码值介于0和1之间。在我的工作中,在将数据适合任何类型的分类方法之前,我使用标签编码器来转换值,并且在转换之前,请确保我的数据集中没有空格。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.