Forwarded from Data Secrets
Самый полный репозиторий библиотек Python для Data Science разработчика
Если ты занимаешься Data Science, то знаешь, как важно иметь под рукой нужные инструменты для эффективной работы. Мы тут как раз нашли заметку, в которой перечислены все самые полезные и эффективные библиотеки и модули Python для разных задач. Есть разделы "Очистка и обработка", "Рекомендательные системы", "Временные ряды", "NLP", "Визуализация". Все со ссылками на документацию.
https://analyticsindiamag.com/python-libraries-repository-for-data-science/
😻 #advice #python
Если ты занимаешься Data Science, то знаешь, как важно иметь под рукой нужные инструменты для эффективной работы. Мы тут как раз нашли заметку, в которой перечислены все самые полезные и эффективные библиотеки и модули Python для разных задач. Есть разделы "Очистка и обработка", "Рекомендательные системы", "Временные ряды", "NLP", "Визуализация". Все со ссылками на документацию.
https://analyticsindiamag.com/python-libraries-repository-for-data-science/
Please open Telegram to view this post
VIEW IN TELEGRAM
Analytics India Magazine
Python Libraries Repository for Data Science | Analytics India Magazine
We have curated the most comprehensive list of 200+ python libraries for data science & machine learning; with tutorial, release date & docs.
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#mlops #mlflow
Продолжаю изучать mlflow. Очень понравилась, что по обученной модели можно быстро получить список метрик и значимостей признаков. А ещё можно даже настроить критерии приёмки модели в бой, абсолютные (точность не менее X%) и относительные (точность не менее Y% лучше чем DummyClassifier). Ложка дёгтя в том, что указанный в доке вызов
https://mlflow.org/docs/latest/models.html#model-validation
Продолжаю изучать mlflow. Очень понравилась, что по обученной модели можно быстро получить список метрик и значимостей признаков. А ещё можно даже настроить критерии приёмки модели в бой, абсолютные (точность не менее X%) и относительные (точность не менее Y% лучше чем DummyClassifier). Ложка дёгтя в том, что указанный в доке вызов
mlflow.models.list_evaluators() не работает.https://mlflow.org/docs/latest/models.html#model-validation
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#mlops #tracking #mlflow
Несколько классных трюков для продуктивной работы с mlflow. Мне оч понравилась встройка кастомных веб-страничек и дочерние эксперименты (UI с прошлого года поддерживает многоуровневость).
По идее, в МЛ эксперимент может равняться фичерсету+таргету, а запуски (runs) могут соответствовать разным конвейерам обработки (с/без FS,RS,OR,ES,HPT).
Дочерние запуски нужны, если хотим логировать промежуточные модели, обученные на фолдах CV. Или если хотим на одних и тех же данных/конвейере сравнить несколько моделей разных классов (gbdt, ann). Или если включено HPT, тогда каждый запуск порождает N субмоделей с разными гиперпараметрами.
К сожалению, вложенными могут быть только запуски, но не эксперименты, хотя это вроде бы на поверхности. У нас же в рамках одного проекта может быть несколько датасетов, несколько задач, у каждой много таргетов. (+Желательны свои уровни допуска разным юзерам, но об этом умолчим). Сейчас пользователям MLFlow приходится, видимо, эту иерархию разворачивать в плоские структуры. Или как-то лепить в тэги.
https://towardsdatascience.com/5-tips-for-mlflow-experiment-tracking-c70ae117b03f
Несколько классных трюков для продуктивной работы с mlflow. Мне оч понравилась встройка кастомных веб-страничек и дочерние эксперименты (UI с прошлого года поддерживает многоуровневость).
По идее, в МЛ эксперимент может равняться фичерсету+таргету, а запуски (runs) могут соответствовать разным конвейерам обработки (с/без FS,RS,OR,ES,HPT).
Дочерние запуски нужны, если хотим логировать промежуточные модели, обученные на фолдах CV. Или если хотим на одних и тех же данных/конвейере сравнить несколько моделей разных классов (gbdt, ann). Или если включено HPT, тогда каждый запуск порождает N субмоделей с разными гиперпараметрами.
К сожалению, вложенными могут быть только запуски, но не эксперименты, хотя это вроде бы на поверхности. У нас же в рамках одного проекта может быть несколько датасетов, несколько задач, у каждой много таргетов. (+Желательны свои уровни допуска разным юзерам, но об этом умолчим). Сейчас пользователям MLFlow приходится, видимо, эту иерархию разворачивать в плоские структуры. Или как-то лепить в тэги.
https://towardsdatascience.com/5-tips-for-mlflow-experiment-tracking-c70ae117b03f
Medium
5 Tips for MLflow Experiment Tracking
Push MLflow to its limits: visualize, organize, alter and correct your mlflow runs
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#optimisation #numba #numpy #auc #fastauc
Ещё немного про оптимизацию. В попытке найти быструю реализацию roc_auc набрёл на библу factauc, где автор не поленился и сделал numba-оптимизированную, и даже сишную реализации. В сишную он явно вложился, вон сколько кода, и не напрасно: она получилась самой быстрой, почти вдвое быстрее нумбовской (что меня уже насторожило). Проверил на своём массивчике 8M float-ов, действительно самые тормозные catboost и sklearn (больше 2 секунд), фастаук уже позволяет прыгнуть до 0.6 секунды с нумба и до 0.4 с Си++. Глянул нумбовскую реализацию, а там argsort закомпилирован. Вспомнилось, что раньше нумба замедляла эту функцию. Вынес argsort "за скобки" njit-компилятора, и вуаля, С++ реализация побита, 0.3 секунды )) Даже неловко было сообщать автору, но что поделаешь.
P.S. Всеволод сказал, что на неделе предлагаемое улучшение потестит и, если что, в fastauc замёрджит )
Ещё немного про оптимизацию. В попытке найти быструю реализацию roc_auc набрёл на библу factauc, где автор не поленился и сделал numba-оптимизированную, и даже сишную реализации. В сишную он явно вложился, вон сколько кода, и не напрасно: она получилась самой быстрой, почти вдвое быстрее нумбовской (что меня уже насторожило). Проверил на своём массивчике 8M float-ов, действительно самые тормозные catboost и sklearn (больше 2 секунд), фастаук уже позволяет прыгнуть до 0.6 секунды с нумба и до 0.4 с Си++. Глянул нумбовскую реализацию, а там argsort закомпилирован. Вспомнилось, что раньше нумба замедляла эту функцию. Вынес argsort "за скобки" njit-компилятора, и вуаля, С++ реализация побита, 0.3 секунды )) Даже неловко было сообщать автору, но что поделаешь.
P.S. Всеволод сказал, что на неделе предлагаемое улучшение потестит и, если что, в fastauc замёрджит )
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#optimization #ml #metrics #python #numba #codegems
В общем, sklearn-овские метрики оказались слишком медленными, пришлось их переписать на numba. Вот пример classification_report, который работает в тысячу раз быстрее и поддерживает почти всю функциональность (кроме весов и микровзвешивания). Также оптимизировал метрики auc (алгоритм взят из fastauc) и calibration (считаю бины предсказанные vs реальные, потом mae/std от их разностей). На 8M сэмплов всё работает за ~30 миллисекунд кроме auc, та ~300 мс. Для сравнения, scikit-learn-овские работают от нескольких секунд до нескольких десятков секунд.
В общем, sklearn-овские метрики оказались слишком медленными, пришлось их переписать на numba. Вот пример classification_report, который работает в тысячу раз быстрее и поддерживает почти всю функциональность (кроме весов и микровзвешивания). Также оптимизировал метрики auc (алгоритм взят из fastauc) и calibration (считаю бины предсказанные vs реальные, потом mae/std от их разностей). На 8M сэмплов всё работает за ~30 миллисекунд кроме auc, та ~300 мс. Для сравнения, scikit-learn-овские работают от нескольких секунд до нескольких десятков секунд.
@njit()
def fast_classification_report(
y_true: np.ndarray, y_pred: np.ndarray, nclasses: int = 2, zero_division: int = 0
):
"""Custom classification report, proof of concept."""
N_AVG_ARRAYS = 3 # precisions, recalls, f1s
# storage inits
weighted_averages = np.empty(N_AVG_ARRAYS, dtype=np.float64)
macro_averages = np.empty(N_AVG_ARRAYS, dtype=np.float64)
supports = np.zeros(nclasses, dtype=np.int64)
allpreds = np.zeros(nclasses, dtype=np.int64)
misses = np.zeros(nclasses, dtype=np.int64)
hits = np.zeros(nclasses, dtype=np.int64)
# count stats
for true_class, predicted_class in zip(y_true, y_pred):
supports[true_class] += 1
allpreds[predicted_class] += 1
if predicted_class == true_class:
hits[predicted_class] += 1
else:
misses[predicted_class] += 1
# main calcs
accuracy = hits.sum() / len(y_true)
balanced_accuracy = np.nan_to_num(hits / supports, copy=True, nan=zero_division).mean()
recalls = hits / supports
precisions = hits / allpreds
f1s = 2 * (precisions * recalls) / (precisions + recalls)
# fix nans & compute averages
for arr in (precisions, recalls, f1s):
np.nan_to_num(arr, copy=False, nan=zero_division)
weighted_averages[i] = (arr * supports).sum() / len(y_true)
macro_averages[i] = arr.mean()
return hits, misses, accuracy, balanced_accuracy, supports, precisions, recalls, f1s, macro_averages, weighted_averagesForwarded from Data Secrets
Начинаем погружаться в Марковские цепи
Это такая математическая модель, которая с успехом применяется в разных областях, таких как машинное обучение, генерация текстов или музыки, криптография и многих других. Ей много лет: она была разработана Андреем Марковым в начале 20 века.
😻 #math
Это такая математическая модель, которая с успехом применяется в разных областях, таких как машинное обучение, генерация текстов или музыки, криптография и многих других. Ей много лет: она была разработана Андреем Марковым в начале 20 века.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Нескучный Data Science (Евгений Смирнов)
Как повысить качество модели кредитного скоринга, не добавляя новые источники данных?
🤔 Источников данных в кредитном скоринге становится все больше, и возникает вопрос: почему бы не попробовать смешивать их не на уровне предсказаний, а на некотором более низком уровне?
🔖 В статье от @nickimpark вы узнаете:
1️⃣ Как построить единую нейросетевую модель, работающую на нескольких источниках последовательных данных?
2️⃣ Как получить из модели эмбеддинг клиента по источнику данных?
3️⃣ Почему смешивание моделей на уровне эмбеддингов позволяет повысить итоговое качество?
4️⃣ Какой эффект в задаче кредитного скоринга можно получить с использованием такого подхода?
📺 Лень читать длинные статьи? Смотрите видео-выступление от автора по этой теме на DataFest 2023
💬 А как вы объединяете нейронные сети на различных источниках данных?
🤔 Источников данных в кредитном скоринге становится все больше, и возникает вопрос: почему бы не попробовать смешивать их не на уровне предсказаний, а на некотором более низком уровне?
🔖 В статье от @nickimpark вы узнаете:
📺 Лень читать длинные статьи? Смотрите видео-выступление от автора по этой теме на DataFest 2023
💬 А как вы объединяете нейронные сети на различных источниках данных?
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Secrets
Про pipe в pandas
pipe - это метод реализации паплайна в pandas через последовательную цепочку преобразований (не путать с Pipeline из скалерна).
Например, у нас есть ряд функций, каждая из которых отвечает за какое-то преобразование. Тогда пайплайн в pandas можно реализовать так:
😻 #analytics #python
pipe - это метод реализации паплайна в pandas через последовательную цепочку преобразований (не путать с Pipeline из скалерна).
Например, у нас есть ряд функций, каждая из которых отвечает за какое-то преобразование. Тогда пайплайн в pandas можно реализовать так:
def normilize(df):
...
return df
def fill_null(df, method):
...
return df
def parse_time(df):
...
return df
new_df = (df
.pipe(normilize)
.pipe(fill_null, method='median')
.pipe(parse_time)
)
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Secrets
Google опубликовал серию бесплатных курсов по генеративному ИИ
Всего серия состоит из девяти курсов:
– Основы генеративного искусственного интеллекта
– Введение в большие языковые модели
– Ответственное использование искусственного интеллекта
– Техники генерации изображений
– Работа с кодерами и декодерами
– Механизмы внимания
– Использование трансформеров и моделей BERT
– Создание image-to-text моделей
– Знакомство со студией Gen AI
Каждый курс представлен в формате, включающем одно видео, один документ и один контрольный тест для каждой темы. Обучение абсолютно бесплатное, и по завершении Google даст вам специальный виртуальный значок. Очень круто!
😻 #advice
Всего серия состоит из девяти курсов:
– Основы генеративного искусственного интеллекта
– Введение в большие языковые модели
– Ответственное использование искусственного интеллекта
– Техники генерации изображений
– Работа с кодерами и декодерами
– Механизмы внимания
– Использование трансформеров и моделей BERT
– Создание image-to-text моделей
– Знакомство со студией Gen AI
Каждый курс представлен в формате, включающем одно видео, один документ и один контрольный тест для каждой темы. Обучение абсолютно бесплатное, и по завершении Google даст вам специальный виртуальный значок. Очень круто!
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Generative Anton
Это невероятно, но no-GIL в Python’e таки дотащили до принятия и в 3.13 уже обещают экспериментальные no-GIL билды, а в течении 5 лет no-GIL должен стать стандартом и GIL не будет совсем. Если кому-то интересно, как они это выпиливают, то все хорошо расписано в изначальном пропозале PEP-703.
Discussions on Python.org
A Steering Council notice about PEP 703 (Making the Global Interpreter Lock Optional in CPython)
Posting for the whole Steering Council, on the subject of @colesbury’s PEP 703 (Making the Global Interpreter Lock Optional in CPython). Thank you, everyone, for responding to the poll on the no-GIL proposal. It’s clear that the overall sentiment is positive…
🔥1
Forwarded from partially unsupervised
Есть классическая картинка для иллюстрации жизненного цикла технологических инноваций - Gartner Hype Cycle. Он, конечно, скорее про adoption компаниями, но почему бы не натянуть эту фигуру и на отдельного индивида? Кажется, что прошло уже достаточно времени, чтобы ChatGPT прошел через этот hype cycle персонально для меня и достиг плато продуктивности: равномерное использование, выжившие юзкейсы, отсутствие восторгов и разочарований.
Так вот, лично у меня сложилось четыре явных паттерна использования:
1) Бюрократ-копирайтер
2) Поверхностный эрудит
3) Junior software engineer
4) Въедливый критик
"-вываливай в продакшен.
Это именно персональные примеры использования, а не приложения вокруг API. Хотя я как раз использую не веб-интерфейс, а консольный heygpt: он быстрее, удобнее и даже дешевле, чем обычная подписка на GPT-4.
Расскажите в комментариях про сложившиеся у вас паттерны!
Так вот, лично у меня сложилось четыре явных паттерна использования:
1) Бюрократ-копирайтер
"Перепиши этот месседж для официального емейла / обращения в службу поддержки / аппликейшена в организацию / маркетингового описания". В общем, для переписывания текста. Например, так пишутся жалобы в банк, заблокировавший транзакцию, или описание биографии для сайта издательства.2) Поверхностный эрудит
"Опиши состояние дел в какой-то области / объясни с учетом моего уровня (не)знания в соседних областях". Примеры вопросов: какой софт используют 3д художники для работы с текстурами? чем replacement map отличается от height map? какие острова на Азорах выбрать для недельного отпуска, если меня интересуют хайки и природные достопримечательности? какие прикладные применения сверхпроводимости? Дьявол обычно в деталях, и слишком глубоко закапываться с LLM не стоит, но можно быстро получить поверхностное понимание.3) Junior software engineer
"Напиши прототип такой штуки, используя этот незнакомый мне, но популярный в целом API". Из последнего: делал так ORM на SQLAlchemy и blender-скрипты для headless рендеринга. В обоих случаях хочется, чтобы оно хоть как-то работало, а разбираться в апи не хочется - не предполагаю, что этот код нужно будет долго поддерживать или развивать.4) Въедливый критик
"
Найди недостатки и корнеркейсы в следующей идее/коде/тексте: {{INSERT YOUR STUFF}}". Люди неплохо справляются с поиском подтверждений своей идеи или дизайна (confirmation bias и его друзья), а по-хорошему надо искать опровержения и логические нестыковки. Кстати, отлично сочетается с предыдущим режимом использования: напиши-покритикуй-исправьЭто именно персональные примеры использования, а не приложения вокруг API. Хотя я как раз использую не веб-интерфейс, а консольный heygpt: он быстрее, удобнее и даже дешевле, чем обычная подписка на GPT-4.
Расскажите в комментариях про сложившиеся у вас паттерны!