Я пытаюсь выполнить наименьший дискриминантный анализ данных геометрии c морфометрия c. Поскольку данные геометрии c морфометрия c обычно дают большое количество переменных, а дискриминантный анализ требует большего количества точек данных, чем переменных, для точной классификации образцов, в литературе принято решение выполнять анализ основных компонентов, а затем использовать переменное число ПК, представляющие менее 99% совокупной дисперсии, но возвращающие наивысшую скорость реклассификации в качестве входных данных для LDA.
В настоящий момент я делаю это, запуская LDA в R (используя функции из * 1003). * и MASS
пакетов) при каждом возможном количестве используемых ПК и отмечая точность классификации вручную, пока я не нашел наименьшее количество компьютеров, которые вернули самую высокую точность, но это крайне неэффективно.
Мне было интересно, есть ли способ написать функцию, которая будет запускать LDA для всех возможных чисел первых N ПК (до определенного, определенного пользователем уровня, представляющего 99% совокупной дисперсии) и возвращать процент уровень переклассификации для каждого уровня, производящий что-то вроде следующего:
PCs percent_accuracy
20 72.2
19 76.3
18 77.4
17 80.1
16 75.4
15 50.7
... ...
1 20.2
Таким образом, строка 1 будет скоростью реклассификации при использовании первых 20 ПК, строка 2 - скоростью, когда первые 19 ПК используются и т. д. и т. п.