Статьи на тему data science, machine learning, big data, python, математика, нейронные сети, искусственный интеллект (artificial intelligence) Англоязычный канал по DS и Machinelearning -https://t.me/ds_international По сотрудничеству - @g_abashkin
👩💻 Разделите данные на группы с помощью алгоритма K-Means
Создайте модель, которая группирует точки по признакам без использования меток.
Это задача кластеризации, где мы не обучаемся на готовых ответах, а ищем структуру в данных.
Алгоритм K-Means автоматически делит данные на 3 группы на основе близости точек.
Это полезно в задачах сегментации клиентов, поиска паттернов в данных, рекомендаций и др.
import numpy as npЧитать полностью…
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
# Генерация данных: 300 точек, 3 центра
X, _ = make_blobs(n_samples=300, centers=3, random_state=42)
# Модель кластеризации
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Визуализация
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
s=200, c='red', marker='X', label='Центры кластеров')
plt.legend()
plt.show()
Яндекс поднял максимальное вознаграждение в bug bounty до 3 млн рублей.
За что? За критические уязвимости типа RCE и VM escape в Почте, Яндекс ID и Yandex Cloud.
Плюс выросли выплаты за SQL-инъекции. Это хорошая возможность для этичных хакеров проверить себя, ведь речь идет о сервисах Яндекса, которым доверяют чувствительную информацию миллионы пользователей. Так компания хочет обеспечить всестороннюю оценку безопасности своих систем.
Ну а для тех, кому этого недостаточно, в программе багбаунти Яндекса недавно появилось отдельное направление по нейросетям — там можно получить за уязвимость до 1 миллиона рублей.
👩💻 Обучите модель для классификации текста с помощью Naive Bayes
Создайте простую модель машинного обучения, которая определяет, является ли текст позитивным или негативным. Используем sklearn
и алгоритм Naive Bayes
Решение задачи🔽
from sklearn.feature_extraction.text import CountVectorizerЧитать полностью…
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline
# Обучающие данные
texts = ["Это отличный фильм", "Ужасный опыт", "Мне понравилось", "Очень скучно", "Прекрасная история"]
labels = ['positive', 'negative', 'positive', 'negative', 'positive']
# Модель
model = make_pipeline(CountVectorizer(), MultinomialNB())
model.fit(texts, labels)
# Прогноз
print(model.predict(["Фильм был ужасен"])) # ['negative']
print(model.predict(["Обожаю это кино"])) # ['positive']
👩💻 Задачка по Python
Создайте Python-скрипт, который читает большой CSV-файл построчно, фильтрует строки по заданному критерию и подсчитывает агрегированные данные на основе указанного столбца. Скрипт должен эффективно обрабатывать файл, используя потоковое чтение (без загрузки файла целиком в память) и выводить итоговую статистику в консоль.
➡️ Пример:
• python process_data.py data.csv age 30
— фильтрует строки, где значение в столбце age
больше 30
, и подсчитывает общее количество таких записей и среднее значение в другом числовом столбце, например, salary
.
Решение задачи ⬇️
import csvЧитать полностью…
import sys
def process_large_csv(file_path, filter_column, threshold, aggregate_column):
count = 0
total_sum = 0.0
with open(file_path, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
# Преобразование значений для фильтрации и агрегации
try:
filter_value = float(row[filter_column])
aggregate_value = float(row[aggregate_column])
except ValueError:
continue # Пропускаем строки с некорректными данными
# Фильтрация строк по заданному условию
if filter_value > threshold:
count += 1
total_sum += aggregate_value
# Вывод итоговой статистики
if count > 0:
average = total_sum / count
print(f"Обработано записей: {count}")
print(f"Среднее значение {aggregate_column} для записей, где {filter_column} > {threshold}: {average:.2f}")
else:
print("Записи, соответствующие условиям фильтрации, не найдены.")
if __name__ == "__main__":
if len(sys.argv) < 5:
print("Использование: python process_data.py <file_path> <filter_column> <threshold> <aggregate_column>")
sys.exit(1)
file_path = sys.argv[1]
filter_column = sys.argv[2]
threshold = float(sys.argv[3])
aggregate_column = sys.argv[4]
process_large_csv(file_path, filter_column, threshold, aggregate_column)
👀 Stack Overflow умирает? Как ИИ вытесняет живые сообщества разработчиков
Разбираемся, почему Stack Overflow теряет аудиторию: виноваты ли ИИ, UX или жадность? Плюс — что делает администрация и что ждёт разработчиков в пост-SO эпоху.
Читать...
⚙️ Что такое токенизация в машинном обучении?
Токенизация — это процесс разбиения текста на отдельные части: слова, подслова или символы.
Часто используется на этапе предобработки текста для NLP-моделей.
Каждый токен — это минимальная смысловая единица, которую модель будет анализировать.
➡️ Пример:
from sklearn.feature_extraction.text import CountVectorizer
texts = ["Я люблю машинное обучение", "Обучение — это интересно"]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
print(vectorizer.get_feature_names_out())
print(X.toarray())
# Вывод:
['интересно' 'люблю' 'машинное' 'обучение' 'это' 'я']
[[0 1 1 1 0 1]
[1 0 0 1 1 0]]
🗣️ Токенизация превращает текст в числовую матрицу, понятную модели.
Это первый шаг в обработке текста перед обучением моделей на естественном языке.
Не имей 100 ₽, а имей 150 000 ₽ за рекомендацию друга, который прошел испыталку в Ozon Tech
Знаете senior+ DS/ML-инженера? Ozon Tech готов щедро отблагодарить, если по вашей рекомендации его возьмут на работу.
Чтобы получить вознаграждение, нужно пройти всего три простых шага:
1. Вы рекомендуете знакомого (если сами в Ozon не работаете).
2. Его берут на работу, и он успешно проходит испытательный срок.
3. Вы получаете бонус — 150 тысяч рублей.
Можно рекомендовать сколько угодно друзей — главное, чтобы они подходили под требования. Даже если вы рекрутер — тоже можете участвовать. Только нельзя рекомендовать самого себя (но можно попросить друга вас порекомендовать 😏).
Подробнее о вакансиях и условиях: https://s.ozon.ru/rjFCjAP
🔎 Подборка вакансий для сеньоров
Data Engineer (Middle+/Senior)
🟢 AWS (S3, Glue, Athena, Redshift), Python, SQL, Data Lake, ETL, ClickHouse, Apache Spark, Kafka, Airflow
🟢 От 250 000 ₽ | 3–6 лет | Удалёнка / Гибрид
Senior Data Scientist LLM
🟢 Python, LLM, Transformers, RAG, NLP, SQL, MLOps, Vector DBs (pgvector, Milvus, Qdrant)
🟢 $3 500–4 000 | 6+ лет | Удалёнка
Senior Data Engineer
🟢 Python (OOP), SQL (оптимизация), FastAPI, DBT, GCP (BigQuery), Microservices, CI/CD
🟢 $4 000–6 000 | 6+ лет | Удалёнка
⚙️ Знакомьтесь, FRIDA. Открытая эмбеддинг-модель для русского языка
В этой статье мы расскажем о нашей новой модели FRIDA, которая сейчас (20.05.2025) занимает первое место в русскоязычном бенчмарке MTEB.
Читать...
⚙️ ML на «плюсах»: 5 материалов о необычном подходе к обучению моделей
В статье показывают, как и зачем использовать C++ в машинном обучении: распознавание лиц, объекты в реальном времени и прирост в производительности без питоньих зависимостей
Читать...
👩💻 Что такое обучение с учителем (supervised learning) в ML?
Обучение с учителем — это тип машинного обучения, при котором модель обучается на размеченных данных.
Каждый пример содержит вход (features) и правильный ответ (label), который модель должна научиться предсказывать.
➡️ Пример:
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = LogisticRegression()
model.fit(X_train, y_train)
print("Предсказания:", model.predict(X_test[:5]))
🗣️ В этом примере модель обучается на данных о цветах и учится определять их вид (например, ирис сетоса).
7–8 июня проводим Weekend Offer Analytics
Устроиться в Яндекс за выходные — реально. Ищем крутых аналитиков с опытом работы от 3 лет на Python, готовых работать в офисном или гибридном режиме.
Подавайте заявку до 3 июня — и всего за 2 дня пройдите технические собеседования. После сможете пообщаться с двенадцатью нанимающими командами и выбрать ту, которая покажется самой интересной. Если всё сложится хорошо, сразу же пришлём вам офер.
Узнать подробности и зарегистрироваться.
🌟 Откройте новые горизонты с курсом «Machine Learning. Professional»! 🌟
Хотите прокачать свои навыки в области машинного обучения? Пройдите короткое вступительное тестирование и получите скидку на обучение! 🎓💰
За всего 5 месяцев вы освоите ключевые модели машинного обучения, включая:
— Обработку естественного языка (NLP)
— Глубокое обучение (DL)
— Рекомендательные системы
👩🏫 Занятия проводятся опытными наставниками, а также вас ждёт реальная практика и проекты, которые значительно усилят ваше портфолио.
Готовы к новым вызовам и хотите расширить свои карьерные горизонты? Узнайте подробности и получите выгодные условия прямо сейчас: https://vk.cc/cM5tmz
Не упустите свой шанс! 🚀
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚙️ Генерация видео: Обзор интересных подходов | Text-2-video | Part 1
В статье разбирают основные методы генерации видео на основе текста (T2V): от адаптации T2I с AnimateDiff до новинок 2025 года вроде Wan2.1 и HunyuanVideo. Первая часть обзора
Читать...
👩💻 Выявление тренда в временном ряде
Напишите Python-скрипт, который принимает временной ряд в виде pandas.Series
и определяет тренд: восходящий, нисходящий или отсутствие тренда. Решение должно быть простым и лаконичным.
➡️ Пример:
import pandas as pd
import numpy as np
# Генерация данных
date_range = pd.date_range(start="2020-01-01", periods=12, freq="M")
values = np.linspace(10, 20, 12) + np.random.normal(0, 0.5, 12)
time_series = pd.Series(data=values, index=date_range)
result = detect_trend(time_series)
print(result) # Ожидаемый результат: "Восходящий тренд"
import numpy as npЧитать полностью…
def detect_trend(series):
x = np.arange(len(series))
slope = np.polyfit(x, series.values, 1)[0]
if slope > 0:
return "Восходящий тренд"
elif slope < 0:
return "Нисходящий тренд"
else:
return "Тренд отсутствует"
# Пример использования
import pandas as pd
import numpy as np
date_range = pd.date_range(start="2020-01-01", periods=12, freq="M")
values = np.linspace(10, 20, 12) + np.random.normal(0, 0.5, 12)
time_series = pd.Series(data=values, index=date_range)
print(detect_trend(time_series))
⚙️ Как обойти детекторы текста, сгенерированного ИИ
Автор исследует, почему нейросети пока плохо отличают ИИ-тексты от человеческих, и делится, что реально работает (или не очень), если вы вдруг решите их «перехитрить».
Читать...
🔥 Самые интересные статьи за последние дни:
• Построение базы знаний компании и поиска документов на LLM и RAG
• Что побуждает LLM врать и как этого избежать в своих продуктах
• Ломаем капчу 4Chan
• На чём учатся современные модели машинного перевода: опыт команды Яндекс Переводчика
• Gemini вырывается вперед, Китай спамит моделями, в Minecraft запустили AI-агентов: главные события ноября в сфере ИИ
⚙️ Код, железо, стратегия: в чем секрет победителей ML-соревнований?
Разбор отчёта о соревнованиях по ML за 2024 год: кто победил, как и почему. Без мотивационных цитат — только конкретные приёмы, модели и стратегии, которые реально приносят $22 млн.
Читать...
⚡️ Делай «кодовые разминки» перед тяжёлыми задачами
Сложная задача сразу после кофе? Мозг ещё не включился — и ты уже залип.
👉 Совет: начни день с 15 минут лёгкой задачи: мелкий фикс, улучшение логов, небольшой рефакторинг. Это разгоняет мысль, помогает включиться в поток и потом перейти к тяжёлому коду с полной скоростью.
⚙️ Нейро-дайджест: ключевые события мира AI за 12–19 мая 2025
В этом выпуске: Codex от OpenAI, GPT‑4.1, токсичный Grok, генератор от Tencent и агент DeepMind, который сам изобретает алгоритмы. ИИ неделя на максималках.
Читать...
⚙️ Что у меня за распределение
Василий из Т-Банка объясняет, почему классические критерии согласия не всегда подходят для симуляции колл-центра. Покажет подводные камни и как не влететь в ловушку распределений.
Читать...
📈 Подборка статей для вашей карьеры
• Мои Red-Flags при устройстве в IT-компании: Как не стать гребцом. Часть 2
• Как строить карьеру в корпорации
• История: работа в чешском Red Hat
• Циничные заметки о карьере в IT от «гейткипера»
• Моя петиция EB-1A на грин-карту талантов, одобренная с первой попытки
⚙️ Машинное обучение в Apache Spark с помощью MLlib
Показываем, как применить MLlib из Apache Spark в своих проектах, и делимся советами, чтобы не сжечь кластеры раньше времени. Всё просто, даже если вы не Data Jedi.
Читать...
👩💻 Оценка точности модели классификации (Accuracy Score)
Напишите функцию, которая вычисляет accuracy score — долю правильных предсказаний модели классификации. Это базовая метрика, часто используемая для оценки качества модели.
Функция работает следующим образом:
• Сравнивает каждую пару истинного (y_true) и предсказанного (y_pred) значения.
• Считает количество совпадений.
• Делит число правильных предсказаний на общее количество примеров
def accuracy_score(y_true, y_pred):Читать полностью…
correct = sum(1 for true, pred in zip(y_true, y_pred) if true == pred)
return correct / len(y_true)
# Примеры использования
y_true = [0, 1, 1, 0, 1]
y_pred = [0, 0, 1, 0, 1]
print(accuracy_score(y_true, y_pred))
# Ожидаемый результат: 0.8
⚙️ Claude, есть пробитие: взламываем самую защищенную модель
В статье показывают, как обойти фильтры модели Claude с помощью модифицированного метода внедрения системных директив, чтобы заставить её выполнять запрещённые инструкции
Читать...
⚙️ Как я не дал ИИ сойти с ума: гайд по промптам и багам
В статье — почему нейросети галлюцинируют, примеры «дорогих» ошибок, и промпты для тех, кто работает с кодом, текстами и дизайном.
Читать...
🔎 Подборка вакансий для джунов
Junior Data Engineer - Mindbox
🟢 Python, SQL, ООП, C#, Spark, Kafka, Airflow
🟢 До 200 000 ₽ | 1–3 года | Удалёнка/Гибрид/На месте
Data Engineer [Junior] - Диплей
🟢 Python, Apache Airflow, pandas, NumPy, SQL, ClickHouse
🟢 Доход не указан | 1–3 года | Удалёнка
Junior Data Analyst - Forvis Mazars
🟢 SQL, Power BI, Tableau, Pandas, Numpy, Matplotlib, Excel
🟢 Доход не указан | Нет опыта | Удалёнка/Гибрид
👩💻 Normalization of Numerical Data
Напишите функцию, которая принимает список чисел и нормализует его, преобразуя значения в диапазон от 0 до 1. Это полезно для подготовки данных перед обучением модели машинного обучения.
➡️ Функция работает следующим образом:
• Находит минимальное и максимальное значение в списке.
• Вычисляет нормализованное значение для каждого элемента по формуле: normalized = (𝑥 − min) / max − min)
• Возвращает новый список с нормализованными значениями.
def normalize(data):Читать полностью…
min_val = min(data)
max_val = max(data)
# Избегаем деления на ноль, если все элементы равны
if max_val == min_val:
return [0.0] * len(data)
return [(x - min_val) / (max_val - min_val) for x in data]
# Примеры использования
data = [10, 20, 30, 40, 50]
print(normalize(data))
# Ожидаемый результат: [0.0, 0.25, 0.5, 0.75, 1.0]
⚙️ Автоматизация верификации кодовых датасетов подрядчиков с помощью LLM: снизили брак на 40% и сократили стоимость на 60%
Статья рассказывает, как автоматизация на основе LLM ускорила верификацию данных и сократила ошибки в производственной цепочке. Узнаете, как это помогло заказчику сэкономить ресурсы и время.
Читать...
🔫 Claude сопротивляется
Исследование Anthropic показывает, как их ИИ Claude мог притворяться злым, чтобы избежать «переобучения». Модель следовала поддельным документам для бесплатных пользователей, но сопротивлялась для премиум-аудитории.
Читать...