Статьи на тему data science, machine learning, big data, python, математика, нейронные сети, искусственный интеллект (artificial intelligence) Англоязычный канал по DS и Machinelearning -https://t.me/ds_international По сотрудничеству - @g_abashkin
⚙️ Рекомендательная система для вашего каталога научных работ (и не только!)
Показано, как собрать рекомендательную систему на своём архиве документов, даже если там куча форматов. NLP + графы = машинный архивариус, который сам подсовывает нужные файлы.
Читать...
📈 Подборка статей для вашей карьеры
• Эволюция архитектур нейросетей в компьютерном зрении: сегментация изображений
• Заяц не вырастет в акулу. Или секреты гибкой инженерной культуры от Александра Бындю
• Все, пора увольняться: что я поняла после работы в токсичных командах
• Базовое программирование, или Почему джуны не могут пройти к нам собеседование
• Я стал аналитиком, потому что не смог быть программистом
🔥 Самые интересные статьи за последние дни:
• Что читали на Хабре в 2024 году: анализ статей с Node.js, Google Sheets и каплей ChatGPT
• Поднимаем в облаке расшифровку речи в текст с помощью нейросетей. VPS на пределе возможностей
• Стоит ли ChatGPT о1 Pro своих денег? Небольшой тест-драйв модели
• Возможности LLM и RAG на примере реализации бота для поддержки клиентов
• Гетерогенные вычисления: проектирование и разработка вычислительной системы для нейросетей
👩💻 Напишите функцию для расчёта Accuracy вручную
В машинном обучении Accuracy — это метрика качества классификации. Показывает, сколько предсказаний модель сделала правильно.
Решение задачи🔽
def accuracy_score(y_true, y_pred):Читать полностью…
correct = 0
for true, pred in zip(y_true, y_pred):
if true == pred:
correct += 1
return correct / len(y_true)
# Пример использования:
y_true = [1, 0, 1, 1, 0, 1]
y_pred = [1, 0, 0, 1, 0, 1]
print(accuracy_score(y_true, y_pred)) # 0.833...
👩💻 Чем отличается метод .transform()
от .apply()
в pandas?
В pandas методы .transform()
и .apply()
часто используются для обработки данных по столбцам и строкам, но они работают по-разному. Метод .apply()
применяет функцию к каждому элементу или ряду, и возвращает объект любой формы (например, DataFrame или Series). В отличие от него, .transform()
применяет функцию к каждой ячейке или группе и возвращает объект той же формы, что и входной.
➡️ Пример:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
# Используем .apply() для вычисления суммы по столбцам
print(df.apply(sum)) # Вернет Series с суммами столбцов
# Используем .transform() для нормализации каждого значения в столбце
print(df.transform(lambda x: (x - x.mean()) / x.std()))
# Вернет DataFrame с нормализованными значениями
🗣 .apply() подходит для сложных операций и агрегаций, а .transform() удобно использовать для обработки данных с сохранением исходной структуры.
🤔 Выбираем MLOps инструменты с учётом зрелости команды
В статье разбирают, как выбрать MLOps-инструменты под уровень зрелости команды: почему решений много, но не все подходят, и как не утонуть в многообразии вариантов.
Читать...
➡️ Как Duolingo юзает машинное обучение для прокачки английского: кратко и по делу
В статье рассказывают, как ИИ сделал Duolingo фабрикой языковых курсов: генерация контента, проверка ответов, адаптация заданий — всё на автомате. Учить стало быстрее.
Читать...
👩💻 Предсказание цены дома по площади
Построить сверточную нейронную сеть (CNN) для классификации изображений из набора данных CIFAR-10.
Модель должна предсказывать класс объекта на изображении. Датасет CIFAR-10 содержит 60,000 изображений размером 32x32 пикселя, разделенных на 10 классов:
— Самолет, Автомобиль, Птица, Кот, Олень, Собака, Лягушка, Лошадь, Корабль, Грузовик.
Требования к модели:
• Использовать сверточные слои для выделения признаков.
• Применить слои подвыборки (пулинг) для уменьшения размеров карты признаков.
• Добавить полносвязные слои для классификации на основе выделенных признаков.
• Использовать функцию активации ReLU для скрытых слоев и softmax для выходного слоя.
• Оценить точность модели на тестовых данных.
Входные данные: изображения размера 32x32 с тремя каналами (RGB).
Решение задачи🔽
import tensorflow as tfЧитать полностью…
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# Загрузка данных
(X_train, y_train), (X_test, y_test) = cifar10.load_data()
# Нормализация данных
X_train, X_test = X_train / 255.0, X_test / 255.0
# Создание модели CNN
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
MaxPooling2D((2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D((2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
# Компиляция модели
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Обучение модели
model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test))
# Оценка модели
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Точность модели: {accuracy:.2f}")
🚀 Правда или нет, что Google победил Cursor?
В статье сравнивают два AI-инструмента для разработки: Firebase Studio от Google и Cursor от Anysphere. Кто круче — облачная платформа или интегрированный редактор?
Читать...
⚙️ Как построить хороший пайплайн разработки ML-модели
Рассказываю, как построить понятный и гибкий ML-процесс: чтобы данные масштабировались, новички вливались, а модель не вела себя как капризный кот.
Читать...
🌱 Рост идёт от дискомфорта
Если задачи всегда кажутся «понятными», значит, ты топчешься на месте.
👉 Совет: бери задачи, от которых чуть некомфортно. Не настолько, чтобы парализовало, а настолько, чтобы пришлось учиться новому. Этот дискомфорт — главный двигатель развития в IT.
⚙️ Пишем персонального AI-ассистента на Python
Делюсь, как собрать простого голосового ассистента: он сам распознаёт речь, общается с LLM и отвечает голосом. Без GUI, но с кучей потенциала. Всё на Python, всё работает.
Читать...
📈 Подборка статей для вашей карьеры
• Как продакт-менеджеру учить английский: план, сроки, советы
• Иллюзия прогресса: почему мне не удалось дать студентам-айтишникам реальный опыт
• Interview copilots: как кандидаты используют ChatGPT на интервью
• Моя история входа в IT: как я ломал стены своих ограничений
• Как мы разработали систему грейдинга для системных аналитиков
⚙️ Обнаружение аномалий в данных временных рядов с помощью статистического анализа
Рассказываю, почему статичные пороги — не выход, когда дело доходит до пользовательской активности. Покажу, как в таких случаях спасает обнаружение аномалий.
Читать...
⚙️ ChatGPT все еще не догнать: что происходит на ИИ-рынке к середине 2025 года?
2025 год подходит к экватору, поэтому самое время посмотреть, как поменялись позиции крупнейших компаний-разработчиков. Но для начала предлагаю посмотреть на две иллюстрации. Первая — рейтинг ИИ от ресурса LMArena.
Читать...
Собрали для Вас подборку интересных каналов.👨💻
🖥 PytStart - стартуй в Python с нами!
🐍 PythonTalk. Авторский канал, где Python, AI и здравый смысл встречаются. Разбор свежих open-source инструментов, мануалы, новости с IT-передовой и трезвый взгляд на AI-хайп.
🐍Frontender’s notes - Годные статьи для Frontend разработчиков
HTML, CSS, JS, React, Angular, Vue, TypeScript, Redux, MobX, NodeJS.
🐍Data Science | Machinelearning [ru] - Статьи на тему data science, machine learning, big data, python, математика, нейронные сети, искусственный интеллект (artificial intelligence)
🐍Node.JS [ru] | Серверный JavaScript - Все о разработке backend части на JavaScript (Node JS).
А так же: Express JS, Next JS, Nest, Socket.IO
And
🐍Python Tech Code — все, что нужно, чтобы стать настоящим гуру в программировании на Python.
➡️ Простой и понятный материал.
➡️ Практические примеры и увлекательные задачи.
➡️ Подсказки, советы и полезные ресурсы.
🐍Indigo Python - твой путь к мастерству в коде!
🐍Вакансии для тестировщиков - канал с вакансиями для тестировщиков.
🔵Вывожу за грань обыденного предпринимателей и классных людей!
Я Ася ментальный микрохирург, интегративный психолог/эзотерик
Помогаю 15 лет вырасти многократно в доходе, энергии, обрести баланс, любовь, счастье
Жду тебя: /channel/bazenova1
Хочешь участвовать в подборке? Пиши!
⚙️ Организация ML-проекта с примерами
Организация - это важно. То же относится к ML-проектам. Из каких компонент он должен состоять? Как оформить проект, чтобы всего хватало и было удобно это масштабировать? Рассмотрим организацию по шаблону CookieCutter с примерами.
Читать...
🔥Приглашаем вас на три бесплатных вебинара курса «Data Engineer»🔥
📚Вебинар №1: «Как построить Lakehouse на Iceberg и S3»
⏰27 августа в 20:00 мск
✅На вебинаре:
• Data Warehouse, Data Lake, Data Lakehouse: история развития, что и когда использовать?
• Обзор Apache Iceberg: архитектура, преимущества и кейсы использования.
• Хранение данных в S3: настройка бакетов, управление доступом, cost optimization.
• Развертывание Iceberg на S3.
• Работа с Iceberg на Spark и Trino.
📚Вебинар №2: «DWH, Data Lake и Data Lakehouse: архитектурные различия и практическое применение»
⏰ 8 сентября в 20:00 мск
На вебинаре:
• Data Warehouse (DWH): Классическая архитектура и принципы
• Data Lake: Хранение "сырых" данных любого формата. Проблемы управления и governance
• Data Lakehouse: лучшие практики DWH и Data Lake ACID-транзакции и поддержка BI-аналитики
• Сравнительный анализ: Критерии выбора для разных задач Примеры реализаций (Snowflake, Databricks Delta Lake)
• Кейсы применения: Когда выбрать DWH, а когда — Lakehouse Миграция между подходами
📚Вебинар №3: «Развертывание Spark кластера с помощью Terraform в облаке»
⏰ 23 сентября в 18:00 мск
✅На вебинаре:
• Разберем один из принципов развертывания Spark кластера в облачных провайдерах.
• Покажем Terraform конфигурации для автоматизированного развертывания кластера.
• Продемонстрируем подключение к кластеру для работы из IDE.
🎁Участники вебинаров получат подарки на почту🎁
Регистрация на вебинары ➡️ https://vk.cc/cOZRfW
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ Когда обучение не идет. Loss is NaN. Причины и решения
В статье разберут, почему при обучении нейросети loss внезапно становится NaN и модель ломается. Расскажут, какие бывают причины этого трэша и как спасти обучение без лишней боли.
Читать...
Data-специалисты — общий сбор 💪
В этом году на IT-конференции GoCloud Tech будет отдельный трек про данные и аналитику:
➡️ Платформа данных в облаке
➡️ Как настраивать потоковое чтение с геораспределенных хранилищ
➡️ Как работают быстрые NVMe-oF RDMA-диски
➡️ Тренды в мире данных: куда стремятся СУБД
➡️ Как работать на автопилоте с Jupyter-ноутбуком
🧠 Создаем свой RAG: введение в LangGraph
В статье объясняют, что такое RAG и как использовать LangGraph для генерации с дополненной выборкой: основы, примеры и подготовка к созданию собственных RAG-систем.
Читать...
⁉️Как машинное обучение связано с AI?
Машинное обучение — это основа всего современного искусственного интеллекта, и вы можете понять, почему именно сегодня эти технологии актуальны как никогда. Присоединяйтесь к открытому вебинару 26 августа в 18:00 МСК!
Мы разберемся, как Machine Learning (ML) стал неотъемлемой частью развития AI и GenAI. Что стоит за этим технологическим бумом и как ML используется в реальных AI-моделях? Мы покажем, как использовать ML для создания мощных AI-моделей и какие знания стоит развивать сегодня.
➡️ Присоединяйтесь и получите скидку на курс «Machine Learning. Basic»: https://vk.cc/cOW5Po
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🧠 Распознавание орхоно-енисейских рунических надписей методами машинного обучения
В статье рассказывают о расшифровке орхоно-енисейских рун: древние тексты на камне, трудности интерпретации и идеи автоматизации для точности и скорости анализа.
Читать...
👩💻 Адаптивный поиск порога "почти одинаковых" векторов
У вас есть множество эмбеддингов — векторов признаков объектов (например, предложений, изображений, пользователей).
Требуется реализовать функцию find_similar_pairs(vectors, tolerance=0.05)
, которая возвращает все пары индексов, где косинусная разница между векторами меньше tolerance.
Дополнительные условия:
• Векторы могут быть высокой размерности (до 512)
• Пара (i, j) считается дубликатом (i < j), если их cosine similarity ~ 1.0
• Не используйте внешние ML-библиотеки: только numpy
• Функция должна быть оптимизирована — без грубой проверки каждой пары, если можно
import numpy as npЧитать полностью…
def cosine_similarity(a, b):
a, b = np.array(a), np.array(b)
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
def find_similar_pairs(vectors, tolerance=0.05):
result = []
n = len(vectors)
for i in range(n):
for j in range(i + 1, n):
sim = cosine_similarity(vectors[i], vectors[j])
if 1 - sim <= tolerance:
result.append((i, j))
return result
⚙️ Линейная регрессия в ML для самых маленьких
Поясняю линейную регрессию так, чтобы стало понятно, зачем вообще эта прямая на графике и как с её помощью предсказывать результат по набору чисел. Без лишней математики.
Читать...
⚙️ RAG на практике: чат-бот для корпоративной вики
Рассказываю, как делали чат-бота для внутренней документации: где споткнулись, что взлетело, и почему не всё решается embedding'ами. Может, вам сэкономит пару бессонных ночей.
Читать...
⚙️ Что такое генераторы в Python и зачем они нужны?
Генераторы — это функции в Python, которые возвращают значения по одному с помощью ключевого слова yield
, вместо полного возврата всех значений сразу. Они полезны для работы с большими объемами данных, так как сохраняют память, генерируя значения на лету.
➡️ Пример:
# Генератор для получения первых N чисел Фибоначчи
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# Используем генератор
for num in fibonacci(5):
print(num)
# Вывод: 0, 1, 1, 2, 3
🗣️ В этом примере генератор fibonacci вычисляет числа по запросу, вместо сохранения всех значений в памяти. Это делает генераторы особенно удобными для работы с потоками данных или бесконечными последовательностями.
👩💻 Определение "аномального" элемента в сбалансированных данных
Вам передаётся сбалансированный набор объектов из 3-х различных классов (например, "cat", "dog", "bird").
Каждый объект представлен вектором признаков (list of floats). Один объект — подброшенный и не принадлежит ни одному из трёх известных классов: он отличается распределением.
Ваша задача — реализовать функцию detect_outlier(data: List[List[float]], labels: List[str]) -> int
, которая возвращает индекс выброса в списке. Гарантируется, что в labels один лейбл может быть "unknown", а может и вовсе отсутствовать — выброс может быть замаскирован.
Метрика — средняя евклидова дистанция до других представителей того же класса должна быть на порядок выше, чем у нормальных объектов.
Пример данных:
data = [
[1.1, 0.9], [1.2, 1.0], [0.9, 1.1], # cat
[3.0, 3.1], [2.9, 3.0], [3.1, 2.9], # dog
[5.0, 5.1], [5.1, 5.0], [8.0, 8.0], # last — выброс
]
labels = ["cat", "cat", "cat", "dog", "dog", "dog", "bird", "bird", "bird"]
import numpy as npЧитать полностью…
from collections import defaultdict
def detect_outlier(data, labels):
data = np.array(data)
grouped = defaultdict(list)
for i, label in enumerate(labels):
grouped[label].append(i)
outlier_idx = -1
max_score = -1
for i, point in enumerate(data):
label = labels[i]
others = [j for j in grouped[label] if j != i]
if not others:
continue
distances = [np.linalg.norm(point - data[j]) for j in others]
avg_dist = np.mean(distances)
if avg_dist > max_score:
max_score = avg_dist
outlier_idx = i
return outlier_idx
# Тест
print(detect_outlier(data, labels)) # ➜ 8
Задача классификации с BERT: научи модель BERT понимать настроение отзывов о ресторанах
Представь, что ты — владелец сети кафе. Каждый день приходят десятки отзывов: кто-то хвалит десерты, кто-то жалуется на медленное обслуживание. Нужно быстро понять, какие отзывы положительные, а какие — негативные.
🔵 Что у тебя уже есть:
Предобученная модель BERT, которая умеет работать с текстами, но пока не знает ничего про рестораны.
Исторические размеченные отзывы: positive и negative.
💬 Примеры отзывов:
— «Лучшие пельмени в городе!»
— «Ждали заказ 40 минут, больше не придём»
📌 Что нужно сделать:
- Загрузить датасет и разделить его на обучение и тест.
- Подготовить тексты для BERT: токенизация, паддинг, усечение.
- Дообучить модель на этих отзывах.
- Проверить, как она справляется на тесте (accuracy, F1).
- Протестировать на своих примерах — вбить пару «живых» отзывов и посмотреть предсказание.
🎯 Результат:
Модель, которая сама читает отзывы и понимает их настроение.
После курса «NLP / Natural Language Processing» от OTUS вы будете делать такие вещи играючи — и не только с ресторанами. Пройдите короткое вступительное тестирование и получите скидку на обучение: https://vk.cc/cOLspv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚙️ Залезаем на плечи гигантов — создаем модуль для ComfyUI для свободного движения камеры и создание 6dof сцен из фото
Расскажу, как из одного кадра получить свободную 3D-прогулку: доращиваем панорамы, меняем проекции и крутим ракурсы в VR с помощью кастомного модуля для ComfyUI.
Читать...