Refactored preprocessing and PCA model
Накидал небольшие изменения по преобразованию features.
- Сократил число дублирующегося кода в nodes. Кмк стало компактнее и удобнее, вроде ничего в процессе не сломалось. Порядок блоков остался прежний:
Transformer осуществляет преобразование форматов данных, preprocess - изменяет их "масштаб" через скейлинг/нормализацию и т.п.
-
Сделал возможность задавать тип препроцессинга в ноде "снаружи" - через поле manual_preprocessing_func. Как минимум, пригодится для генерации бенчмарков, там с этим были проблемы.
-
Добавил реализацию модели-PCA, которая снижает размерность данных. Обильно не тестировал, но на примере в test_classifications.py внедрение PCA в цепочку даёт повышение качества. Предлагаю пока использовать эту реализацию (добавив ещё несколько подобных моделей) для экспериментального определения необходимости такого рода подходов (снижения размерности и т.д.)
Алсо, посмотрел как это сделано в TPOT-е: https://github.com/EpistasisLab/tpot/blob/master/tpot/builtins/feature_transformers.py Там для непрерывных величин возможно PCA преобразование, для категориальных - onehot. Других опций вроде не вижу, мб в других файлах что-то есть.