ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

Data Science | Вопросы собесов

Data Science | Вопросы собесов

Открыть в Telegram
4 876
Подписчики
-224 часа
-97 дней
-2630 дней
Архив постов
Как зарабатывать на мобильной игре Как привлекать пользователей, работать с монетизацией и развивать мобильную игру в 2026 го
Как зарабатывать на мобильной игре Как привлекать пользователей, работать с монетизацией и развивать мобильную игру в 2026 году? Обсудим вместе с экспертами игровой индустрии России на RuStore Mobile GameDev Conf. 2 ноября, Москва + онлайн. Участие бесплатное, по регистрации Зарегистрироваться #реклама 16+ rustore.ru О рекламодателе

🤔 Сравнение архитектуры RNN, CNN, трансформера? RNN обрабатывает данные последовательно и хорошо работает с временными рядами или текстами, но страдает от проблем с градиентами и плохо масштабируется. CNN извлекает локальные признаки через свёртки, изначально предназначен для изображений, но может применяться к тексту. Трансформер использует механизм внимания, обрабатывает всё параллельно и учитывает контекст целиком, что делает его эффективным в работе с языком и последовательностями. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Капсульная коллекция в Т-Шопе Повод порадовать себя и разнообразить гардероб. Смотри, какие вещи созданы для плавного переход
Капсульная коллекция в Т-Шопе Повод порадовать себя и разнообразить гардероб. Смотри, какие вещи созданы для плавного перехода из будней в выходные. Посмотреть каталог #реклама tbank-online.com О рекламодателе

🤔 Зачем нужен self super? В Python self и super() используются в контексте классов и объектно-ориентированного программирования (ООП). Они играют важные роли в определении и управлении поведением классов и их экземпляров. 🚩self self — это ссылка на текущий экземпляр класса. Используется внутри методов класса для доступа к атрибутам и методам этого же объекта. Это не ключевое слово в Python, а просто соглашение между программистами о названии первого аргумента метода в классе. Использование self позволяет однозначно указать, что операция или вызов метода относится к текущему объекту.
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def display_info(self):
        print(f"Автомобиль {self.make} модель {self.model}")

car = Car("Toyota", "Corolla")
car.display_info()  # Вывод: Автомобиль Toyota модель Corolla
🚩super() super() используется для вызова методов родительского класса. Это полезно, когда происходит наследование, и вы хотите расширить или изменить поведение методов в наследуемом классе, при этом не переопределяя родительскую функциональность полностью. super() возвращает временный объект родительского класса, через который можно вызывать его методы.
class Vehicle:
    def __init__(self, category):
        self.category = category

class Car(Vehicle):
    def __init__(self, make, model):
        super().__init__('Transport')  # Вызов __init__ родительского класса
        self.make = make
        self.model = model

