【问题标题】:how to use one feature per sample to predict in sklearn Random Forest?如何在 sklearn 随机森林中使用每个样本的一个特征进行预测?
【发布时间】:2017-02-21 04:56:44
【问题描述】:

我有一个数据集(图像),其特征已经填充为[n_samples,n_feature] 或 [10,7] 10 个样本,每个样本有 7 个特征。

现在,.predict() 需要输入 [n_samples,n_feature]。我了解样本量可能会发生变化,但是否不能仅使用一种特征进行预测?

基本上,我希望每个样本只有一个特征可以穿过森林;所以在预测时间内输入应该是 [n_samples,1]

【问题讨论】:

  • 请把你的问题说清楚一点。这令人困惑......
  • 是不是更清楚了?

标签: machine-learning scikit-learn computer-vision random-forest


【解决方案1】:

使用Radom Forest对图片进行分类并不常见,性能可能不是那么好。

首先,方法.predict() 不期望输入大小为[n_samples,n_feature]。事实上,只有n_features 的特征数量需要相同,n_samples 的情况并非如此。虽然您的训练集有一些 16*16=256 样本,但您的测试集只能包含一个样本。

如果您仍想使用仅使用一个特征的RF 分类器,您可以计算一个主成分分析(它可能不会在您的特征中返回一个特征) strong> 使用一些经典的 skleanr 方法选择您的最佳特征,例如:SelectKBest,它允许您选择 K 个最佳特征(在您的情况下为 K=1)。


更新:

我刚刚深入了解了 sklearn 的 API 文档,发现了这个:see here

您可以为您的 .transform() 方法提供一个名为 threshold 的参数,该参数将根据您给定的阈值选择功能。

注意:已弃用:将在 0.19 版中删除对使用估算器作为特征选择器的支持。请改用 SelectFromModel。

【讨论】:

  • 所以不可能让随机森林在测试期间只接受一个特征?
  • 我期望一个特征会沿着树向下运行,只有训练需要每个样本多个特征。有什么办法吗?
  • 哦不,你不能。如果您想保留给定的特征,请在其上训练您的数据,然后在您的测试集上使用。
  • 你能建议我如何解决这个问题吗?也许另一个图书馆?
  • 你不能训练多个特征并测试不同的特征集。这违背了机器学习的原则。您的分类器无法猜测如何根据新的给定特征进行拆分。
猜你喜欢
  • 2014-04-17
  • 2019-07-22
  • 2014-01-06
  • 2022-01-12
  • 2019-01-28
  • 2019-03-30
  • 2017-05-13
  • 2019-09-01
  • 1970-01-01
相关资源
最近更新 更多