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

channel icon
Разбираем вопросы с собеседований на Data Scientist.

Сайт: easyoffer.ru

Условия размещения

Цена за 48 часов в ленте 2300,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
Дополнительные условия рекламы Отсутствуют
+7
3 790
подписчиков
+7
653
охват 1 публикации
0
~2
постов / день
+0,1%
17,2%
ERR % ?

Статистика

Последние публикации

Data Science | Вопросы собесов
20 января 2025 г. 19:10
🤔🤔 Какие проблемы могут возникнуть при проверке сразу 10 гипотез?

1. Ошибка множественного сравнения: увеличивается вероятность ложных положительных результатов.
2. Ухудшается интерпретируемость результатов из-за возможного совпадения случайных данных.
3. Для устранения проблемы применяются поправки, такие как метод Бонферрони или FDR.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
20 января 2025 г. 12:10
🤔 Какие знаешь рекомендательные модели ?

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

🟠Коллаборативная фильтрация
Эта модель работает на основе предпочтений или оценок, которые пользователи выставляют товарам или услугам. Она может быть реализована двумя способами: Пользователь-пользователь: Рекомендации формируются на основе схожести между пользователями. Если два пользователя похоже оценивают одни и те же товары, то товары, понравившиеся одному из них, могут быть рекомендованы другому. Товар-товар: Рекомендации формируются на основе схожести между товарами. Если товары часто оцениваются схожим образом разными пользователями, то они могут быть рекомендованы как похожие.

🟠Контентная фильтрация
Этот подход использует характеристики самих объектов (например, описание фильмов или характеристики товаров) для рекомендаций. Если пользователю понравился товар с определенными характеристиками, система рекомендует другие товары с похожими характеристиками.

🟠Гибридные системы
Комбинация коллаборативной и контентной фильтрации. Этот подход устраняет недостатки каждой отдельной модели, предлагая более точные и персонализированные рекомендации.

🟠Методы, основанные на знаниях
Эти системы используют специфические знания о контексте взаимодействия пользователя и объекта. Они полезны там, где предыдущих данных о пользователе недостаточно для формирования рекомендаций.

🟠Модели глубокого обучения
Современные методы, такие как сверточные нейронные сети (CNN) для анализа изображений товаров или рекуррентные нейронные сети (RNN) для работы с последовательностями и временными рядами. Например, системы рекомендации Netflix для фильмов используют машинное обучение для анализа предпочтений пользователя и предсказания оценок.

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

# Допустим, у нас есть следующий набор данных оценок пользователей
data = {'User': ['User1', 'User2', 'User3'],
'Item1': [5, 3, 2],
'Item2': [4, 1, 6],
'Item3': [1, 5, 2]}
df = pd.DataFrame(data).set_index('User')

# Вычисляем косинусное сходство между товарами
similarity_matrix = cosine_similarity(df.T)

# Преобразуем в DataFrame для удобства
similarity_df = pd.DataFrame(similarity_matrix, index=df.columns, columns=df.columns)
print(similarity_df)


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
19 января 2025 г. 19:10
🤔🤔 Почему в статистических тестах часто нулевой гипотезой берут отсутствие различий?

1. Нулевая гипотеза формулируется как базовое предположение, которое проще проверить и опровергнуть.
2. Отсутствие различий (равенство параметров) — нейтральное предположение, которое логично отвергать при наличии статистически значимых данных.
3. Это помогает минимизировать риск ложных положительных выводов (ошибки первого рода).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
19 января 2025 г. 12:10
🤔 Как решить задачу, где присутствует одновременно два target - один categorical другой continuous?Как решить задачу, где присутствует одновременно два target - один categorical другой continuous?

Решение задачи, в которой одновременно присутствуют два целевых признака (один категориальный и один непрерывный), можно реализовать через подход многозадачного обучения (multi-task learning). Это подход, при котором одна модель или несколько связанных моделей обучаются одновременно решать несколько задач. Вот пошаговое объяснение, как можно это сделать.

🚩 Определение задач

🟠 Категориальный признак (classification target)
Например, предсказание категории продукта (класс A, класс B, класс C).
🟠Непрерывный признак (regression target)
Например, предсказание стоимости продукта.

🚩 Подходы к решению

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

В данном примере мы используем библиотеку Keras для построения нейронной сети, которая решает обе задачи одновременно.
import pandas as pd
import numpy as np
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense

