我有一些数据描述了一个项目正在经历一个发布过程。项目有不同的变量,如“产品类别”、“设计国家”、“产品线”等。我总共有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)
作为(重要的)补充说明,为了避免伪变量陷阱,您需要为每个分类变量移除一个值:您可以通过在
pd.get_dummies
中添加drop_first=True
来实现对于您的回归模型,您可以将所有这些新特性放在一起,并使用它来训练您的模型。但您不必创建18个不同的数据帧,您可以一次创建所有数据帧:
这将只为分类变量(即char列)创建虚拟变量,并保持int列的原样(参见上面的C列)。 如果某个变量只包含整数,但希望将其视为分类变量,只需事先将其转换为字符变量即可
相关问题 更多 >
编程相关推荐