Data Science | Machinelearning [ru] – Telegram
Data Science | Machinelearning [ru]
20.1K subscribers
631 photos
39 videos
29 files
3.52K links
Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM.

По вопросам рекламы или разработки - @g_abashkin

РКН: https://vk.cc/cJPGXD
Download Telegram
🤔 3750 дней разработки AI или почему боты всё ещё не захватили покер

Статья рассматривает создание AI для покера (Техасского безлимитного холдема) и анализирует его сложность как модели бизнес-отношений. Обсуждаются метрики и стратегии, которые игроки используют в изменяющемся контексте для принятия решений.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
👩‍💻 Разрабатываем первое AI приложение

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
5
📝 Подборка вакансий для сеньоров

Senior Data Scientist (LLM)
Python, NLP, PyTorch
Уровень дохода не указан | Старший (Senior)

Senior Data Scientist
Python, NLP, PyTorch, Linux, Pandas
Уровень дохода не указан | Старший (Senior)

Data-инженер DWH в Маркет
Python, SQL
Уровень дохода не указан | Старший (Senior)
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🤔 Практика: мой опыт интеграции более 50 нейронных сетей в один проект

Статья основана на полутора годах работы по внедрению нейронных сетей в веб-приложение с открытым исходным кодом. В ней собраны практические лайфхаки для решения реальных задач и преодоления сложностей, с которыми сталкиваются разработчики.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥1
Что такое Overfitting и как его избежать в моделях машинного обучения?

Overfitting (переобучение) возникает, когда модель слишком хорошо запоминает обучающие данные, включая шум, и теряет способность обобщать информацию на новых данных. Это приводит к высокому качеству на обучающем наборе, но плохим результатам на тестовых данных.

➡️ Основные способы предотвращения Overfitting:

1. Регуляризация:
• L1 и L2-регуляризация добавляют штраф к сложным моделям.
• Уменьшают коэффициенты модели, предотвращая избыточное подстраивание.

2. Dropout (для нейронных сетей):
• Исключение случайных нейронов на этапе обучения.

3. Снижение сложности модели:
• Использование меньшего числа признаков или более простых алгоритмов.

4. Увеличение данных:
• Генерация новых данных или увеличение объёма обучающей выборки.


➡️ Пример:

from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes

# Загружаем данные
data = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Создаём модель с регуляризацией (Ridge)
ridge = Ridge(alpha=1.0)
ridge.fit(X_train, y_train)

# Оцениваем качество
train_score = ridge.score(X_train, y_train)
test_score = ridge.score(X_test, y_test)
print(f"Train Score: {train_score}, Test Score: {test_score}")


🗣️ В этом примере Ridge-регрессия с параметром регуляризации alpha=1.0 помогает предотвратить переобучение, улучшая обобщающую способность модели.

🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥1
➡️ Путь разметки данных для NER: от Open Source до Prodigy

Статья посвящена созданию обучающей выборки для NER. Описан опыт разметки данных с использованием Open Source инструментов и Prodigy, профессионального решения для ускорения процесса создания наборов данных.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🖥 Руководство по созданию приложения для поиска данных на основе агента GraphRAG

Статья описывает приложение, объединяющее GraphRAG и AutoGen-агентов с локальными LLM от Ollama для автономного встраивания и вывода. Рассмотрены ключевые аспекты: интеграция знаний, настройка LLM, вызов функций и интерактивный интерфейс.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍1
🧩 Работай с кодом, как с историей

Читаешь старый код и не понимаешь, как он дошёл до жизни такой?

👉 Совет: анализируй коммиты, историю изменений и комментарии к задачам. Это поможет понять, почему код стал таким, а не просто принять его как данность. Иногда не код плохой — просто контекст утерян.
Please open Telegram to view this post
VIEW IN TELEGRAM
12
🔎 Подборка зарубежных вакансий

ML Engineer / AI Data Scientist (AI Intent Marketing)
🟢Python, Trino/Spark
🟢от 3 000 до 7 000 $ | более 6 лет

Game Data Analyst
🟢SQL, Python, R
🟢Уровень дохода не указан | 1–3 года

Data Engineer
🟢AirFlow, Python, Linux
🟢Уровень дохода не указан | 3–6 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
⚙️ Умножение троичных матриц для нейросетей

Статья исследует использование троичных значений (-1, 0, 1) в нейросетевых матрицах. Рассматриваются методы хранения тритов с использованием 32-битной арифметики и подходы к их быстрому умножению через оптимизацию памяти.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
👩‍💻 Задачка по Python

Напишите функцию, которая принимает DataFrame и заменяет отсутствующие значения (NaN) в каждом числовом столбце на среднее значение этого столбца. Если столбец содержит только NaN, оставьте его без изменений.

➡️ Пример:

   feature1  feature2  feature3
0 1.0 10.0 NaN
1 2.0 NaN NaN
2 NaN 30.0 NaN
3 4.0 40.0 NaN

feature1 feature2 feature3
0 1.00 10.0 NaN
1 2.00 26.7 NaN
2 2.33 30.0 NaN
3 4.00 40.0 NaN


Решение задачи ⬇️

import pandas as pd

def fill_missing_with_mean(df):
numeric_columns = df.select_dtypes(include=['float', 'int'])
for column in numeric_columns:
if df[column].notna().any(): # Проверяем, есть ли значения не NaN
df[column] = df[column].fillna(df[column].mean())
return df

# Пример использования:
data = pd.DataFrame({
'feature1': [1.0, 2.0, None, 4.0],
'feature2': [10.0, None, 30.0, 40.0],
'feature3': [None, None, None, None]
})