car = Car("Toyota", "Corolla")
print(car.category)  # Вывод: Transport
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое map оценка? MAP (Mean Average Precision) — это метрика, используемая для оценки качества ранжирования в задачах, где важен порядок релевантных результатов. Она вычисляется как среднее значение Average Precision (AP) для нескольких запросов, где AP измеряет точность на каждой позиции релевантного элемента. MAP часто применяется в системах поиска и рекомендаций для оценки точности ранжированных ответов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Чем нейросеть отличается от бустинга над линейными моделями? Нейросети и бустинг над линейными моделями представляют собой два сильно различающихся подхода к машинному обучению. Оба подхода могут использоваться для решения задач классификации и регрессии, но их архитектуры, способы обучения и области применения значительно отличаются. 🚩Нейросети Это мощные вычислительные системы, вдохновлённые структурой и функционированием мозга. Они состоят из слоёв узлов, соединённых синапсами с весами, которые могут обучаться и адаптироваться к различным данным. 🟠Глубина и сложность Нейросети могут включать множество слоёв (глубокие нейросети), что позволяет им улавливать сложные иерархические закономерности в данных. 🟠Нелинейность Благодаря применению нелинейных активационных функций, нейросети могут моделировать сложные нелинейные отношения между входными и выходными данными. 🟠Обучение Обычно обучаются с использованием методов, основанных на градиентном спуске, таких как обратное распространение ошибок. 🟠Приложения Особенно успешны в задачах, связанных с обработкой изображений, звука, видео и последовательностей данных благодаря специализированным архитектурам (CNN для изображений, RNN для временных рядов). 🚩Бустинг над линейными моделями Это метод ансамблевого обучения, который улучшает прогностическую способность путём последовательного обучения набора более слабых моделей, каждая из которых стремится исправить ошибки предыдущих моделей. 🟠Слабые ученики Бустинг часто использует простые модели (например, небольшие деревья решений или линейные модели) как "слабых учеников". 🟠Последовательное обучение Модели добавляются последовательно, и каждая новая модель фокусируется на тех аспектах данных, которые были обработаны предыдущими моделями недостаточно хорошо. 🟠Линейные модели Если бустинг применяется над линейными моделями, это означает использование линейных моделей как базовых учеников, которые в совокупности стремятся уловить более сложные зависимости в данных через ансамбль. 🟠Применение Эффективен в задачах с табличными данными, где важны точность и интерпретируемость, таких как кредитный скоринг или прогнозирование оттока клиентов. 🚩Основные различия 🟠Структурная сложность Нейросети, как правило, обладают более сложной структурой, чем ансамбли линейных моделей в бустинге. 🟠Область применения Нейросети лучше работают с данными, требующими обработки больших объемов неструктурированной информации (изображения, текст, звук), в то время как бустинг над линейными моделями чаще используется для структурированных табличных данных. 🟠Интерпретируемость Бустинг над линейными моделями обычно обеспечивает лучшую интерпретируемость по сравнению с нейросетями, так как последние из-за своей сложности и глубины могут вести себя как "чёрные ящики". 🟠Обучение и вычислительные ресурсы Нейросети часто требуют значительных вычислительных ресурсов, особенно для больших данных и глубоких архитектур, в то время как бустинг может быть более эффективен с точки зрения вычислений, особенно при использовании линейных моделей. Ставь 👍 и забирай 📚 Базу знаний

🤔 При свёртке картинки HxW матрицей 3x3, что получится в итоге? Результирующий размер изображения будет (H−2)×(W−2)(H-2) \times (W-2), если не использовать дополнение, так как свёртка "обрезает" края. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Примеры моделей с большим смещением и большой дисперсией? В машинном обучении примеры моделей, демонстрирующих большое смещение (bias) или большую дисперсию (variance), иллюстрируют различные аспекты переобучения и недообучения. 🚩Модели с Большим Смещением (High Bias) Часто слишком упрощены, что приводит к недообучению. Они не способны захватывать сложность или основные закономерности в данных. 🟠Линейная регрессия Хотя линейная регрессия может быть мощным инструментом для предсказания, она предполагает линейную зависимость между входными и выходными переменными. Если истинная зависимость в данных носит нелинейный характер, линейная модель не сможет адекватно моделировать данные и будет иметь высокое смещение. 🟠Логистическая регрессия Подобно линейной регрессии, логистическая регрессия предполагает линейное разделение классов. В случаях, когда классы не разделимы линейно, модель будет иметь высокое смещение и не сможет корректно классифицировать данные. 🚩Модели с Большой Дисперсией (High Variance) Обычно слишком сложные, с большим количеством параметров относительно объёма обучающих данных. Это может привести к переобучению, когда модель хорошо работает на обучающих данных, но плохо генерализует на новых данных. 🟠Деревья решений Деревья решений, особенно без ограничения глубины или других методов регуляризации, склонны к переобучению. Они могут создавать очень сложные структуры, которые идеально подходят под обучающие данные, включая шум, но не обобщаются на новые данные. 🟠Нейронные сети Большие и глубокие нейронные сети могут обладать очень высокой дисперсией, особенно если количество обучающих примеров недостаточно для их сложности. Они способны улавливать сложнейшие закономерности и взаимосвязи, но могут "запоминать" данные, на которых они были обучены, вместо того чтобы изучать обобщающие закономерности. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как строится дерево? Дерево решений строится путем рекурсивного деления данных на подмножества на основе наилучших признаков, которые уменьшают неопределенность (например, с использованием информации энтропии или критерия Джини). Каждый узел в дереве представляет решение на основе одного признака, а ветви — возможные исходы. Процесс деления продолжается до тех пор, пока все данные в узлах не будут однородными или не будет достигнуто ограничение глубины. Листья дерева содержат финальные предсказания для данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как batch norm помогает в обучении моделей? Batch Normalization (нормализация батчей) — это техника, которая улучшает обучение нейронных сетей путем нормализации промежуточных слоев. Это помогает ускорить обучение и делает модель более устойчивой. Впервые она была представлена в статье "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift" (2015) Сергеем Иоффе и Кристианом Шиллером. 🚩Как работает Batch Normalization? 🟠Нормализация данных: В каждой мини-партии (batch) данных нормализация применяется к активациям нейронов. Это означает, что среднее значение активаций по партии становится равным нулю, а стандартное отклонение — единице. 🟠Обратное масштабирование и смещение: После нормализации вводятся два параметра: \( \gamma \) и \( \beta \), которые масштабируют и смещают нормализованные значения: Эти параметры позволяют модели сохранить способность к обучению любых функций, независимо от нормализации. 🚩Плюсы ➕Ускорение обучения: Нормализация уменьшает внутренний коварный сдвиг (internal covariate shift), что позволяет использовать более высокие скорости обучения. ➕Стабилизация градиентов: Нормализация помогает избежать проблем с затухающими и взрывающимися градиентами, делая обучение более стабильным. ➕Регуляризация: Batch Normalization оказывает легкий регуляризационный эффект, снижая необходимость использования других регуляризационных методов, таких как Dropout. ➕Меньшая зависимость от начальной инициализации: Нормализация делает модель менее чувствительной к начальной инициализации параметров, упрощая настройку гиперпараметров.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, BatchNormalization, Activation
from tensorflow.keras.optimizers import Adam

# Создание модели
model = Sequential()

# Добавление слоев с Batch Normalization
model.add(Dense(64, input_shape=(784,)))
model.add(BatchNormalization())
model.add(Activation('relu'))

model.add(Dense(64))
model.add(BatchNormalization())
model.add(Activation('relu'))

model.add(Dense(10, activation='softmax'))

# Компиляция модели
model.compile(optimizer=Adam(), loss='categorical_crossentropy', metrics=['accuracy'])

# Обучение модели
# model.fit(x_train, y_train, batch_size=32, epochs=10, validation_data=(x_val, y_val))
Ставь 👍 и забирай 📚 Базу знаний

Хотите разобраться, как создаются Telegram-боты? Telegram-бот кажется простым для пользователя, но как он получает сообщение
Хотите разобраться, как создаются Telegram-боты? Telegram-бот кажется простым для пользователя, но как он получает сообщение и решает, что ответить? На открытом уроке разберём этот процесс на практике. Преподаватель в режиме лайвкодинга создаст бота на Python с библиотекой aiogram — от первого запуска до рабочего диалога с кнопками. Вы узнаете, как получить токен, обрабатывать команды и сообщения, добавлять кнопки и ответы на действия пользователя. В конце проверите работу готового бота прямо в Telegram. Урок подойдёт начинающим Python-разработчикам. 10 ноября в 20:00 МСК. Зарегистрироваться #реклама 16+ otus.ru О рекламодателе

🤔 Как валидировать временные ряды? Валидация по времени включает разбиение данных на интервалы с учётом временной последовательности. Методы: time series split (скользящее окно), расширяемое окно или кросс-валидация по времени. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое AUC ? Это метрика, используемая для оценки качества бинарного классификатора. Она измеряет площадь под кривой ROC (Receiver Operating Characteristic). ROC-кривая строится по совокупности всех возможных порогов классификации и отражает отношение истинно положительных срабатываний (True Positive Rate, TPR) к ложноположительным срабатываниям (False Positive Rate, FPR). 🚩ROC-кривая Ось Y показывает True Positive Rate (TPR), также известный как Recall или Sensitivity
\text{TPR} = \frac{TP}{TP + FN}
Ось X показывает False Positive Rate (FPR)
\text{FPR} = \frac{FP}{FP + TN}
AUC (Area Under the ROC Curve) Это числовое значение, представляющее площадь под ROC-кривой. Значение AUC варьируется от 0 до 1, где: 0.5 означает, что модель не лучше случайного угадывания. 1 означает, что модель идеально разделяет положительные и отрицательные классы. Чем выше значение AUC, тем лучше модель различает между положительными и отрицательными примерами. 🚩Плюсы ➕Инвариантность к порогу классификации Оценивает модель по всем возможным порогам, а не только по одному фиксированному порогу. ➕Сравнение моделей Позволяет сравнивать разные модели и их способность различать между положительными и отрицательными примерами. ➕Робустность к дисбалансу классов Хорошо работает даже в случае несбалансированных классов.
import numpy as np
from sklearn.metrics import roc_curve, auc, roc_auc_score
import matplotlib.pyplot as plt

# Пример истинных меток классов
y_true = [0, 0, 1, 1, 0, 1, 0, 0, 1, 1]

# Пример предсказанных вероятностей для положительного класса
y_scores = [0.1, 0.4, 0.35, 0.8, 0.2, 0.7, 0.1, 0.3, 0.9, 0.6]

# Вычисление ROC-кривой
fpr, tpr, thresholds = roc_curve(y_true, y_scores)

# Вычисление AUC
roc_auc = auc(fpr, tpr)
roc_auc_sklearn = roc_auc_score(y_true, y_scores)

print(f"AUC: {roc_auc}")
print(f"AUC (sklearn): {roc_auc_sklearn}")

# Построение ROC-кривой
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (area = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC)')
plt.legend(loc='lower right')
plt.show()
Ставь 👍 и забирай 📚 Базу знаний

Какие ИИ-инструменты брать в работу и для каких задач? После этого урока картина станет понятнее: что подходит для ежедневных
Какие ИИ-инструменты брать в работу и для каких задач? После этого урока картина станет понятнее: что подходит для ежедневных задач Python-разработчика, а что можно не пробовать. 19 ноября в 20:00 онлайн. разберем примеры из реальной разработки и поговорим о том, как не тратить время зря. 📚Курс «Python-разработчик. Продвинутый уровень» стартует 30 ноября. Зарегистрироваться #реклама 16+ otus.ru О рекламодателе

🤔 Какие магические методы в python знаешь? Магические методы в Python — это специальные методы, которые начинаются и заканчиваются двойным подчеркиванием. Примеры включают `__init__` (конструктор класса), `__str__` (представление объекта в виде строки), `__len__` (возвращает длину объекта) и `__getitem__` (обращение к элементам по индексу). Также есть методы, такие как `__add__` для перегрузки операторов и `__call__`, позволяющий объекту вести себя как функция. Эти методы позволяют кастомизировать поведение объектов Python. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔Зачем нужен yield вместо return в функции? Ключевое слово yield используется для создания генератора, который является разновидностью итератора. В отличие от обычных функций, которые возвращают значения с помощью return и завершают своё выполнение, функции с yield возвращают генератор, который при каждом вызове продолжает выполнение функции с того места, где было сделано последнее yield. 🚩Плюсы ➕Экономия памяти Генераторы вычисляют значения по требованию (lazy evaluation), что позволяет им обрабатывать даже очень большие последовательности данных, не загружая всю последовательность в память. Это особенно полезно для обработки больших файлов или потоков данных. ➕Удобство в управлении состоянием Функции с yield удобны, когда нужно управлять сложным состоянием внутри функции. Функция может "замораживать" своё состояние между вызовами и продолжать выполнение с того места, где она остановилась. ➕Составление итераторов Создание итератора с помощью yield значительно упрощается по сравнению с классами итераторов, которые требуют определения методов __iter__() и __next__().
def fibonacci(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

# Создание генератора для первых 10 чисел Фибоначчи
fib_gen = fibonacci(10)

# Итерация по генератору
for num in fib_gen:
    print(num)
Ставь 👍 и забирай 📚 Базу знаний

🔥 Скрытые вакансии с удаленной работой для DS / ML, которые нигде больше не публикуются. Напрямую от компаний, с контактами
🔥 Скрытые вакансии с удаленной работой для DS / ML, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров. 🔹 Data Science ML | Вакансии 🔹 Data Engineer | Вакансии 🔹 Аналитик Данных | Вакансии 🔸 Все каналы с вакансиями

Нейросети для бизнеса с оплатой в рублях от NetAngels NetAngels AI Studio – единый API к языковым моделям. -Работайте по офиц
Нейросети для бизнеса с оплатой в рублях от NetAngels NetAngels AI Studio – единый API к языковым моделям. -Работайте по официальному договору -Пополняйте баланс безналичным расчётом в рублях с расчётного счёта компании -Получайте закрывающие документы автоматически через Диадок Выбирайте российский агрегатор нейросетей от NetAngels! Получить консультацию #реклама 16+ netangels.ru О рекламодателе

🤔 Каким образом память в питоне ощищается и выделяется? В Python память выделяется и очищается с использованием механизмов управления памятью, таких как счетчик ссылок и сборка мусора (garbage collection). 🚩Выделение памяти 🟠Куча (Heap) Python использует кучу для динамического выделения памяти объектам. Куча управляется менеджером памяти Python. 🟠Менеджер памяти Менеджер памяти Python выделяет память из кучи и распределяет ее для объектов. Он отслеживает свободные и занятые блоки памяти. 🟠Создание объектов Когда создается новый объект, менеджер памяти выделяет необходимый блок памяти из кучи. Каждый объект имеет заголовок, который содержит метаинформацию, такую как тип объекта и счетчик ссылок, и область данных, где хранятся значения. 🚩Очистка памяти 🟠Счетчик ссылок (Reference Counting) Каждый объект в Python имеет счетчик ссылок, который отслеживает количество ссылок на этот объект. Счетчик ссылок увеличивается, когда создается новая ссылка на объект, и уменьшается, когда ссылка удаляется. Когда счетчик ссылок объекта становится равным нулю, объект считается неиспользуемым и подлежит удалению. 🟠Сборка мусора (Garbage Collection) Python использует сборщик мусора для управления памятью и удаления неиспользуемых объектов. Основной алгоритм сборки мусора в Python основан на обнаружении циклических ссылок, которые невозможно удалить с помощью простого счетчика ссылок. 🟠Обнаружение циклов Сборщик мусора периодически просматривает объекты и их ссылки, чтобы найти циклы (группы объектов, ссылающихся друг на друга). Объекты, которые не имеют внешних ссылок (счетчик ссылок равен нулю) и находятся в цикле, считаются неиспользуемыми и удаляются.
import sys
import gc

# Создание объекта и проверка счетчика ссылок
a = [1, 2, 3]
print(sys.getrefcount(a))  # Обычно возвращает 2, так как есть ссылка a и временная ссылка для вызова функции

# Увеличение счетчика ссылок
b = a
print(sys.getrefcount(a))  # Теперь возвращает 3, так как есть ссылки a, b и временная ссылка для вызова функции

# Уменьшение счетчика ссылок
del b
print(sys.getrefcount(a))  # Теперь возвращает 2, так как ссылка b удалена

# Принудительный запуск сборщика мусора
gc.collect()
🚩Память и большие данные При работе с большими объемами данных полезно использовать более эффективные структуры данных и библиотеки, такие как numpy, которые позволяют более эффективно управлять памятью.
import numpy as np

# Создание большого массива с использованием numpy
large_array = np.zeros((1000, 1000))
Ставь 👍 и забирай 📚 Базу знаний

Открытый урок: бизнес-логика в микросервисах Разработка в микросервисах — это не только разбиение на сервисы, но и грамотное
Открытый урок: бизнес-логика в микросервисах Разработка в микросервисах — это не только разбиение на сервисы, но и грамотное распределение логики. 22 октября в 19:00 мск — открытый урок для разработчиков и архитекторов. Узнаете, где должна жить бизнес-логика. Запишитесь! Зарегистрироваться #реклама 16+ otus.ru О рекламодателе