我正在尝试使用 Weka 使用 PCA 算法进行特征选择。
我的原始特征空间在 2700 个样本中包含约 9000 个属性。
我尝试使用以下代码降低数据的维度:
AttributeSelection selector = new AttributeSelection();
PrincipalComponents pca = new PrincipalComponents();
Ranker ranker = new Ranker();
selector.setEvaluator(pca);
selector.setSearch(ranker);
Instances instances = SamplesManager.asWekaInstances(trainSet);
try {
selector.SelectAttributes(instances);
return SamplesManager.asSamplesList(selector.reduceDimensionality(instances));
} catch (Exception e ) {
...
}
但是,它并没有在 12 小时内完成运行。它卡在了方法selector.SelectAttributes(instances);
上。
我的问题是: weka 的 PCA 需要这么长的计算时间吗?还是我错误地使用了 PCA?
如果预计运行时间较长:
如何调整 PCA 算法以更快地运行?你能建议一个替代方案吗?(+ 示例代码如何使用它)?
如果不是:
我做错了什么?我应该如何使用 weka 调用 PCA 并获得降维?
更新:评论证实了我的怀疑,即花费的时间比预期的要多得多。
我想知道:如何在 java 中获取 PCA - 使用 weka 或替代库。
为此添加了赏金。