Итак, все мы знаем, что быть специалистом по данным - это просто загрузить последний и лучший модуль машинного обучения Python, запустить его, направить на наши данные, может быть, немного подстроить, а затем раздаются аплодисменты, верно? Легкий!

Однако что происходит, когда вы загружаете один из этих модулей, и что-то работает не так, как вы ожидаете? Вы просто отказываетесь от этого и теряете всю функциональность, которую так ждали? Или вы упорствуете и пытаетесь решить это? Если вы специалист по анализу данных, то я определенно надеюсь, что ваш инстинкт - это последнее. Вот недавний пример, когда я оказался как раз в такой ситуации.

Я читал об этом модуле Lazy Predict, который показался мне очень полезной идеей. Существует множество моделей, которые потенциально можно использовать в модуле Sci-Kit Learn, когда вы начинаете новый проект машинного обучения, но какие из них использовать?

Очевидно, вам нужно определить, является ли это задачей классификации или регрессии, и это сокращает доступный выбор модели. Кроме того, у людей будут свои собственные любимые модели, и если вы особенно хорошо знаете варианты, вы можете дать теоретическую причину, почему конкретная модель может работать лучше всего, но что дальше?

Lazy Predict предлагает один вариант: опробовать все доступные модели в Sci-Kit Learn на ваших данных одну за другой и дать вам некоторые базовые показатели производительности. Затем вы можете выбрать несколько лучших моделей, настроить гиперпараметры и быть достаточно уверенными в том, что у вас лучшая модель, что, безусловно, кажется лучшей идеей, чем просто случайный выбор нескольких моделей и их настройка.

Тем не менее, я бы посоветовал вам обязательно изучить и понять любую модель, которую вы решите использовать, и никогда не доверять слепо некоторым статистическим данным о производительности.

Поэтому я подумал, что скачаю и опробую это на себе, чтобы увидеть, как это работает, и смогу ли я включить его в будущий проект.

Следуя руководству по классификационной модели на их домашней странице документации, я выполнил следующее, чтобы запустить некоторые классификации на хорошо известном наборе данных о раке молочной железы, включенном в Sci-Kit Learn:

Обратите внимание, что мне пришлось проделать дополнительную работу, чтобы Lazy Predict установил и запустил модуль из-за нескольких проблем с совместимостью с последней версией Sci-Kit Learn. Здесь есть временное исправление, которое, надеюсь, со временем будет исправлено.

Пока все хорошо, вот результат:

Таким образом, кажется, что с моделью LinearSVC, Perceptron или Logistic Regression мы можем легко получить оценку F1 99%, что кажется довольно неплохим! Теперь мы можем просто изучить эти модели, посмотреть, как они работают, и настроить их, чтобы добиться отличной производительности. Работа сделана правильно?

Итак, допустим, что мы решили использовать модель LinearSVC, мы можем легко построить и обучить ее на наших данных:

Как и любому хорошему специалисту по анализу данных, мы должны дважды проверить наши результаты, верно? Не хочу доверять тому, в чем мы новичок, но это должно быть просто, просто распечатайте несколько статистических данных:

И результат:

Подождите, это не то, чего мы ожидали ... Что случилось? Есть проблема? Можно ли доверять этому модулю? Мы что-то сделали не так? Страница документации довольно скудная, нет ничего, что указывало бы на то, что мы должны получать разные результаты. Так что именно в этот момент вы можете решить отказаться, но я очень надеюсь, что вы не такой специалист по данным, мы зашли так далеко, давайте посмотрим, что происходит.

Код модуля доступен в репозитории Github, но лучше, если вы найдете его на своем компьютере, я нашел свой в C: \ Users \. \ AppData \ Roaming \ Python \ Python38 \ site-packages \ lazypredict. В этом случае на самом деле было более полезно посмотреть на код, установленный локально, поскольку он, похоже, немного отличается от версии на Github.

Ключевой фрагмент кода в Supervised.py (основной фрагмент кода для этого модуля), который я заметил, был следующим:

Вместо того, чтобы просто запускать модели непосредственно в фреймворке данных (который в любом случае не будет работать с большинством данных, поскольку вы обычно ожидаете каких-то категориальных данных) Lazy Predict выполняет некоторую предварительную обработку, чтобы получить данные в форме Sci-Kit Learn ожидает. Это имеет смысл, но может быть не сразу очевидно для новичка, использующего такой инструмент.

Фактически, теперь мы можем точно увидеть обработку, которую выполняет Lazy Predict, и теперь мы можем воспроизвести ее сами или настроить ее в модуле, если мы предпочитаем что-то другое. Кроме того, копаясь в коде, мы можем посмотреть на изменение отображаемых показателей, сравниваемых моделей и т. Д.

Итак, теперь, немного покопавшись, мы можем воспроизвести результаты, которые дает модуль, мы точно понимаем, что делает модуль, и доверяем тому, как он на самом деле работает, что всегда жизненно важно при использовании любого нового инструмента. Вдобавок мы получили много возможностей настраивать вещи по своему усмотрению. Мы бы никогда не смогли сделать ничего из этого, если бы просто опробовали модуль и сдались, когда столкнулись с первым препятствием.