result = fill_missing_with_mean(data)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Forwarded from .ml
Ранее мы обсуждали с вами RoPE, а теперь поговорим о его модификациях. Собрали много интересного, поэтому будет целых три поста по этой теме. Enjoy!

Для начала напомним, что Positional Encoding (кодирование позиций слов/токенов) нужен, чтобы передать модели или трансформеру информацию о позициях слов — относительную или же абсолютную.


Как развивалось позиционное кодирование:

📆 2017 год
С появлением ванильного трансформера позиции токенов кодировались тригонометрической функцией, значение которой зависело от позиции и просто прибавлялось к эмбеддингу соответсутвующего слова.

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

Минусы — не очень работает на длинных последовательностях, да и вообще не очень хорошо работает.

📆 2018 год
Потом появился гугловский BERT, а вместе с ним новый подход позиционного кодирования: авторы предложиди выкинуть тригонометрию и вместо этого добавить в модель ещё один обучаемый слой nn.Embedding — такой же, как для получения эмбеддингов слов. Он должен кодировать — то есть, превращать в вектор — позицию токена.

Итоговый вектор токена, который будет передан следующим слоям модели — это сумма векторов токена и его позиции. Работает лучше, чем тригонометрия, но при этом никак не экстраполируется: так как векторы выучиваемые, то для позиций, превосходящих максимальную тренировочную длину, мы кодировать не умеем — она вне ключей нашего словаря эмбеддингов, так же, как мы не можем закодировать и незнакомый модели токен.

В это же время впервые появилась идея о том, что нам важны не столько абсолютные позиции слов, сколько относительные. Авторы статьи решили кодировать не абсолютную позицию, а только относительную (Relative Position Encoding, или RPE), то есть близость каждой пары токенов. Здесь же появилась идея, что позицонное кодирование стоит добавлять не в момент создания эмбеддингов слов, а на этапе Attention, добавляя знание о позициии в queries и keys.
2
🤖 Как развернуть LLM с помощью vLLM и TorchServe

Хочешь запустить большую языковую модель в продакшене, но не знаешь, как совместить простоту развертывания с промышленной надежностью? Комбинация vLLM и TorchServe решает эту задачу. Она обеспечивает как простой запуск, так и продвинутые возможности для масштабирования.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
👩‍💻 Задачка по Python

Напишите скрипт, который удаляет дублирующиеся строки из CSV-файла на основе указанного столбца и сохраняет результат в новый файл.

➡️ Пример:

python remove_duplicates.py input.csv output.csv column_name
id,name,age
1,John,30
2,Jane,25
4,Bob,35


Решение задачи ⬇️

import pandas as pd
import sys

if len(sys.argv) < 4:
print("Использование: python remove_duplicates.py <input_file> <output_file> <column_name>")
sys.exit(1)

input_file = sys.argv[1]
output_file = sys.argv[2]
column_name = sys.argv[3]

try:
df = pd.read_csv(input_file)
df = df.drop_duplicates(subset=[column_name])
df.to_csv(output_file, index=False)
print(f"Дубликаты удалены. Результат сохранён в {output_file}")
except Exception as e:
print(f"Ошибка: {e}")
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎21
🔎 Подборка вакансий для джунов

Junior Data Analyst
🟢SQL, Python, опыт в медицине
🟢от 1 500 до 2 000 $ | 1–3 года

Data Scientist
🟢GA4, Shopify, ClickFunnels, Klaviyo, Kajabi
🟢от 1 000 до 1 350 $ | 1–3 года

Junior Data Scientist
🟢Python (pandas, numpy, scikit-learn), статистика, комбинаторика
🟢от 70 000 до 100 000 ₽ | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
2
✔️ Как нейросети меняют работу дизайнеров

Статья раскрывает, как дизайнеры студии используют ИИ для усиления креативности в проектах. Обсуждаются инструменты и подходы, которые помогают сохранить индивидуальность и создать продуманный дизайн с помощью нейросетей.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
📝 Подборка вакансий для мидлов

Скоринг Middle Data Scientist
Git, Python, базы данных
Уровень дохода не указан | от 1 года

Data Scientist в команду RecSys (middle)
Машинное обучение, SQL, Python, PostgreSQL, Git, TensorFlow, ClickHouse, Apache Airflow, Pandas
Уровень дохода не указан | от 2 лет

Аналитик данных в сфере HR, middle
SQL, Power BI, анализ данных, математическая статистика
Уровень дохода не указан | от 2 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
✔️ 30k аудиозаписей: наводим порядок

Статья рассказывает, как организовать и обработать огромный архив аудиозаписей дневников, созданных задолго до эпохи современных speech-to-text технологий. Рассматриваются инструменты и подходы для упорядочивания данных.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1
👩‍💻 Задачка по Python

Напишите функцию, которая принимает строку и возвращает новую строку, из которой удалены все гласные буквы (a, e, i, o, u в любом регистре).

➡️ Пример:

print(remove_vowels("Hello World"))  # Ожидаемый результат: "Hll Wrld"
print(remove_vowels("Python is great")) # Ожидаемый результат: "Pythn s grt"


Решение задачи ⬇️

def remove_vowels(s):
vowels = "aeiouAEIOU"
return ''.join(char for char in s if char not in vowels)

# Пример использования:
print(remove_vowels("Hello World")) # Ожидаемый результат: "Hll Wrld"
print(remove_vowels("Python is great")) # Ожидаемый результат: "Pythn s grt"
Please open Telegram to view this post
VIEW IN TELEGRAM
6🐳3👎2