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

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

@easy_ds

Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy

Контакт для рекламы: @sendme_ads
Subscribers
4.89K
Photos
39
Videos
0
Links
1.6K

Showing posts older than #2631 · Back to latest

Older Posts 20 shown
Post #2629 365
🤔 Как делается прунинг деревьев?

Прунинг деревьев (или обрезка деревьев решений) — это процесс удаления ненужных ветвей в дереве, чтобы упростить модель и предотвратить переобучение. Обычно это делается путем удаления или сокращения узлов, которые добавляют мало полезной информации, что уменьшает сложность дерева без значительных потерь в точности. Существует несколько методов прунинга, включая предобрезку (pruning during tree construction) и постобрезку (pruning after tree construction), которые помогают сбалансировать общее количество узлов и глубину дерева, улучшая его обобщающую способность.

🚩До обрезки (Pre-pruning)

До обрезки включает остановку роста дерева раньше, чем оно полностью обучится. В процессе построения дерева принимаются решения о прекращении роста текущей ветви, если выполнение одного из критериев остановки.
Максимальная глубина дерева (max depth)
Останавливает рост дерева, если оно достигает определенной глубины.
Минимальное количество образцов в листе (min samples leaf)
Останавливает рост дерева, если в узле меньше определенного количества образцов.
Минимальное количество образцов для разбиения (min samples split)
Останавливает рост дерева, если меньше определенного количества образцов в узле для разбиения.
Минимальная информационная выгода (min impurity decrease)
Останавливает рост дерева, если уменьшение неопределенности после разбиения меньше определенного порога.

🚩После обрезки (Post-pruning)

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

🟠Обрезка на основе ошибки на валидационном наборе
Дерево сначала обучается до полной глубины, а затем на валидационном наборе данных удаляются ветви, которые увеличивают ошибку.
🟠Обрезка на основе критерия минимальной ошибки (cost complexity pruning)
Включает расчет ошибки для каждого поддерева и удаление тех, которые увеличивают общую ошибку меньше всего.

🚩Пример обрезки деревьев

До обрезки
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

# Загрузка данных
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Модель с параметрами до обрезки
model_pre_pruning = DecisionTreeClassifier(max_depth=3, min_samples_split=4, min_samples_leaf=2)
model_pre_pruning.fit(X_train, y_train)

# Оценка модели
print(f"Точность на тестовом наборе (до обрезки): {model_pre_pruning.score(X_test, y_test)}")


После обрезки
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt

# Создание и обучение дерева без обрезки
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

# Построение полного дерева
plt.figure(figsize=(20,10))
plot_tree(model, filled=True)
plt.show()

# Применение после обрезки с помощью параметра cost_complexity_pruning
path = model.cost_complexity_pruning_path(X_train, y_train)
ccp_alphas, impurities = path.ccp_alphas, path.impurities

# Обучение моделей для каждого значения alpha
models = []
for ccp_alpha in ccp_alphas:
model = DecisionTreeClassifier(ccp_alpha=ccp_alpha)
model.fit(X_train, y_train)
models.append(model)

# Выбор лучшей модели на основе валидационного набора
best_model = None
best_score = 0
for model in models:
score = model.score(X_test, y_test)
if score > best_score:
best_model = model
best_score = score

# Оценка лучшей модели
print(f"Точность на тестовом наборе (после обрезки): {best_score}")


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
Post #2628 307
🤔 Что такое градиентный спуск?

Градиентный спуск — это метод оптимизации, который используется для нахождения минимального значения функции ошибки модели путём итеративного изменения параметров модели (например, весов). На каждом шаге вычисляется градиент функции ошибки по параметрам, и параметры корректируются в направлении, противоположном градиенту. Шаг изменения регулируется параметром скорости обучения (learning rate). Градиентный спуск эффективен для обучения моделей с большим количеством параметров.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
  • 🔥 1
Post #2627 351
🤔 Что такое F-score и зачем его используют?

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

🚩Зачем нужен?

