Dmatryusофрения
41 subscribers
291 photos
10 videos
15 files
148 links
Пишу о книгах, лидерстве, технологиях, opensource, своих проектах и наверное чем-то ещё. Ну и репосты IT приколямб.
Download Telegram
Channel photo updated
Полезное и актуальная, как раз думал, как по-красивее сделать иммутацию.
👍2
↔️ Как не потерять данные из-за пропусков: практические стратегии

Пропущенные данные — распространённая проблема в реальных проектах. Причины могут быть разными: ошибки при сборе, повреждение файлов, неполные опросы и прочее.

Представляем три продвинутых способа иммутации пропусков с использованием Pandas и Scikit-learn:

1️⃣ Множественная иммутация с помощью цепочек уравнений (MICE)

Использует модели, например, Байесовскую регрессию или случайный лес, чтобы последовательно заполнять пропуски, обучаясь на известных данных.
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 для иммутации.

2️⃣ Иммутация с помощью K-ближайших соседей (KNN)

Заполняет пропуски, опираясь на похожие строки с известными значениями. Вес соседей можно задавать по расстоянию или равномерно.
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())


3️⃣ Ансамблевая иммутация разными моделями

Запускаем разные иммутационные модели, получаем несколько вариантов заполненных данных, а затем выбираем лучший результат, ориентируясь на ключевые признаки:
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
Если руки дойдут, попробую и расскажу, что как)
создатели TikTok выкатили БЕСПЛАТНЫЙ аналог Cursor, еще и OPEN-SOURCE

ByteDance (да-да, те самые) выложили на GitHub исходники Trae Agent — ИИ-ассистента для программистов, который умеет писать код, править баги, задавать сам себе вопросы и даже запускать команды в терминале.

То есть буквально как Cursor, но с открытым кодом и без подписки на $60.

Что умеет:

- редактирует файлы и пишет коммиты,
- сам решает, что делать: рефакторить, тестить или гуглить,
- работает с GPT-4, Claude, OpenRouter и даже Doubao (внезапно),
- сохраняет «траекторию» своих действий — можно проверить, что он натворил.


Ссылка на GitHub: тык

@your_tech
#LLM

Сейчас произошел акт сравнения LLM с ризонингом.

На арене Deepseek, Алиса PRO и локально поднятая qwq с заданным системным промтом.

Запрос был про то, как можно извлечь фичи из поискового запроса.

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

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

Ну и Deepseek выдал большую телегу про то, что можно сделать, то есть именно то, что мне было интересно.

UPD пока писал, понял, что я Алисе не сказал пользоваться ризонингом и поиском. Запустил заново с этими атрибутами и ответ получился вполне хорошим. Не таким подробным, как у Deepseek, но коротко и по существу. Что в моем случае даже больше подходит под запрос, что выводит её в итоге на первое место.
#open_source #dmdslab

Представляю вам очередную итерацию моих попыток сделать универсальные DS утилки: DmDSLab

Залил это дело в пупи, так что без проблем можете тестить:
pip install DmDSLab


Там пока особо полезного ничего нет. Но лично мне сейчас интересны общие относительно удобные структуры данных и функции для чистки данных.

Планирую постепенно дополнять функциями репу и писать доки на wiki.

Буду рад, если кому-то окажется полезным и вдвойне рад обратной связи 😊
Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
↔️ Как не потерять данные из-за пропусков: практические стратегии Пропущенные данные — распространённая проблема в реальных проектах. Причины могут быть разными: ошибки при сборе, повреждение файлов, неполные опросы и прочее. Представляем три продвинутых…
#classic

Попробовал "в бою" IterativeImputer и это немного разочаровательный опыт. На небольших данных я особого сравнения не делал, но это работало. А на больших (на самом деле не очень: в районе пары гигов) эта фигня за 7 часов не посчиталась. Тут, конечно, не без нюансов. Я не занимался особой настройкой, возможно, если более осознано заняться тонкой настройкой, то все отработало бы за более адекватное время, но что-то мне подсказывает, что заниматься тонкой настрой импутера и ждать не вразумительное количество времени без калбэков - это не то, что вы хотите при построении модели.

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

// Картинка из небольшого исследоавния со сравнением методов импутинга. Если получится, хочу тоже такое провести.
👍3
Замутил директ по минимальному прайсу. Не знаю зачем, но пусть будет)

Можете туда, например, писать интересующие Вас темы, которые я постараюсь разобрать.
😁2
🔥 Новый уровень CUDA в Python: знакомьтесь с `cuda.cccl`

Теперь не нужно писать кастомные CUDA-ядра или лезть в C++ — cuda.cccl позволяет собирать мощные алгоритмы на Python, используя CUB и Thrust под капотом.

Библиотека делится на:
parallel — высокоуровневые, компонуемые алгоритмы над массивами и итераторами.
cooperative — блок/варп-ориентированные примитивы для numba.cuda.

Почему быстрее:
Никакой лишней памяти — итераторы вместо массивов.
Один фьюзнутый kernel вместо четырёх.
Минимум overhead'а от Python.

Кому пригодится:
Тем, кто пишет кастомные алгоритмы над PyTorch или CuPy.
Тем, кто хочет тонкий контроль над CUDA без C++.
Тем, кто расширяет существующие библиотеки или разрабатывает свои.

Установка:
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% граждан в зависимости от источника, что далеко от модельного распределения.

Эта тема точно пойдет ко мне в книгу, так что я пошел плотно исследовать её. Посты по теме еще будут 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
УСКОРЕННЫЙ на 30% Python 3.14 уже можно ПОТРОГАТЬ

Все благодаря первому релиз-кандидату грядущего апдейта. С заметным ускорением и кучей оптимизаций под капотом.

Самые интересные улучшения:

- встроенный 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 и упразднил автоматическую публикацию, так как с ней было слишком много проблем, а самому публиковать не сложно, так как есть написанный скрипт, так что функционально разницы нет.
👍2🔥2
🎉 OpenCV исполнилось 25 лет — серьёзная веха для мира компьютерного зрения

Библиотека была выпущена Intel в 2000 году как open source — и с тех пор стала стандартом де-факто.

OpenCV democratized компьютерное зрение: сделала доступной обработку изображений и видео не только крупным лабораториям и корпорациям, но и каждому студенту, разработчику и энтузиасту.

Благодаря OpenCV миллионы людей научились:
— распознавать лица и объекты;
— строить системы трекинга и распознавания движений;
— анализировать кадры в реальном времени;
— автоматизировать обработку изображений и видео в исследованиях и бизнесе.

👉 25 лет спустя — это по-прежнему первая библиотека, которую изучают в CV, и первый инструмент, к которому тянется рука при решении практической задачи.
Поздравляем библиотеку — 🎉

🔗 Блог-пост в честь юбилея: https://clc.to/zEyBLQ
А вы помните, с чего началось ваше знакомство с OpenCV?

Библиотека дата-сайентиста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
#open_source
#ml
#classic
#myproject@dm_projects_log

Замутил новую версию либы. Переработал загрузчик датасетов полностью.

Что не отображено в доках, так это изменение подхода к разработке: больше ручной работы - меньше нейронок.
🔥2
#classic #open_source

Nvidia выпустили статью об ускорении вычислений в pandas посредством использования GPU через библиотеку NVIDIA cuDF.

Прикол в том, что его применение (по крайней мере в тетрадках) не требует переписывания кода, а только использования магической операции.

Что касается использования не в тетрадке, то операции надо делать через библиотечный датафрейм, у которого API идентичное пандасовскому.

В статье разобраны 3 кейса с ускорением.
threshold_methods.html
54.8 KB
#classic

Я тут на прошлой неделе провел мини ресерч по выбору порога predict_proba для псевдо разметки. Результатами сразу не стал делиться, так как планировал ещё поставить эксперимент и посмотреть на методы в деле, но это довольно муторно, так что я решил отложить.

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

У меня в ресерче указано, что F1 можно применять для выбора порога на бинарной классификации, но если настраивается порог для каждого класса в отдельности (что рекомендуется делать при различиях в распределениях классов), то можно решать задачу, как бинарную классификацию в формате один-против всех для каждого класса.
pandas-polars-comparison-html.html
36 KB
#classic

Вы наверняка слышали, что 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 | Релиз