【发布时间】:2016-07-22 19:25:25
【问题描述】:
在解决其中一个机器学习问题时,我正在对训练数据实施 PCA,然后使用 sklearn 对训练数据应用 .transform。观察方差后,我只保留变换数据中方差较大的那些列。然后我正在使用 RandomForestClassifier 训练模型。现在,我很困惑如何将经过训练的模型应用于测试数据,因为测试数据的列数和保留的转换数据(应用随机森林)不同。任何解决方案将不胜感激。
谢谢。
【问题讨论】:
-
如果您需要有关代码的具体帮助,请提供一个工作示例来解决您遇到的问题。但是,请注意随机森林在高维空间中工作,因此随机森林之前的 PCA 可能不是最好的,因为 PCA 没有考虑目标。使用随机森林,可以看到重要的特征(参见 sklearn scikit-learn.org/stable/auto_examples/ensemble/… 中检查特征重要性的示例)。
-
如果我使用 PCA 作为第一步,然后使用任何其他算法来训练模型,如何预处理测试数据以使用该模型?我正在使用一个包含 335 列的数据集。通过应用 PCA abd then transform 方法,我保留了 233 列,因为其他列的方差值太小了。然后我将这些数据用于随机森林。下一步是在测试数据上使用它。谢谢。
-
如果你只在 PCA 降维的训练数据集上训练模型,你在测试数据集上做同样的事情,即你在测试数据集中只保留由 PCA 识别的列。这样,测试数据集的维度就和训练数据集的维度相匹配了。
-
在应用 PCA 时如何知道哪些列的方差较大?
-
对不起,我可能不清楚,或者我遗漏了一些东西。在训练模型之前你不是已经找到了高方差的列吗?
标签: python-2.7 machine-learning scikit-learn random-forest