Полезное и актуальная, как раз думал, как по-красивее сделать иммутацию.
👍2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Пропущенные данные — распространённая проблема в реальных проектах. Причины могут быть разными: ошибки при сборе, повреждение файлов, неполные опросы и прочее.
Представляем три продвинутых способа иммутации пропусков с использованием Pandas и Scikit-learn:
Использует модели, например, Байесовскую регрессию или случайный лес, чтобы последовательно заполнять пропуски, обучаясь на известных данных.
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
iterative_imputer = IterativeImputer(random_state=42, max_iter=10)
df_imputed = pd.DataFrame(iterative_imputer.fit_transform(df), columns=df.columns)
print(df_imputed.isnull().sum().sum()) # Пропусков больше нет
Можно менять модель, например, использовать RandomForestRegressor для иммутации.
Заполняет пропуски, опираясь на похожие строки с известными значениями. Вес соседей можно задавать по расстоянию или равномерно.
from sklearn.impute import KNNImputer
knn_imputer = KNNImputer(n_neighbors=5, weights='distance')
df_knn = pd.DataFrame(knn_imputer.fit_transform(df), columns=df.columns)
print(df_knn.isnull().sum().sum())
Запускаем разные иммутационные модели, получаем несколько вариантов заполненных данных, а затем выбираем лучший результат, ориентируясь на ключевые признаки:
from sklearn.linear_model import BayesianRidge
from sklearn.ensemble import ExtraTreesRegressor, RandomForestRegressor
imputers = {
'bayesian_ridge': IterativeImputer(estimator=BayesianRidge(), random_state=42),
'extra_trees': IterativeImputer(estimator=ExtraTreesRegressor(n_estimators=10, random_state=42), random_state=42),
'rf_regressor': IterativeImputer(estimator=RandomForestRegressor(n_estimators=10, random_state=42), random_state=42)
}
imputed_datasets = {}
for name, imputer in imputers.items():
imputed_datasets[name] = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)
print(f"{name}: Средний доход = {imputed_datasets[name]['income'].mean():.2f}")
— KNN хорошо подходит для небольших числовых датасетов, но требует ресурсов на больших.
— Ансамблевые методы дают лучшее качество, но сложнее и тяжелее в вычислениях.
— MICE — золотая середина для многих задач.
Библиотека дата-сайентиста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒2
Forwarded from Представляешь,
создатели TikTok выкатили БЕСПЛАТНЫЙ аналог Cursor, еще и OPEN-SOURCE
ByteDance (да-да, те самые) выложили на GitHub исходники Trae Agent — ИИ-ассистента для программистов, который умеет писать код, править баги, задавать сам себе вопросы и даже запускать команды в терминале.
То есть буквально как Cursor, но с открытым кодом и без подписки на $60.
Что умеет:
- редактирует файлы и пишет коммиты,
- сам решает, что делать: рефакторить, тестить или гуглить,
- работает с GPT-4, Claude, OpenRouter и даже Doubao (внезапно),
- сохраняет «траекторию» своих действий — можно проверить, что он натворил.
Ссылка на GitHub: тык
@your_tech
ByteDance (да-да, те самые) выложили на GitHub исходники Trae Agent — ИИ-ассистента для программистов, который умеет писать код, править баги, задавать сам себе вопросы и даже запускать команды в терминале.
То есть буквально как Cursor, но с открытым кодом и без подписки на $60.
Что умеет:
- редактирует файлы и пишет коммиты,
- сам решает, что делать: рефакторить, тестить или гуглить,
- работает с GPT-4, Claude, OpenRouter и даже Doubao (внезапно),
- сохраняет «траекторию» своих действий — можно проверить, что он натворил.
Ссылка на GitHub: тык
@your_tech
#LLM
Сейчас произошел акт сравнения LLM с ризонингом.
На арене Deepseek, Алиса PRO и локально поднятая qwq с заданным системным промтом.
Запрос был про то, как можно извлечь фичи из поискового запроса.
Хуже всех оказалась Алиса. Она решила, что я делаю систему поиска и рассказала про то на каких признаках эти системы строятся. Совершенно бесполезная в рамках моего запроса информация.
На втором месте qwq. Она предложила только один способ: классификацию, но написала весь код реализации. Такой ответ может быть связан с системным промптом, в котором написано, что она помощник программиста и должна отвечать определенным образом с листингами.
Ну и Deepseek выдал большую телегу про то, что можно сделать, то есть именно то, что мне было интересно.
UPD пока писал, понял, что я Алисе не сказал пользоваться ризонингом и поиском. Запустил заново с этими атрибутами и ответ получился вполне хорошим. Не таким подробным, как у Deepseek, но коротко и по существу. Что в моем случае даже больше подходит под запрос, что выводит её в итоге на первое место.
Сейчас произошел акт сравнения LLM с ризонингом.
На арене Deepseek, Алиса PRO и локально поднятая qwq с заданным системным промтом.
Запрос был про то, как можно извлечь фичи из поискового запроса.
Хуже всех оказалась Алиса. Она решила, что я делаю систему поиска и рассказала про то на каких признаках эти системы строятся. Совершенно бесполезная в рамках моего запроса информация.
На втором месте qwq. Она предложила только один способ: классификацию, но написала весь код реализации. Такой ответ может быть связан с системным промптом, в котором написано, что она помощник программиста и должна отвечать определенным образом с листингами.
Ну и Deepseek выдал большую телегу про то, что можно сделать, то есть именно то, что мне было интересно.
UPD пока писал, понял, что я Алисе не сказал пользоваться ризонингом и поиском. Запустил заново с этими атрибутами и ответ получился вполне хорошим. Не таким подробным, как у Deepseek, но коротко и по существу. Что в моем случае даже больше подходит под запрос, что выводит её в итоге на первое место.
#open_source #dmdslab
Представляю вам очередную итерацию моих попыток сделать универсальные DS утилки: DmDSLab
Залил это дело в пупи, так что без проблем можете тестить:
Там пока особо полезного ничего нет. Но лично мне сейчас интересны общие относительно удобные структуры данных и функции для чистки данных.
Планирую постепенно дополнять функциями репу и писать доки на wiki.
Буду рад, если кому-то окажется полезным и вдвойне рад обратной связи 😊
Представляю вам очередную итерацию моих попыток сделать универсальные DS утилки: DmDSLab
Залил это дело в пупи, так что без проблем можете тестить:
pip install DmDSLab
Там пока особо полезного ничего нет. Но лично мне сейчас интересны общие относительно удобные структуры данных и функции для чистки данных.
Планирую постепенно дополнять функциями репу и писать доки на wiki.
Буду рад, если кому-то окажется полезным и вдвойне рад обратной связи 😊
Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
#classic
Попробовал "в бою" IterativeImputer и это немного разочаровательный опыт. На небольших данных я особого сравнения не делал, но это работало. А на больших (на самом деле не очень: в районе пары гигов) эта фигня за 7 часов не посчиталась. Тут, конечно, не без нюансов. Я не занимался особой настройкой, возможно, если более осознано заняться тонкой настройкой, то все отработало бы за более адекватное время, но что-то мне подсказывает, что заниматься тонкой настрой импутера и ждать не вразумительное количество времени без калбэков - это не то, что вы хотите при построении модели.
Я в итоге заполнял данные медианой и все равно получилась вполне себе приличного качества моделька, а импутинг такой занял всего 30 секунд.
// Картинка из небольшого исследоавния со сравнением методов импутинга. Если получится, хочу тоже такое провести.
Попробовал "в бою" IterativeImputer и это немного разочаровательный опыт. На небольших данных я особого сравнения не делал, но это работало. А на больших (на самом деле не очень: в районе пары гигов) эта фигня за 7 часов не посчиталась. Тут, конечно, не без нюансов. Я не занимался особой настройкой, возможно, если более осознано заняться тонкой настройкой, то все отработало бы за более адекватное время, но что-то мне подсказывает, что заниматься тонкой настрой импутера и ждать не вразумительное количество времени без калбэков - это не то, что вы хотите при построении модели.
Я в итоге заполнял данные медианой и все равно получилась вполне себе приличного качества моделька, а импутинг такой занял всего 30 секунд.
// Картинка из небольшого исследоавния со сравнением методов импутинга. Если получится, хочу тоже такое провести.
👍3
Замутил директ по минимальному прайсу. Не знаю зачем, но пусть будет)
Можете туда, например, писать интересующие Вас темы, которые я постараюсь разобрать.
Можете туда, например, писать интересующие Вас темы, которые я постараюсь разобрать.
😁2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Теперь не нужно писать кастомные CUDA-ядра или лезть в C++ —
cuda.cccl позволяет собирать мощные алгоритмы на Python, используя CUB и Thrust под капотом.Библиотека делится на:
parallel — высокоуровневые, компонуемые алгоритмы над массивами и итераторами.cooperative — блок/варп-ориентированные примитивы для numba.cuda.Почему быстрее:
Кому пригодится:
Установка:
pip install cuda-cccl
👉 Подробнее: https://clc.to/4qFCRQ
Библиотека дата-сайентиста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
#classic
Открыл для себя сегодня новый пласт задач в ML. Вернее переоткрыл, так как ранее уже сталкивался и даже решал, но сейчас подхожу к вопросу более системно.
Итак, PU learning (positive-unlabeled). Это класс задач, в котором в наличии только положительно размеченные классы и куча неразмеченных, то есть таких, где могут быть, как положительные, так и отрицательные метки, но где какие непонятно.
Самое банальное, что можно сделать: это тупо разметить все, что не положительное отрицательным. По опыту такие модели в итоге не очень соответствуют реальности. Ещё вариант - взять случайную выборку и разметить её негативным классом, чтобы классов стало 3: положительный неизвестный и негативны, тогда это классика semi-supervised learning, но тоже сомнительное соответствие истине.
Есть более продвинутые методы работы с этой задачей, но для бейслайна применить любой из этих методов можно.
Например, я искал пользователей, которые владеют автомобилем. У меня есть достоверные единички и огромное число неразмеченных пользователей. Я сделал рандомную выборку неразмеченных, счел их ноликами и построил модель. Получилась отличная модель с отличными метриками. Случайных пользователей вне обучающей выборке отлично размечает, но есть нюанс...
Получилось, что только у 16% пользователей есть авто. Открываем социсследования, смотрим статистику. В РФ автомобиль есть у 30-50% граждан в зависимости от источника, что далеко от модельного распределения.
Эта тема точно пойдет ко мне в книгу, так что я пошел плотно исследовать её. Посты по теме еще будут😉
Открыл для себя сегодня новый пласт задач в ML. Вернее переоткрыл, так как ранее уже сталкивался и даже решал, но сейчас подхожу к вопросу более системно.
Итак, PU learning (positive-unlabeled). Это класс задач, в котором в наличии только положительно размеченные классы и куча неразмеченных, то есть таких, где могут быть, как положительные, так и отрицательные метки, но где какие непонятно.
Самое банальное, что можно сделать: это тупо разметить все, что не положительное отрицательным. По опыту такие модели в итоге не очень соответствуют реальности. Ещё вариант - взять случайную выборку и разметить её негативным классом, чтобы классов стало 3: положительный неизвестный и негативны, тогда это классика semi-supervised learning, но тоже сомнительное соответствие истине.
Есть более продвинутые методы работы с этой задачей, но для бейслайна применить любой из этих методов можно.
Например, я искал пользователей, которые владеют автомобилем. У меня есть достоверные единички и огромное число неразмеченных пользователей. Я сделал рандомную выборку неразмеченных, счел их ноликами и построил модель. Получилась отличная модель с отличными метриками. Случайных пользователей вне обучающей выборке отлично размечает, но есть нюанс...
Получилось, что только у 16% пользователей есть авто. Открываем социсследования, смотрим статистику. В РФ автомобиль есть у 30-50% граждан в зависимости от источника, что далеко от модельного распределения.
Эта тема точно пойдет ко мне в книгу, так что я пошел плотно исследовать её. Посты по теме еще будут
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Представляешь,
УСКОРЕННЫЙ на 30% Python 3.14 уже можно ПОТРОГАТЬ
Все благодаря первому релиз-кандидату грядущего апдейта. С заметным ускорением и кучей оптимизаций под капотом.
Самые интересные улучшения:
- встроенный JIT (теперь по умолчанию для Windows и macOS);
- free-threaded Python — настоящая многопоточность без GIL;
- UUID генерятся до 40% быстрее;
- CLI-инструменты теперь с цветным выводом (да, наконец-то);
В продакшен проектах лучше не использовать, но вот в петах и для изучения новшеств — самое то. Финальный релиз состоится 7 октября.
@your_tech
Все благодаря первому релиз-кандидату грядущего апдейта. С заметным ускорением и кучей оптимизаций под капотом.
Самые интересные улучшения:
- встроенный JIT (теперь по умолчанию для Windows и macOS);
- free-threaded Python — настоящая многопоточность без GIL;
- UUID генерятся до 40% быстрее;
- CLI-инструменты теперь с цветным выводом (да, наконец-то);
В продакшен проектах лучше не использовать, но вот в петах и для изучения новшеств — самое то. Финальный релиз состоится 7 октября.
@your_tech
🔥3
#open_source
#ml
#classic
#myproject@dm_projects_log
Я тут заново пересобрал либу. Очень заморочился с оформлением репы, как раньше не заморачивался. И ридми написал, и wiki замутил, все обмазано тестами и даже CICD пайплайн. Зачем я так заморочился? Наверное захотелось красоты, и в эту либу я верю примерно так же, как в HypEx.
Да от этого всего воняет нейронками, что не удивительно, ибо я их активно юзаю, но сам все ревьюю и много всего исправляю за нейронкой. Еще один косяк - почти все на русском. Меня штормило от русского к английскому, поэтому можно встретить и то и то. Забавно, что коммиты я пишу на английском, как и часть докстрингов с комментами, но все доки и описания на русском. Наверное мне просто так удобно, а пользоваться этим все равно вряд ли кто-то кроме меня будет.
Так вот... Зачем это все... Зачем вам может быть интересна эта версия либы? В целом, там в релизе все написано, но если коротко, то тут неплохая коллекция открытых данных с удобным инструментом для скачивания. Я их подбирал для одного своего конкретного исследования, но это именно отборные данные. Так что не брезгуйте юзать. Если есть желание, можно самостоятельно написать конфиг и выгрузить датасет с сайта. Правда работать будут только те, которые импортятся в Python.
P.S. Вообще есть более свежий релиз, но там я разбирался с ошибками сборки, обновлял README.md и упразднил автоматическую публикацию, так как с ней было слишком много проблем, а самому публиковать не сложно, так как есть написанный скрипт, так что функционально разницы нет.
#ml
#classic
#myproject@dm_projects_log
Я тут заново пересобрал либу. Очень заморочился с оформлением репы, как раньше не заморачивался. И ридми написал, и wiki замутил, все обмазано тестами и даже CICD пайплайн. Зачем я так заморочился? Наверное захотелось красоты, и в эту либу я верю примерно так же, как в HypEx.
Да от этого всего воняет нейронками, что не удивительно, ибо я их активно юзаю, но сам все ревьюю и много всего исправляю за нейронкой. Еще один косяк - почти все на русском. Меня штормило от русского к английскому, поэтому можно встретить и то и то. Забавно, что коммиты я пишу на английском, как и часть докстрингов с комментами, но все доки и описания на русском. Наверное мне просто так удобно, а пользоваться этим все равно вряд ли кто-то кроме меня будет.
Так вот... Зачем это все... Зачем вам может быть интересна эта версия либы? В целом, там в релизе все написано, но если коротко, то тут неплохая коллекция открытых данных с удобным инструментом для скачивания. Я их подбирал для одного своего конкретного исследования, но это именно отборные данные. Так что не брезгуйте юзать. Если есть желание, можно самостоятельно написать конфиг и выгрузить датасет с сайта. Правда работать будут только те, которые импортятся в Python.
P.S. Вообще есть более свежий релиз, но там я разбирался с ошибками сборки, обновлял README.md и упразднил автоматическую публикацию, так как с ней было слишком много проблем, а самому публиковать не сложно, так как есть написанный скрипт, так что функционально разницы нет.
GitHub
Release v1.0.0 - Первый стабильный релиз · Dmatryus/DmDSLab
История изменений
[1.0.0] - 2025-07-24
🎉 Первый стабильный релиз
Это первый стабильный релиз DmDSLab - набора инструментов для лаборатории Data Science, предназначенного для
автоматизации рутинных ...
[1.0.0] - 2025-07-24
🎉 Первый стабильный релиз
Это первый стабильный релиз DmDSLab - набора инструментов для лаборатории Data Science, предназначенного для
автоматизации рутинных ...
👍2🔥2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🎉 OpenCV исполнилось 25 лет — серьёзная веха для мира компьютерного зрения
Библиотека была выпущена Intel в 2000 году как open source — и с тех пор стала стандартом де-факто.
OpenCV democratized компьютерное зрение: сделала доступной обработку изображений и видео не только крупным лабораториям и корпорациям, но и каждому студенту, разработчику и энтузиасту.
Благодаря OpenCV миллионы людей научились:
— распознавать лица и объекты;
— строить системы трекинга и распознавания движений;
— анализировать кадры в реальном времени;
— автоматизировать обработку изображений и видео в исследованиях и бизнесе.
👉 25 лет спустя — это по-прежнему первая библиотека, которую изучают в CV, и первый инструмент, к которому тянется рука при решении практической задачи.
Поздравляем библиотеку — 🎉
🔗 Блог-пост в честь юбилея: https://clc.to/zEyBLQ
А вы помните, с чего началось ваше знакомство с OpenCV?
Библиотека дата-сайентиста #свежак
Библиотека была выпущена Intel в 2000 году как open source — и с тех пор стала стандартом де-факто.
OpenCV democratized компьютерное зрение: сделала доступной обработку изображений и видео не только крупным лабораториям и корпорациям, но и каждому студенту, разработчику и энтузиасту.
Благодаря OpenCV миллионы людей научились:
— распознавать лица и объекты;
— строить системы трекинга и распознавания движений;
— анализировать кадры в реальном времени;
— автоматизировать обработку изображений и видео в исследованиях и бизнесе.
👉 25 лет спустя — это по-прежнему первая библиотека, которую изучают в CV, и первый инструмент, к которому тянется рука при решении практической задачи.
Поздравляем библиотеку — 🎉
А вы помните, с чего началось ваше знакомство с OpenCV?
Библиотека дата-сайентиста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
#open_source
#ml
#classic
#myproject@dm_projects_log
Замутил новую версию либы. Переработал загрузчик датасетов полностью.
Что не отображено в доках, так это изменение подхода к разработке: больше ручной работы - меньше нейронок.
#ml
#classic
#myproject@dm_projects_log
Замутил новую версию либы. Переработал загрузчик датасетов полностью.
Что не отображено в доках, так это изменение подхода к разработке: больше ручной работы - меньше нейронок.
GitHub
Release DmDSLab 2.0.0 - UCI Integration & Modern Python · Dmatryus/DmDSLab
🎉 DmDSLab 2.0.0 - UCI Integration & Modern Python
Мы рады представить DmDSLab 2.0.0 - крупнейшее обновление библиотеки с момента её создания! Эта версия привносит долгожданную интеграцию с UCI ...
Мы рады представить DmDSLab 2.0.0 - крупнейшее обновление библиотеки с момента её создания! Эта версия привносит долгожданную интеграцию с UCI ...
🔥2
#classic #open_source
Nvidia выпустили статью об ускорении вычислений в pandas посредством использования GPU через библиотеку NVIDIA cuDF.
Прикол в том, что его применение (по крайней мере в тетрадках) не требует переписывания кода, а только использования магической операции.
Что касается использования не в тетрадке, то операции надо делать через библиотечный датафрейм, у которого API идентичное пандасовскому.
В статье разобраны 3 кейса с ускорением.
Nvidia выпустили статью об ускорении вычислений в pandas посредством использования GPU через библиотеку NVIDIA cuDF.
Прикол в том, что его применение (по крайней мере в тетрадках) не требует переписывания кода, а только использования магической операции.
Что касается использования не в тетрадке, то операции надо делать через библиотечный датафрейм, у которого API идентичное пандасовскому.
В статье разобраны 3 кейса с ускорением.
NVIDIA Technical Blog
3 pandas Workflows That Slowed to a Crawl on Large Datasets—Until We Turned on GPUs
If you work with pandas, you’ve probably hit the wall. It’s that moment when your trusty workflow, so elegant on smaller datasets, grinds to a halt on a large one. A script that once took seconds now…
threshold_methods.html
54.8 KB
#classic
Я тут на прошлой неделе провел мини ресерч по выбору порога predict_proba для псевдо разметки. Результатами сразу не стал делиться, так как планировал ещё поставить эксперимент и посмотреть на методы в деле, но это довольно муторно, так что я решил отложить.
На практике мы применяем метод через оптимизацию F1, но в связке с другими метриками, которые могут быть понятнее бизнесу или просто лучше подходить под специфику задачи. Поэтому луче строить множество графиков и метрик для балансировки, чтобы принять решение осознано, а не полагаясь на максинг метрики.
У меня в ресерче указано, что F1 можно применять для выбора порога на бинарной классификации, но если настраивается порог для каждого класса в отдельности (что рекомендуется делать при различиях в распределениях классов), то можно решать задачу, как бинарную классификацию в формате один-против всех для каждого класса.
Я тут на прошлой неделе провел мини ресерч по выбору порога predict_proba для псевдо разметки. Результатами сразу не стал делиться, так как планировал ещё поставить эксперимент и посмотреть на методы в деле, но это довольно муторно, так что я решил отложить.
На практике мы применяем метод через оптимизацию F1, но в связке с другими метриками, которые могут быть понятнее бизнесу или просто лучше подходить под специфику задачи. Поэтому луче строить множество графиков и метрик для балансировки, чтобы принять решение осознано, а не полагаясь на максинг метрики.
У меня в ресерче указано, что F1 можно применять для выбора порога на бинарной классификации, но если настраивается порог для каждого класса в отдельности (что рекомендуется делать при различиях в распределениях классов), то можно решать задачу, как бинарную классификацию в формате один-против всех для каждого класса.
pandas-polars-comparison-html.html
36 KB
#classic
Вы наверняка слышали, что Polaris быстрее, сильнее и лучше, чем Pandas. Я всегда относился к этому с некоторым скепсисом. Теперь не буду 🙃
В общем, провел на днях ресерч по вопросу. Сам ресерч во вложении, но, если коротко: отдавайте предпочтение Polaris на этапе ETL. Большинство ML библиотек не поддерживают Polaris, так что в ML данные лучше передавать в numpy или Pandas.
Вы наверняка слышали, что Polaris быстрее, сильнее и лучше, чем Pandas. Я всегда относился к этому с некоторым скепсисом. Теперь не буду 🙃
В общем, провел на днях ресерч по вопросу. Сам ресерч во вложении, но, если коротко: отдавайте предпочтение Polaris на этапе ETL. Большинство ML библиотек не поддерживают Polaris, так что в ML данные лучше передавать в numpy или Pandas.
🔥3
Forwarded from Градиент обреченный (Sergei Averkiev)
🔺 Открытые модели от OpenAI
Долгожданный open source от дяди Сэма.
🔸 Выложили две модели — 20B и 120B. Обе MoE, активных параметров у них 3.6B и 5.1B.
🔸 Должны влазить в 16Gb и 80Gb видеокарты. Вот тут релиз transformers 4.55.0 с описанием.
🔸 Модельки чисто текстовые, с контекстом 128k. Токенайзер тот же, что у gpt-4o.
🔸 Есть демо, чтобы поиграться с моделями.
👉 HF | Релиз
Долгожданный open source от дяди Сэма.
🔸 Выложили две модели — 20B и 120B. Обе MoE, активных параметров у них 3.6B и 5.1B.
🔸 Должны влазить в 16Gb и 80Gb видеокарты. Вот тут релиз transformers 4.55.0 с описанием.
🔸 Модельки чисто текстовые, с контекстом 128k. Токенайзер тот же, что у gpt-4o.
🔸 Есть демо, чтобы поиграться с моделями.
👉 HF | Релиз