🟠Комбинирования точности и полноты в одну метрику
Точность (Precision): Доля правильно предсказанных положительных примеров из всех предсказанных положительных. Полнота (Recall): Доля правильно предсказанных положительных примеров из всех истинных положительных.
🟠Балансировки между точностью и полнотой
В некоторых задачах важнее минимизировать ложноположительные ошибки, в других – ложные отрицательные. F-score помогает найти баланс.
🟠Оценки моделей на несбалансированных данных
В условиях, где один класс значительно преобладает, F-score дает более полное представление о производительности модели, чем просто точность или полнота.

🚩Как вычисляется?

Это гармоническое среднее точности и полноты, что позволяет избежать завышения оценки при высоком значении только одной из метрик. Формула F-score выглядит следующим образом:

F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} 


Где:
\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} 

\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} 


Пример
from sklearn.metrics import f1_score

# Пример данных
y_true = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1] # Истинные значения
y_pred = [0, 1, 0, 1, 0, 1, 0, 1, 1, 0] # Предсказанные значения

# Вычисление F-score
f1 = f1_score(y_true, y_pred)

print(f'F-score: {f1:.2f}')


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 2
Post #2626 331
🤔 Назови формулу линейной модели.

Формула линейной модели имеет вид: `y = w0 + w1 * x1 + w2 * x2 + ... + wn * xn`, где `y` — это предсказанная величина, `x1, x2, ..., xn` — входные переменные (признаки), а `w0, w1, ..., wn` — коэффициенты (веса), которые модель подбирает во время обучения. `w0` представляет собой свободный член (смещение или bias). Цель линейной регрессии — найти такие значения весов, которые минимизируют ошибку предсказания.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Post #2625 385
🤔 Назови пример для мультиклассовой и мультилейбловой задачи

Распознавание рукописных цифр (0–9) в задаче MNIST.
Входные данные: изображение (28×28 пикселей).
Выход: один из 10 классов (0, 1, 2, ..., 9).
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

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

# Обучаем модель
model = LogisticRegression(max_iter=5000, multi_class='multinomial', solver='lbfgs')
model.fit(X_train, y_train)

# Делаем предсказание
y_pred = model.predict(X_test)
print(f'Accuracy: {accuracy_score(y_test, y_pred)}')


Пример для мультилейбловой (multilabel) задачи
В мультилейбловой классификации у одного объекта может быть несколько меток одновременно.
Классификация жанров фильмов на основе описания. Один фильм может относиться сразу к нескольким жанрам:
Фильм: "Матрица"
Жанры: [боевик, научная фантастика, триллер]
Используем MultiLabelBinarizer и OneVsRestClassifier:
from sklearn.datasets import make_multilabel_classification
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsRestClassifier
from sklearn.preprocessing import MultiLabelBinarizer

# Генерируем синтетические мультилейбловые данные
X, y = make_multilabel_classification(n_samples=1000, n_classes=5, n_labels=2, random_state=42)

# Разделяем данные
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Обучаем мультилейбловую модель
model = OneVsRestClassifier(LogisticRegression(max_iter=5000))
model.fit(X_train, y_train)

# Делаем предсказание
y_pred = model.predict(X_test)

# Выводим пример предсказания
print(f'Пример реальных меток: {y_test[0]}')
print(f'Пример предсказанных меток: {y_pred[0]}')


Ставь 👍 и забирай 📚 Базу знаний
Post #2615 413
🤔 Какие есть усовершенствования бинарной кросс-энтропии?

Улучшения бинарной кросс-энтропии включают Focal Loss для фокусировки на сложных примерах, Weighted Binary Cross-Entropy для учета дисбаланса классов, и Label Smoothing для сглаживания меток, что помогает модели обобщать и снижает переобучение.

🟠Focal Loss
Была разработана для улучшения обработки несбалансированных данных, когда классы имеют значительное различие в количестве образцов. Эта функция потерь добавляет коэффициент, который уменьшает вес хорошо классифицированных примеров, что позволяет модели больше сосредотачиваться на сложных или ошибочно классифицированных примерах.
import tensorflow as tf

def focal_loss(gamma=2., alpha=0.25):
def focal_loss_fixed(y_true, y_pred):
y_true = tf.cast(y_true, tf.float32)
alpha_t = y_true * alpha + (tf.ones_like(y_true) - y_true) * (1 - alpha)
p_t = y_true * y_pred + (tf.ones_like(y_true) - y_true) * (tf.ones_like(y_pred) - y_pred)
fl = - alpha_t * tf.pow((tf.ones_like(y_true) - p_t), gamma) * tf.math.log(p_t)
return tf.reduce_mean(fl)
return focal_loss_fixed


