如何将多个不同维度的分类输入变量应用到随机森林回归模型中?

2024-05-29 07:04:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据描述了一个项目正在经历一个发布过程。项目有不同的变量,如“产品类别”、“设计国家”、“产品线”等。我总共有18种不同类型的二进制或分类数据。这些不同的变量具有不同的维度。例如,有3个不同的设计国家,8个不同的产品类别。输出变量是项目通过发布过程所需的时间,这是一个连续变量。我想预测一个项目需要多长时间才能完成这个过程

 Design_cntry      Prod_category    prod_line    ...   time_minutes
     A                  A1             A11       ...     43.2
     B                  B1             A11       ...     20.1    
     C                  E1             B11       ...     15.0
    ...                ...             ...       ...     ....

为了使用这些变量作为随机森林回归器的输入,我应该如何处理不同的输入变量

我知道使用分类变量可以应用一个热编码。但我对每个单独的变量都这样做吗

 X_des_country = pd.get_dummies([data['design_cntry'], prefix = "design_country")
 X_prod_cat = pd.get_dummies([data['prod_cat'], prefix = "prod_cat")

然后我将有18个不同的输入数据帧,它们的列数不同。在训练模型时,如何使用这些变量作为输入?我是否通过合并索引将它们全部放在一个数据帧“X”中

还是直接在原始数据帧上应用一个热编码更好

   X = df.drop("time_minutes", axis = 1)
   X = pd.get_dummies(X)

Tags: 数据项目gettime过程分类prod国家
1条回答
网友
1楼 · 发布于 2024-05-29 07:04:02

作为(重要的)补充说明,为了避免伪变量陷阱,您需要为每个分类变量移除一个值:您可以通过在pd.get_dummies中添加drop_first=True来实现

对于您的回归模型,您可以将所有这些新特性放在一起,并使用它来训练您的模型。但您不必创建18个不同的数据帧,您可以一次创建所有数据帧:

>>> df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],'C': [1, 2, 3]})
   A  B  C
0  a  b  1
1  b  a  2
2  a  c  3

>>> pd.get_dummies(df, drop_first=True)
   C  A_b  B_b  B_c
0  1    0    1    0
1  2    1    0    0
2  3    0    0    1

这将只为分类变量(即char列)创建虚拟变量,并保持int列的原样(参见上面的C列)。 如果某个变量只包含整数,但希望将其视为分类变量,只需事先将其转换为字符变量即可

相关问题 更多 >

    热门问题