【问题标题】:Given numerical target variable, should I transform the target variable to obtain indicator matrix for multiclass classification? [closed]给定数值目标变量,我应该转换目标变量以获得多类分类的指标矩阵吗? [关闭]
【发布时间】:2021-06-16 10:42:10
【问题描述】:

我正在使用RandomForestClassifier 处理多类分类问题。目标变量 Y 仅包含 3 个值 {-1,0,1 } 之一。我知道数字编码是必要的。

但是,我想了解我是否有必要通过执行pd.get_dummies(Y) 来转换Y 以获得如下所示的指标矩阵,然后将该指标矩阵输入RandomForestClassifier

      -1.0   0.0   1.0
0        0     0     1
1        1     0     0
2        0     0     1
3        1     0     0
4        1     0     0
   ...   ...   ...
6516     1     0     0
6517     0     0     1
6518     0     0     1
6519     0     0     1
6520     1     0     0

与将未转换的目标变量Y(即一维序列)输入RandomForestClassifier 相比,这将如何影响机器学习算法?结果会不同吗?为什么?

RandomForestClassifier 在这两种不同的情况下做不同的事情吗? 推荐哪种方法(指标矩阵与未转换)?

【问题讨论】:

  • 在这里进行分类,y 值被视为类标签。这里不需要对目标值进行编码。目标 y 只需为一维向量。如果它们是非数字特征,则可能只需要对这些特征进行编码。数值特征需要缩放。您可以在此处查看文档和示例:scikit-learn.org/stable/auto_examples/classification/…
  • 感谢您的评论。但我注意到在这个例子中,他们会产生一个指标矩阵scikit-learn.org/stable/auto_examples/model_selection/…
  • 我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 machine-learning @ 中的介绍和注意事项987654324@.

标签: python scikit-learn


【解决方案1】:

我认为没有任何理由偏爱其中一个。 documentation 声明您可以将形状为 (n_samples,)(n_samples, n_outputs) 的类似数组作为 y 传递给 sklearn.ensemble.RandomForestClassifier.fit()

唯一的区别是.predict() 返回预测类的方式。我建议您根据您需要预测的格式来决定Y 的形状。

除此之外,每个估算器的拆分过程完全相同。

【讨论】:

  • 哪个文档? scikit-learn.org/stable/modules/generated/… 此处的文档声明 fit(X, y[, sample_weight]),因此 X 和 y 都是训练 RFC 所必需的。 y 是训练分类器所必需的。
  • 我添加了文档链接。当然Xy 都需要。我认为用户的问题是关于y 的形状。他们不知道 y 是否应该作为一维数组或具有多个“列”的数组传递。
  • 好的,谢谢,我明白了:“y 类似形状的数组 (n_samples,) 或 (n_samples, n_outputs)”
猜你喜欢
  • 2012-12-09
  • 2017-08-27
  • 2019-01-20
  • 2021-07-17
  • 1970-01-01
  • 2021-05-14
  • 2021-11-21
  • 2017-10-28
相关资源
最近更新 更多