# Пример данных
data = pd.DataFrame({
'feature1': np.random.rand(100),
'feature2': np.random.rand(100),
'categorical_target': np.random.randint(0, 3, 100), # 3 класса
'continuous_target': np.random.rand(100) * 1000
})

# Разделение признаков и целевых переменных
X = data[['feature1', 'feature2']].values
y_class = data['categorical_target'].values
y_reg = data['continuous_target'].values

# Определение входного слоя
input_layer = Input(shape=(X.shape[1],))

# Общие слои для извлечения признаков
common_layer = Dense(64, activation='relu')(input_layer)
common_layer = Dense(32, activation='relu')(common_layer)

# Отдельный выходной слой для классификации
classification_output = Dense(3, activation='softmax', name='classification_output')(common_layer)

# Отдельный выходной слой для регрессии
regression_output = Dense(1, activation='linear', name='regression_output')(common_layer)

# Создание модели
model = Model(inputs=input_layer, outputs=[classification_output, regression_output])

# Компиляция модели с различными функциями потерь для каждой задачи
model.compile(optimizer='adam',
loss={'classification_output': 'sparse_categorical_crossentropy', 'regression_output': 'mse'},
metrics={'classification_output': 'accuracy', 'regression_output': 'mse'})

# Обучение модели
model.fit(X, {'classification_output': y_class, 'regression_output': y_reg}, epochs=50, batch_size=16)


🚩Объяснение кода

🟠Определение входного слоя
Определяем входной слой, принимающий признаки.
🟠Общие слои
Создаем несколько слоев для извлечения признаков, которые будут общими для обеих задач.
🟠Отдельные выходные слои
Создаем два выходных слоя, один для классификации (с функцией активации softmax) и один для регрессии (с линейной функцией активации).
🟠Создание и компиляция модели
Компилируем модель, указав разные функции потерь для каждой задачи (cross-entropy для классификации и MSE для регрессии).
🟠Обучение модели
Обучаем модель, передавая одновременно два целевых признака.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
18 января 2025 г. 19:10
🤔🤔 Что такое генератор, декоратор, итератор?

Это функция, использующая yield, которая возвращает элементы по одному. Декоратор — функция, модифицирующая поведение другой функции. Итератор — объект, реализующий методы iter и next для последовательного перебора элементов.iter и next для последовательного перебора элементов.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
18 января 2025 г. 12:10
🤔 Что будет с целевой меткой с предсказаниями, если обучалась на неотрицательной целевой метке?Что будет с целевой меткой с предсказаниями, если обучалась на неотрицательной целевой метке?

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

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

🟠🟠Вероятностные модели (например, модели, предсказывающие вероятность события)
Обученные на неотрицательных целевых метках (например, 0 или 1), будут предсказывать значения в диапазоне [0, 1]. Однако, эти модели также могут иногда предсказывать значения немного ниже 0 или выше 1 из-за особенности алгоритмов (например, логистическая регрессия без дополнительных ограничений).

🚩Способы предотвращения предсказания отрицательных значений

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

🟠Постобработка предсказаний
Можно применить после предсказания функцию, которая заменяет все отрицательные значения на ноль.
predictions = model.predict(X_test)
predictions = np.maximum(predictions, 0) # Заменяем все отрицательные значения на 0


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

🟠Трансформация целевой переменной
Можно применить логарифмическую трансформацию или другую трансформацию, которая делает целевую переменную всегда неотрицательной, и потом обратную трансформацию для предсказаний.
from sklearn.linear_model import LinearRegression
import numpy as np

# Пример данных
X_train = np.array([[1], [2], [3], [4]])
y_train = np.array([10, 15, 20, 25]) # Неотрицательные целевые метки

# Обучение модели
model = LinearRegression()
model.fit(X_train, y_train)

# Предсказания
X_test = np.array([[5], [6], [7]])
predictions = model.predict(X_test)

# Применение постобработки для удаления отрицательных значений
predictions = np.maximum(predictions, 0)

print(predictions)


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
17 января 2025 г. 19:10
🤔🤔 Каким образом память очищается и выделяется?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
17 января 2025 г. 12:10
🤔🤔 Какие лоссы ты знаешь?Какие лоссы ты знаешь?

В машинном обучении (и особенно в глубоких нейронных сетях) лосс-функция (или функция потерь) используется для оценки того, насколько хорошо модель предсказывает результат. Лосс — это численное выражение ошибки, которое модель пытается минимизировать во время обучения.

🚩Лоссы для задач регрессии

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

🟠MSE (Mean Squared Error, Среднеквадратичная ошибка)
MSE = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2
Почему: Она штрафует большие ошибки сильнее (из-за квадрата), поэтому модель пытается минимизировать крупные отклонения.
Недостаток: Чувствительна к выбросам, так как большие ошибки сильно влияют на результат.

🟠MAE (Mean Absolute Error, Средняя абсолютная ошибка)
MAE = \frac{1}{n} \sum_{i=1}^n |y_i - \hat{y}_i|
Почему: Она менее чувствительна к выбросам.
Недостаток: Может быть сложнее оптимизировать, поскольку производная модуля недифференцируема в 0.

🟠Huber Loss
Комбинация MSE и MAE. Менее чувствительна к выбросам, чем MSE.

L_{\delta}(a) =
\begin{cases}
\frac{1}{2}(y_i - \hat{y}_i)^2 & \text{if } |y_i - \hat{y}_i| \leq \delta, \\
\delta \cdot |y_i - \hat{y}_i| - \frac{1}{2} \delta^2 & \text{otherwise.}
\end{cases}

🚩Лоссы для задач классификации

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

🟠Binary Cross-Entropy (Логарифмическая потеря)
Используется для бинарной классификации.
BCE = - \frac{1}{n} \sum_{i=1}^n \big(y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i)\big)
Почему: Лосс сильнее штрафует уверенные, но неправильные предсказания. Пример: Вероятность принадлежности классу "1" предсказана как 0.99, но правильный класс — "0".

🟠Categorical Cross-Entropy (Кросс-энтропия)
Для многоклассовой классификации:
CCE = - \sum_{i=1}^n \sum_{j=1}^k y_{ij} \log(\hat{y}_{ij})
Почему: Учитывает все классы, штрафуя уверенные ошибки сильнее.

🟠Hinge Loss
Применяется в задачах с методами опорных векторов (SVM).
L = \max(0, 1 - y_i \cdot \hat{y}_i)
Почему: Стимулирует модель делать более "уверенные" предсказания.

🚩Лоссы для задач сегментации или генерации

🟠Dice Loss:
Используется для задач сегментации изображений.
Dice = 1 - \frac{2 |A \cap B|}{|A| + |B|}
Почему: Учитывает пересечение предсказанной области и истинной разметки.

🟠Perceptual Loss
Используется в задачах генерации изображений, чтобы сравнивать "перцептивное" различие между изображениями, а не просто пиксели.

🚩Специфические лоссы

🟠KL Divergence (Дивергенция Кульбака-Лейблера)
Измеряет, насколько распределение предсказаний модели отличается от целевого распределения.
D_{KL}(P || Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)}

🟠Triplet Loss
Для задач, связанных с обучением эмбеддингов (например, в системах рекомендаций или в задачах поиска изображений).

🚩Пример реализации (MSE)

import torch
import torch.nn as nn

# Предсказания модели
y_pred = torch.tensor([2.5, 0.0, 2.0, 8.0])
# Истинные значения
y_true = torch.tensor([3.0, -0.5, 2.0, 7.0])

# Среднеквадратичная ошибка
loss_fn = nn.MSELoss()
loss = loss_fn(y_pred, y_true)
print(f"MSE Loss: {loss.item()}")


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
16 января 2025 г. 19:10
🤔🤔 Как работает память?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
16 января 2025 г. 12:10
🤔 Какие современные архитектуры языковых моделей известны?Какие современные архитектуры языковых моделей известны?

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

🟠BERT (Bidirectional Encoder Representations from Transformers)
Разработан компанией Google в 2018 году. Использует механизм внимания (attention), который позволяет модели одновременно учитывать контекст с обеих сторон входной последовательности (левой и правой). Эта модель предобучается на задачах предсказания слов по контексту и определения следующего предложения. Значительно улучшил результаты по сравнению с предыдущими моделями на широкий спектр задач NLP, включая вопросно-ответные системы, классификацию текстов и маркировку сущностей.

🟠GPT (Generative Pre-trained Transformer)
Разработана OpenAI, GPT и её последующие версии (GPT-2, GPT-3, GPT-4) стали известны благодаря своей способности генерировать текст, который трудно отличить от текста, написанного человеком. Представляет собой модель с однонаправленным вниманием, что позволяет ей эффективно предсказывать следующее слово в последовательности, делая её особенно мощной для задач генерации текста. Модели GPT обучаются на огромных объёмах текстовых данных и способны выполнять широкий спектр задач без специализированного обучения, используя технику под названием "zero-shot learning".

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