🟠Weighted Binary Cross-Entropy
Позволяет назначать разные веса классам, чтобы сбалансировать вклад каждого класса в общую функцию потерь. Это особенно полезно для работы с несбалансированными наборами данных.
import tensorflow as tf

def weighted_binary_crossentropy(y_true, y_pred, beta=1.0):
y_true = tf.cast(y_true, tf.float32)
epsilon = tf.keras.backend.epsilon()
y_pred = tf.clip_by_value(y_pred, epsilon, 1. - epsilon)
return -beta * y_true * tf.math.log(y_pred) - (1 - beta) * (1 - y_true) * tf.math.log(1 - y_pred)


🟠Hinge Loss
Обычно используется для задач бинарной классификации с поддерживающими векторами (SVM). Она также может быть использована с нейронными сетями, когда требуется максимизировать разницу между классами.
import tensorflow as tf

def hinge_loss(y_true, y_pred):
y_true = tf.cast(y_true, tf.float32)
y_true = 2 * y_true - 1 # Преобразуем метки 0/1 в -1/1
return tf.reduce_mean(tf.maximum(0., 1. - y_true * y_pred))


🟠Dice Loss

Особенно полезна для задач сегментации, так как она измеряет сходство между предсказанным и истинным набором данных. Это усовершенствование бинарной кросс-энтропии учитывает пересечение и объединение предсказанных и истинных классов.
import tensorflow as tf

def dice_loss(y_true, y_pred, smooth=1):
y_true = tf.cast(y_true, tf.float32)
y_pred = tf.cast(y_pred, tf.float32)
intersection = tf.reduce_sum(y_true * y_pred)
return 1 - (2. * intersection + smooth) / (tf.reduce_sum(y_true) + tf.reduce_sum(y_pred) + smooth)


Ставь 👍 и забирай 📚 Базу знаний
Post #2614 406
🤔 Как обучается модель?

Процесс обучения модели машинного обучения включает:
1. Предобработку данных – нормализация, удаление выбросов, кодирование категориальных признаков.
2. Выбор модели – линейная регрессия, дерево решений, нейросети и т. д.
3. Разделение данных – обучение (train), валидация (validation), тестирование (test).
4. Оптимизация параметров – подбор коэффициентов с помощью градиентного спуска или других методов.
5. Оценка качества – использование метрик (MSE, Accuracy, ROC-AUC).
Модель обучается за счет минимизации функции потерь и корректировки параметров.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Post #2613 420
🤔 Если говорить про бизнес, что лучше выбрать линейную модель или дерево?

Выбор между линейной моделью и деревом решений зависит от нескольких факторов:

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

🟠Дерево решений
- Данные имеют сложные, нелинейные зависимости.
- Важна автоматическая обработка пропущенных значений и отсутствие необходимости масштабировать данные.
- Нужно учитывать взаимодействия между признаками (например, если один признак влияет на результат только при определённом значении другого признака).
- Интерпретация менее важна, но важна высокая точность.

🚩Примеры

🟠Линейная модель: прогноз продаж по цене
Допустим, у нас есть зависимость: чем выше цена, тем ниже продажи. Можно использовать линейную регрессию:
from sklearn.linear_model import LinearRegression

X = [[10], [20], [30], [40]] # Цена товара
y = [1000, 800, 600, 400] # Продажи

model = LinearRegression()
model.fit(X, y)

print(model.predict([[25]])) # Прогнозируем продажи при цене 25


🟠Дерево решений: кредитный скоринг
Допустим, банк решает, выдавать ли кредит. У клиента есть признаки: доход, возраст, наличие задолженности. Взаимодействия сложные, например:
- Если у человека низкий доход и есть задолженность, то отказ.
- Если высокий доход, но был просроченный кредит, нужно учитывать другие факторы.
from sklearn.tree import DecisionTreeClassifier

X = [[25, 30000, 0], [40, 60000, 1], [35, 80000, 0], [50, 50000, 1]] # Возраст, доход, задолженность
y = [0, 0, 1, 1] # 0 - отказ, 1 - одобрение

model = DecisionTreeClassifier()
model.fit(X, y)

