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

我有一组数据,描述了一个项目通过发布流程的情况。这个项目有不同的变量,例如“产品类别”、“设计国家”、“产品线”等。总共有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个不同的数据框,你可以一次性完成所有操作:

>>> df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],'C': [1, 2, 3]})   A  B  C0  a  b  11  b  a  22  a  c  3>>> pd.get_dummies(df, drop_first=True)   C  A_b  B_b  B_c0  1    0    1    01  2    1    0    02  3    0    0    1

这将仅为分类变量(即字符列)创建虚拟变量,并保持整数列不变(如上面的列C)。如果你的一个变量只包含整数,但你希望它被视为分类变量,只需在之前将其转换为字符变量即可。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注