Я пытаюсь использовать Weka для выбора функций с использованием алгоритма PCA.
Мое исходное функциональное пространство содержит ~9000 атрибутов в 2700 образцах.
Я попытался уменьшить размерность данных, используя следующий код:
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);
.
Мои вопросы: Ожидается ли такое длительное время вычислений для PCA weka? Или я неправильно использую PCA?
Если ожидается длительное время работы:
Как настроить алгоритм PCA, чтобы он работал намного быстрее? Можете ли вы предложить альтернативу? (+ пример кода, как его использовать )?
Если нет:
Что я делаю не так? Как мне вызвать PCA с помощью weka и получить уменьшенную размерность?
Обновление:Комментарии подтверждают мое подозрение, что это занимает гораздо больше времени, чем ожидалось.
Я хотел бы знать:Как я могу получить PCA в java -, используя weka или альтернативную библиотеку.
Добавлена награда за это.