🟠RoBERTa (Robustly Optimized BERT Approach)
Разработана Facebook, представляет собой итерацию и улучшение BERT. Модифицирует ключевые аспекты BERT, такие как увеличение размера мини-пакетов, удлинение тренировочных данных и удаление этапа предобучения с предсказанием следующего предложения. Эти изменения позволили RoBERTa достичь новых рекордных результатов на стандартных тестовых наборах NLP.

🟠ALBERT (A Lite BERT)
Это ещё одна вариация BERT, созданная с целью уменьшения потребления памяти и ускорения обучения. Использует разделяемые между слоями параметры и факторизует матрицу внимания для уменьшения количества требуемых параметров, что делает его более эффективным с точки зрения использования ресурсов.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
15 января 2025 г. 19:10
🤔🤔 Какие типы данных относятся к изменяемым и неизменяемым?

Изменяемые: списки (list), словари (dict), множества (set). Неизменяемые: строки (str), числа (int, float), кортежи (tuple).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
15 января 2025 г. 12:10
🤔 Зачем нужен метод dir для объектов?Зачем нужен метод dir для объектов?

Метод dir() используется для автоматического перечисления атрибутов, методов и других идентификаторов, которые доступны для любого объекта. Это полезный инструмент для исследования и интерактивного программирования, особенно когда вы работаете с новыми библиотеками или объектами, структура и свойства которых вам не полностью известны.

🚩Зачем нужен dir()

🟠Интроспекция
Используется для интроспекции объектов, то есть для определения, какие свойства и методы они имеют. Это особенно полезно в средах разработки, где вы можете не знать точной структуры объекта.

🟠Отладка
Помогает понять объекты, с которыми они работают, что может значительно облегчить отладку кода, позволяя быстро проверить, какие методы и атрибуты доступны для объекта.

🟠Рефлексия
Это свойство, позволяющее программе манипулировать своими частями. С помощью dir() можно получить список, содержащий имена всех атрибутов, которые доступны в объекте, что может быть использовано для рефлексивного доступа к атрибутам и методам.

🚩Как она работает

Когда вы вызываете dir() для объекта, возвращает список строк. Каждая строка — это имя атрибута или метода, доступного для объекта. Если вызвать dir() без аргументов, то будет возвращен список имен в текущей локальной области видимости.
class Car:
def __init__(self, make, model):
self.make = make
self.model = model

def start(self):
print("Машина заведена")

car = Car("Toyota", "Corolla")

# Выведем список всех атрибутов и методов объекта car
print(dir(car))


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
14 января 2025 г. 19:10
🤔🤔 Зачем нужен Instance Normalization?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
14 января 2025 г. 12:10
🤔 Как систематическая ошибка и дисперсии связаны между собой?Как систематическая ошибка и дисперсии связаны между собой?

Это два важных понятия в статистике и машинном обучении, которые вместе с шумом описывают общую ошибку предсказаний модели. Они часть компромисса, известного как "bias-variance tradeoff", который является центральным в построении эффективных предиктивных моделей. Рассмотрим их связь и взаимное влияние.

🚩🚩Систематическая ошибка (Bias)

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

🚩🚩Дисперсия (Variance)

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

🚩Взаимосвязь между систематической ошибкой и дисперсией

Они через компромисс, который необходимо достичь при построении моделей. Уменьшение одного из этих компонентов часто приводит к увеличению другого:

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

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
13 января 2025 г. 19:10
🤔 Чем отличается BERT от GPT?

Двухнаправленная модель, анализирующая контекст слова с обеих сторон, предназначена для понимания текста. GPT — однонаправленная модель, генерирующая текст слева направо, сосредоточена на предсказании следующего слова.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
13 января 2025 г. 12:10
🤔 В чем различия между методами apply и applymap?В чем различия между методами apply и applymap?

Методы apply и applymap используются для применения функций к данным, но они работают на разных уровнях и имеют разные области применения.

🚩Метод apply

Можно использовать как с объектами DataFrame, так и с Series для применения функции вдоль оси данных:
🟠DataFrame
Применяется к каждой строке или столбцу в DataFrame. Можно указать ось для применения функции (axis=0 для столбцов, axis=1 для строк).
🟠Series
Применяется к каждому элементу в Series.

Пример использования на DataFrame
import pandas as pd

df = pd.DataFrame({
'A': range(1, 5),
'B': range(10, 50, 10)
})

# Применение функции к каждому столбцу (по умолчанию axis=0)
result = df.apply(lambda x: x + 10)
print(result)


Пример использования на Series
s = pd.Series([1, 2, 3])
result = s.apply(lambda x: x**2)
print(result)


🚩Метод applymap

Используется только с объектами DataFrame и применяется к каждому элементу в DataFrame. Этот метод подходит для поэлементных преобразований, таких как применение математических функций или форматирование строк.
import pandas as pd

df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})

# Применение функции ко всем элементам DataFrame
result = df.applymap(lambda x: x**2)
print(result)


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
12 января 2025 г. 19:10
🤔🤔 Как посчитать ROC-AUC скор?

Вычисляется как площадь под ROC-кривой, которая отражает соотношение True Positive Rate и False Positive Rate на различных порогах. Для расчёта можно использовать функцию roc_auc_score из библиотеки sklearn.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
12 января 2025 г. 12:10
🤔 Чем отличаются str и repr?Чем отличаются str и repr?

Функции str() и repr() используются для получения строкового представления объектов, но они служат разным целям и работают по-разному.

🚩🚩Функция str()

Предназначена для получения "приятного" строкового представления объекта, которое может быть представлено пользователю. Она старается сделать строку более читабельной и понятной. Если метод __str__() не определен в классе объекта, использует метод __repr__() как запасной вариант.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def __str__(self):
return f"{self.name}, возраст {self.age} лет"

person = Person("Иван", 30)
print(str(person)) # Вывод: Иван, возраст 30 лет


🚩Функция repr()

Предназначена для получения официального строкового представления объекта, которое может быть использовано для воссоздания того же объекта при помощи интерпретатора. repr() должна быть максимально точной и содержать информацию о всех атрибутах объекта. Результат repr() часто используется для отладки и разработки, так как он дает больше деталей о объекте.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def __repr__(self):
return f"Person('{self.name}', {self.age})"

person = Person("Иван", 30)
print(repr(person)) # Вывод: Person('Иван', 30)


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
11 января 2025 г. 19:10
🤔🤔 Назови пример для мультиклассовой и мультилейбловой задачи.

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
11 января 2025 г. 12:10
🤔 Как работают несимметрические метрики ?Как работают несимметрические метрики ?

Несимметричные метрики в контексте оценки моделей машинного обучения обычно относятся к ситуациям, когда разные типы ошибок имеют разное значение или стоимость. Эти метрики применяются в тех случаях, когда стоимость ложноположительных (false positive, FP) и ложноотрицательных (false negative, FN) результатов не равна. Это особенно актуально в таких областях, как медицина, финансы, и системы безопасности, где ошибки могут иметь серьезные последствия.

🟠Стоимостная функция (Cost Function)
Стоимостная функция присваивает разные штрафы за разные типы ошибок. Например, в медицинской диагностике стоимость пропущенного случая болезни (FN) может быть значительно выше, чем стоимость ложного срабатывания (FP). Это можно математически выразить следующим образом:
\[ \text{Total Cost} = c_{FP} \times FP + c_{FN} \times FN \]
где \( c_{FP} \) и \( c_{FN} \) — штрафы за FP и FN соответственно.

🟠Взвешенная ошибка
В некоторых задачах прогнозирования может быть полезно ввести веса для различных классов, чтобы учесть их неравную значимость или неравномерное распределение. Например, взвешенная среднеквадратичная ошибка может выглядеть так:
\[ \text{Weighted MSE} = \frac{1}{n} \sum_{i=1}^{n} w_i (y_i - \hat{y}_i)^2 \]
где \( w_i \) — вес, отражающий важность правильного прогнозирования для i-го наблюдения.

🟠Взвешенная точность (Weighted Accuracy)
Эта метрика учитывает различное значение точности для разных классов в задачах классификации:
\[ \text{Weighted Accuracy} = \frac{1}{\sum w_i} \sum_{i=1}^{n} w_i \cdot \text{accuracy}_i \]
где \( \text{accuracy}_i \) — точность для i-го класса, а \( w_i \) — соответствующий вес класса.

from sklearn.metrics import confusion_matrix

# предположим y_true и y_pred - настоящие и предсказанные метки соответственно
y_true = [1, 0, 1, 1, 0, 1]
y_pred = [0, 0, 1, 1, 0, 1]

conf_matrix = confusion_matrix(y_true, y_pred)
FP = conf_matrix[0][1]
FN = conf_matrix[1][0]
cost_FP = 1 # Штраф за FP
cost_FN = 5 # Штраф за FN значительно выше
total_cost = cost_FP * FP + cost_FN * FN
print("Total Cost of Errors:", total_cost)


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний