Что на самом деле представляет собой part_fit () в кластере березы SKLearn, и может ли он использоваться в очень больших наборах данных? - PullRequest
0 голосов
/ 19 февраля 2019

Мои данные имеют легкий хвост, с несколькими выбросами в обоих крайних концах.Я делаю кластеризацию данных с использованием Birch, до этого я использовал RobustScaler для преобразования данных, затем использовал PCA для уменьшения измерения.Однако я получаю MemoryError: enter image description here

Это несколько необычно для меня, потому что, когда я пытаюсь использовать другой метод преобразования, который отображает только необработанные данные из [0,1], BirchАлгоритм работает.

Я прочитал документацию SKLearn's Birch и нашел функциюpart_fit (), но там недостаточно подробностей, чтобы я мог понять ее назначение и способы ее использования. Документация просто говорит: «Онлайн обучение.Предотвращает восстановление CFTree с нуля. '

1 Ответ

0 голосов
/ 19 февраля 2019

Посмотрите на исходный код.

Не полагайтесь на людей на веб-форумах, чтобы угадать, что делает функция, когда у вас есть доступ к источнику.Причина проста: может варьироваться в зависимости от версии .Так что я мог бы дать вам правильный ответ, для другой версии ...

Вы звонили partial_fit сразу по всем данным?Это не то, что вы должны делать.Обрабатывайте только один пакет за раз.

Проблемы с памятью могут возникать из-за того, что старые данные все еще доступны и не собраны сборщиком мусора (например, нетрансформированные данные), а также из-за различных параметров.Если вы внимательно изучите статью Birch, вы увидите, что она ожидает намного более тесного контроля над памятью, чем у нас в современных языках, таких как Python, и на этом детальном уровне невоспроизводима в современных операционных системах.

Но основными вопросами, которые вы должны рассмотреть, являются следующие два:

  1. Достаточно ли действительно качество кластеризации по Берчу на этих данных?Или вы пытаетесь решить не ту проблему?
  2. Насколько качество ухудшается, если вы используете только 50% ваших "больших" данных?Статистически это не должно иметь значения ... Метод основан на агрегатах, и точность таких агрегатов растет с ростом sqrt (n) ... Т.е. добавление новых и новых данных не имеет значения.
...