print(model.predict([[30, 70000, 0]])) # Прогноз для нового клиента


Ставь 👍 и забирай 📚 Базу знаний
Post #2611 399
🤔 В чем отличия между loc и iloc?

В pandas `loc` используется для доступа по метке (label) индекса, а `iloc` — для доступа по числовому индексу, независимо от того, как промаркированы индексы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Post #2609 413
🤔 Как работает градиентный спуск?

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

🚩Основные шаги алгоритма

1⃣Инициализация
Начните с случайного значения параметра(ов) \( \theta \) (например, веса в линейной регрессии).

2⃣Вычисление градиента
Определите градиент функции потерь в текущей точке \( \theta \). Градиент показывает направление наискорейшего увеличения функции, поэтому для минимизации мы движемся в противоположном направлении.

3⃣Обновление параметра
Обновите параметр, двигаясь в направлении, противоположном градиенту:
\theta := \theta - \eta \nabla_{\theta} J(\theta)
где \( \eta \) — это скорость обучения, которая определяет размер шага.

4⃣Повторение
Повторяйте шаги 2 и 3, пока не будет достигнут критерий остановки (например, когда изменение \( \theta \) становится незначительным или количество итераций превышает предел).

🚩Важные аспекты

🟠Скорость обучения \( \eta \)
Если скорость обучения слишком велика, может произойти "перепрыгивание" минимума, если слишком мала — процесс обучения будет очень медленным.

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

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

import numpy as np

def gradient_descent(x, y, lr=0.01, epochs=1000):
m, b = 0, 0 # начальные параметры
n = len(y) # количество данных
for _ in range(epochs):
f = y - (m*x + b) # функция потерь
# Градиенты по m и b
dm = -2 * np.sum(x * f) / n
db = -2 * np.sum(f) / n
# Обновление параметров
m -= lr

* dm
b -= lr * db
return m, b

# Пример данных
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

m, b = gradient_descent(x, y, lr=0.01, epochs=1000)
print(f"Наклон m: {m}, Пересечение b: {b}")


Ставь 👍 и забирай 📚 Базу знаний
Post #2607 356
🤔 За что мэп штрафует больше: за перепрогноз или недопрогноз?

MAP (Mean Average Precision) больше штрафует за недопрогноз (упущенные релевантные элементы), так как метрика ориентирована на точность в верхней части ранжированного списка.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
  • 🔥 2
Post #2606 417
🤔 Как можно классифицировать бинарные картинки фигур?

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

🟠Предобработка данных
Первый шаг включает подготовку данных для обучения модели.
🟠Нормализация и масштабирование
Нормализация: Преобразование значений пикселей в диапазон [0, 1].
Масштабирование: Преобразование изображений к единому размеру для обеспечения согласованности данных.
🟠Аугментация данных
Ротация, масштабирование, сдвиг: Создание дополнительных данных для улучшения обобщающей способности модели.

Пример кода на Python (используя OpenCV и NumPy):
import cv2
import numpy as np

def preprocess_image(image):
# Масштабирование изображения до размера 28x28
image_resized = cv2.resize(image, (28, 28))
# Нормализация значений пикселей
image_normalized = image_resized / 255.0
return image_normalized

def augment_image(image):
# Ротация изображения на случайный угол
angle = np.random.randint(-30, 30)
M = cv2.getRotationMatrix2D((14, 14), angle, 1.0)
augmented_image = cv2.warpAffine(image, M, (28, 28))
return augmented_image


🟠Оценка и улучшение модели
Метрики оценки: Точность (accuracy), точность (precision), полнота (recall), F1-score.
Кросс-валидация: Для оценки обобщающей способности модели.

Ставь 👍 и забирай 📚 Базу знаний
Post #2605 368
🤔 Как делается прунинг деревьев?

1. Pre-pruning: остановка роста дерева по заранее заданным критериям (глубина, минимальный размер листа).
2. Post-pruning: удаление "слабых" ветвей после построения дерева для улучшения обобщения.
3. Метрики, такие как ошибка на валидационной выборке, помогают оценить, какие ветви обрезать.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Post #2604 373
🤔 Как работает dropout?

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

🚩Механизм работы

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

🟠Во время тестирования:
На этапе предсказания (тестирования) dropout не применяется. Для компенсации эффекта, вызванного отключением нейронов на этапе обучения, все веса сети масштабируются в соответствии с вероятностью dropout
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# Загрузка данных
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape((X_train.shape[0], 28 * 28)).astype('float32') / 255
X_test = X_test.reshape((X_test.shape[0], 28 * 28)).astype('float32') / 255

y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# Создание модели
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(28 * 28,)))
model.add(Dropout(0.5)) # Dropout с вероятностью 0.5
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

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

# Обучение модели
model.fit(X_train, y_train, epochs=20, batch_size=128, validation_data=(X_test, y_test))

# Оценка модели
score = model.evaluate(X_test, y_test)
print(f'Точность на тестовых данных: {score[1] * 100:.2f}%')


🚩Зачем нужен

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

Ставь 👍 и забирай 📚 Базу знаний
Post #2602 309
🤔 Расскажи о структуре словаря в Python?

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

🚩Характеристики

🟠Ключи уникальны
В словаре каждый ключ должен быть уникальным. Если добавить пару с существующим ключом, значение этого ключа будет перезаписано.
🟠Ключи неизменяемы
Ключи должны быть хэшируемыми, то есть они должны иметь неизменяемый тип данных (например, строки, числа, кортежи).
🟠Значения могут быть любыми:
Значения в словаре могут быть любого типа данных и не обязательно уникальны.

1⃣Создание словаря
# Пустой словарь
my_dict = {}

# Словарь с начальными значениями
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}


2⃣Добавление и изменение элементов
# Добавление нового ключа-значения
my_dict['email'] = 'alice@example.com'

# Изменение существующего значения
my_dict['age'] = 26


3⃣Доступ к значениям
# Доступ к значению по ключу
name = my_dict['name'] # 'Alice'

# Метод get() для доступа с предоставлением значения по умолчанию
age = my_dict.get('age', 0) # 26
phone = my_dict.get('phone', 'Not Provided') # 'Not Provided'


4⃣Удаление элементов
# Удаление элемента по ключу
del my_dict['email']

# Метод pop() возвращает значение и удаляет элемент
city = my_dict.pop('city', 'Not Found') # 'New York'


5⃣Перебор элементов словаря
# Перебор ключей
for key in my_dict:
print(key)

# Перебор значений
for value in my_dict.values():
print(value)

# Перебор пар ключ-значение
for key, value in my_dict.items():
print(f'{key}: {value}')


🚩Основные методы

`keys()`

Возвращает все ключи словаря.
`values()`
Возвращает все значения словаря.
`items()`
Возвращает все пары "ключ-значение".
`update(other_dict)`
Обновляет словарь, добавляя пары "ключ-значение" из другого словаря.
`clear()`
Удаляет все элементы из словаря.

🚩Пример использования

# Создание словаря с информацией о студенте
student = {
'name': 'John',
'age': 22,
'courses': ['Math', 'CompSci']
}

# Добавление нового ключа-значения
student['phone'] = '555-5555'

# Изменение значения по ключу
student['name'] = 'John Doe'

# Доступ к значению по ключу
print(student['name']) # 'John Doe'

# Удаление элемента
del student['age']

# Перебор элементов словаря
for key, value in student.items():
print(f'{key}: {value}')


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 2
Post #2600 379
🤔 Какие знаешь рекомендательные модели?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Post #2598 435
🤔 В каких моделях используются несимметрические метрики ?

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

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

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

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

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

Ставь 👍 и забирай 📚 Базу знаний
Post #2593 416
🤔 Какие известны рекомендательные модели?

Content-Based Filtering, Collaborative Filtering, и Hybrid модели. Выбор зависит от задачи и данных.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
  • 👍 1
Post #2592 448
🤔 Как работает where?

Ключевое слово WHERE в SQL используется для фильтрации записей в запросах. Оно позволяет ограничивать результаты запроса только теми строками, которые удовлетворяют определенным условиям. Ключевое слово WHERE может применяться в операторах SELECT, UPDATE, DELETE, а также в других контекстах.

🚩Принципы

🟠Фильтрация строк
WHERE задает условие, которое проверяется для каждой строки в таблице. Только те строки, которые удовлетворяют условию, включаются в результирующий набор данных.

🟠Операторы и выражения
Условия в WHERE могут содержать различные операторы, такие как сравнения (=, <>, >, <, >=, <=), логические операторы (AND, OR, NOT), а также функции и другие выражения.

🟠Работа с NULL
Для проверки на NULL используется оператор IS NULL или IS NOT NULL.

🚩Примеры использования `WHERE`

SELECT с условием
SELECT * FROM employees
WHERE salary > 50000;


UPDATE с условием
UPDATE employees
SET salary = salary * 1.10
WHERE department = 'Sales';


DELETE с условием
DELETE FROM employees
WHERE hire_date < '2020-01-01';


Использование AND и OR
SELECT * FROM employees
WHERE department = 'IT' AND salary > 60000;


Этот запрос выбирает всех сотрудников из отдела IT с зарплатой более 60,000.
SELECT * FROM employees
WHERE department = 'IT' OR department = 'HR';


Проверка на NULL
SELECT * FROM employees
WHERE manager_id IS NULL;


🚩Пример использования в Python с библиотекой sqlite3

import sqlite3

# Создание соединения с базой данных SQLite
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Создание таблицы
cursor.execute('''
CREATE TABLE IF NOT EXISTS employees (
id INTEGER PRIMARY KEY,
name TEXT,
department TEXT,
salary REAL,
hire_date TEXT
)
''')

# Вставка данных
cursor.execute('''
INSERT INTO employees (name, department, salary, hire_date)
VALUES ('John Doe', 'IT', 75000, '2021-05-01')
''')

cursor.execute('''
INSERT INTO employees (name, department, salary, hire_date)
VALUES ('Jane Smith', 'HR', 50000, '2019-03-15')
''')

conn.commit()

# Запрос данных с использованием WHERE
cursor.execute('''
SELECT * FROM employees WHERE salary > 60000
''')

# Получение и вывод результатов
rows = cursor.fetchall()
for row in rows:
print(row)

# Закрытие соединения
conn.close()


Ставь 👍 и забирай 📚 Базу знаний
Post #2591 379
🤔 Что такое mode?

Это статистическая мера центральной тенденции, представляющая собой значение, которое встречается в наборе данных чаще всего. В отличие от среднего значения (mean) и медианы (median), мода не обязательно должна быть уникальной: в одном наборе данных может быть несколько мод или не быть ни одной (если все значения встречаются одинаково часто).

🚩Характеристики

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

🚩Примеры

🟠Набор данных с одной модой
Набор данных: [1, 2, 2, 3, 4] 2 (появляется чаще всего)
🟠Набор данных с двумя модами (бимодальный)
Набор данных: [1, 2, 2, 3, 3, 4] 2 и 3 (оба значения появляются одинаково часто и чаще остальных)
🟠Набор данных без моды
Набор данных: [1, 2, 3, 4] отсутствует (все значения появляются с одинаковой частотой)

🚩Применение моды

🟠Бизнес и маркетинг
Определение самых популярных продуктов, услуг или предпочтений клиентов.
🟠Медицина
Анализ наиболее частых симптомов или заболеваний в определённой группе пациентов.
🟠Социология
Выявление наиболее распространенных ответов на опросы или анкеты.

Моды на Python
from scipy import stats

# Пример с одной модой
data_single_mode = [1, 2, 2, 3, 4]
mode_single = stats.mode(data_single_mode)
print(f"Мода для набора с одной модой: {mode_single.mode[0]} (появляется {mode_single.count[0]} раз)")

# Пример с двумя модами
data_bimodal = [1, 2, 2, 3, 3, 4]
mode_bimodal = stats.mode(data_bimodal)
print(f"Моды для набора с двумя модами: {mode_bimodal.mode} (каждая появляется по {mode_bimodal.count[0]} раз)")


Для категориальных данных на Python
from collections import Counter

# Категориальные данные
data_categorical = ['red', 'blue', 'blue', 'green', 'red', 'red']
counter = Counter(data_categorical)
mode_categorical = counter.most_common(1)[0] # most_common(1) возвращает список с одной парой (элемент, частота)
print(f"Мода для категориальных данных: {mode_categorical[0]} (появляется {mode_categorical[1]} раз)")


Ставь 👍 и забирай 📚 Базу знаний
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →