Занятие 15

--Тренажер кода

# Импортируйте IsolationForest
from sklearn.ensemble import IsolationForest

# Задайте список data
data = [
    [10, 50],
    [12, 48],
    [9, 52],
    [60, 200],  # аномалия
    [11, 51],
    [8, 49],
    [70, 1000],  # аномалия
]

# Создайте и обучите модель
model = IsolationForest(contamination=0.2, random_state=42)
model.fit(data)

# Получите предсказания
predictions = model.predict(data)  # 1 - нормальная точка, -1 - аномалия

# Выведите результаты для каждой записи в нужном формате
for record, pred in zip(data, predictions):
    status = "Аномалия" if pred == -1 else "ОК"
    print(f"Запись {record}: {status}")
	
	
--Викторина

1. Чтобы проверить модель
2. Классифицирует объекты
3. Для предсказания чисел
4. IsolationForest
5. Объединяет похожие объекты
6. Делает значения одинаковыми по масштабу
7. matplotlib
8. Нормализует признаки
9. Матрица ошибок
10. Запоминает структуру данных


Занятие 16

--Задание для самостоятельной работы 2

1. Обнаруживает сложные угрозы с помощью анализа данных
2. Классификация писем, Детекция аномалий, Кластеризация сетевых событий
3. Сбор и подготовка данных
4. Isolation Forest
5. 2


Занятие 17

--Тренажер кода

from sklearn.linear_model import LogisticRegression
import numpy as np

X = np.array([ [50], [60], [70], [80], [90], [100] ])
y = np.array([0, 0, 0, 1, 1, 1])

# Обучите модель
model = LogisticRegression()
model.fit(X, y)

# Сделайте прогноз для значения [85] и выведите результат в нужном формате
pred = model.predict(np.array([ [85] ]))[0]

if pred == 1:
    print("У пациента обнаружено заболевание")
else:
    print("У пациента нет заболевания")
	
	
--Викторина

1. Предсказывает числа
2. Для классификации
3. Средняя абсолютная ошибка
4. Насколько хорошо модель объясняет данные
5. Чтобы проверить модель
6. Матрица ошибок
7. Метрики классификации
8. Влияние признаков
9. Появятся ошибки
10. Classification report


Занятие 18

--Задание для самостоятельной работы 2

1. Числовое значение
2. Выдаёт вероятность принадлежности к классу
3. MAE, RMSE, R^2
4. LogisticRegression
5. LinearRegression

--Задание для самоконтроля/самопроверки

from sklearn.linear_model import LinearRegression

X = [ [30], [40], [50], [60], [70] ]
y = [2.5, 3.1, 3.8, 4.2, 5.0]

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

prediction = model.predict([ [65] ])
price = round(prediction[0], 1)

print(f"Предсказанная цена: {price}")


Занятие 19

--Тренажер кода

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
import numpy as np

X = np.array([ [1], [2], [3], [4], [5] ])
y = np.array([2, 4, 6, 8, 10])

model = LinearRegression()

scores = cross_val_score(model, X, y, cv=3, scoring='neg_mean_squared_error')
mse_mean = -np.mean(scores)

print("Средняя MSE по кросс-валидации:", mse_mean)


--Викторина

1. Принимает решения
2. Оценивает абсолютную ошибку
3. Долю объяснённой дисперсии
4. Алгоритм классификации
5. Долю верных ответов
6. Все ошибки модели
7. Threshold
8. Проверка на разных частях данных
9. f1
10. rmse


Занятие 20

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


Текущий контроль

1. Что является основной целью машинного обучения?
Поиск закономерностей в данных

2. Для какой задачи подходит линейная регрессия?
Предсказать числовое значение

3. Какой термин обозначает входные данные модели?
Признак

4. Что такое Accuracy?
Доля верно классифицированных

5. Какой алгоритм используют для выявления аномалий в трафике?
IsolationForest

6. Какая функция преобразует линейное выражение в вероятность для логистической регрессии?
Sigmoid

7. Какой этап обычно идёт после сбора данных?
Подготовка признаков

8. Что оценивает MAE?
Среднюю абсолютную ошибку

9. Какой тип ошибки сильнее всего штрафует большие отклонения?
MSE

10. Что такое Recall?
Доля найденных реальных положительных

11. Какое значение R² говорит о том, что модель объясняет почти всю вариацию?
1

12. Как называется процесс многократной проверки на разных частях данных?
Кросс-валидация

13. Назовите метрику, которая используется, когда важен баланс между точностью и полнотой. 
F1-score

14. Как одним словом называют ситуацию, когда модель отлично работает на обучающих, но плохо — на новых данных? 
переобучение

15. Назовите метрику, рассчитывающую среднее отклонение без учета знака ошибки.
MAE


Занятие 21

--Тренажер кода

import re

text = "<div>Пример <b>HTML</b> разметки. </div><br> Текст вне тегов."

# Удаляем все HTML-теги
clean_text = re.sub(r"<[^>]+>", "", text)

# Выводим результат
print(f"Очищенный текст: {clean_text}")

--Викторина

1. Что такое регулярное выражение?
Шаблон поиска текста

2. Что делает re.sub()?
Заменяет по шаблону

3. Какой шаблон находит email-адреса?
[a-z]+@[a-z]+.[a-z]+

4. Что делает str.contains() в pandas?
Проверяет наличие шаблона

5. Что делает \b в регулярных выражениях?
Отмечает начало или конец слова

6. Какой формат используется для поиска ссылок в тексте?
http[s]?://\S+

7. Что такое «feature engineering»?
Создание новых признаков

8. Какой признак показывает, начинается ли сообщение с "привет"?
starts_with_hello

9.  Какой символ используют для указания начала строки в регулярных выражениях?
^

10. Какой модуль в Python используется для работы с регулярными выражениями?
re


Занятие 22

--Задание для самостоятельной работы 2

1. Для чего чаще всего используются регулярные выражения в машинном обучении?
Для очистки и анализа текстов

2. Что делает шаблон d{4} в регулярных выражениях?
Ищет последовательность из четырёх цифр

3. Какие конструкции используются для генерации признаков из текста?
re.search
str.count с шаблоном

4. Что означает символ ^ в регулярных выражениях?
Начало строки

5. Что выведет следующий код?
['test@site.com']

--Задание для самоконтроля/самопроверки

from sklearn.metrics import mean_absolute_error

y_true = [3, 5, 2, 7]
y_pred = [4, 4, 3, 8]

mae = mean_absolute_error(y_true, y_pred)

print(f"MAE: {mae}")


Занятие 23

--Тренажер кода

import pandas as pd

data = {
    'amount': [120, 0, 350, 500, -20],
    'timestamp': [1680102000, 1680110000, 1680120000, 1680130000, 1680140000],
    'address': ['addr1', 'addr2', 'addr3', 'addr1', 'addr4']
}

# Создайте DataFrame
df = pd.DataFrame(data)

# Оставьте только строки с положительной суммой
df = df[df['amount'] > 0]

# Преобразуйте временные метки в datetime
df['datetime'] = pd.to_datetime(df['timestamp'], unit='s')

# Выведите первые три строки DataFrame
print(df.head(3))

--Викторина

1. Что такое DataFrame в pandas?
Таблица с данными

2. Что такое аномалия в данных?
Необычное значение

3. Зачем нормализуют данные?
Для приведения к общему масштабу

4. Что делает метод drop_duplicates() в pandas?
Удаляет дубликаты

5. Что означает unit='s' в pd.to_datetime()?
Использование секунд как единиц

6. Как можно выделить подозрительные транзакции по времени?
Вычислить короткие интервалы

7. Какой признак можно создать по частоте операций с адресом?
Активность адреса

8. Как создать категориальный признак по адресу?
С помощью map()

9. В каком формате обычно представлены метки времени в блокчейн-данных?
unix

10. Как называется способ выявления необычно больших значений на основе среднего и стандартного отклонения? 
аномалия


Занятие 24

--Задание для самостоятельной работы 2

1. Что такое предобработка данных?
Приведение данных к чистому и пригодному для анализа виду

2. Какие типичные проблемы бывают в блокчейн-данных?
Пустые строки и неверные адреса

3. Какие действия выполняются на этапе очистки данных?
Удаление дубликатов
Заполнение пропусков
Проверка формата значений

4. Зачем выполняют нормализацию суммы перевода?
Чтобы сравнивать данные между пользователями

5. Что выведет код?
[0.0, 0.5, 1.0]


Занятие 25

--Тренажер кода

from sklearn.cluster import KMeans
import numpy as np

X = np.array([
    [1, 2], [1, 4], [1, 0],
    [10, 2], [10, 4], [10, 0]
])

# Выполните кластеризацию методом k-средних
kmeans = KMeans(n_clusters=2, random_state=0)
kmeans.fit(X)

# Выведите метки кластеров в нужном формате
print(f"Метки кластеров: {kmeans.labels_}")

--Викторина

1. Что делает алгоритм KMeans?
Объединяет объекты в группы

2. Что такое центроиды в KMeans?
Средние значения групп

3. Как выбрать число кластеров в KMeans?
По результатам анализа

4. Что показывает визуализация кластеров?
Структуру данных

5. Как можно выявить аномалии с помощью кластеризации?
Анализируем малочисленные группы

6. Для чего используется PCA?
Снижение числа признаков

7. Что такое explained variance ratio?
Доля объяснённой дисперсии

8. Где можно применить PCA для анализа текстов?
Выделение тем

9. Как называется метод, который выделяет главные компоненты данных?
pca

10. Как называется процесс деления объектов на группы без учителя?
кластеризация


Занятие 26

--Задание для самостоятельной работы 2

1. Что делает обучение без учителя?
Ищет скрытые закономерности и группы без меток

2. Как работает метод k-средних?
Назначает точки ближайшему центру и пересчитывает центры

3. Когда стоит использовать кластеризацию?
Когда нужно найти скрытые группы в данных

4. Какие преимущества даёт метод PCA?
Позволяет сократить количество признаков
Делает данные визуально понятными

5. Что выведет этот код?
2

--Задание для самоконтроля/самопроверки

1. Зачем нужна предобработка данных перед обучением модели?
Для очистки, преобразования и повышения качества данных

2. Какие шаги входят в предобработку данных?
Очистка, преобразование, генерация признаков

3. Что делает метод главных компонент (PCA)?
Упрощает данные, сохраняя как можно больше информации

4. Что делает метод k-средних?
Объединяет элементы вокруг случайных центров и уточняет их

5. Что выведет код?
1.0


Занятие 27

--Тренажер кода--

from sklearn.linear_model import LinearRegression, Ridge
import numpy as np

X = np.array([ [1], [2], [3], [4], [5] ])
y = np.array([1, 2, 3, 100, 5])

# Обучите модель LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)

# Обучите модель Ridge(alpha=1.0)
ridge_reg = Ridge(alpha=1.0)
ridge_reg.fit(X, y)

# Выведите коэффициенты обеих моделей в нужном формате
print(f"Коэффициенты LinearRegression: {lin_reg.coef_.tolist()}")
print(f"Коэффициенты Ridge: {ridge_reg.coef_.tolist()}")

--Викторина--

1. Что такое переобучение модели?
Слишком точное запоминание обучающих данных

2. Какой признак указывает на переобучение?
Сильный разрыв между обучением и тестом

3. Что делает ограничение max_depth в дереве решений?
Ограничивает глубину дерева

4. Что происходит при дублировании данных в обучающей выборке?
Увеличивается переобучение

5. Что делает регуляризация Ridge?
Штрафует за большие коэффициенты

6. Что может делать регуляризация Lasso?
Обнулять коэффициенты

7. Зачем используют кросс-валидацию?
Для оценки на нескольких частях данных

8. Что отличает случайный лес от одного дерева?
Усреднение предсказаний

9. Как называется параметр в Ridge и Lasso, который управляет силой регуляризации?
alpha

10. Какой метод оценки делит данные один раз на обучение и тест?
holdout


Занятие 28

--Задание для самостоятельной работы 2--

1. Что такое переобучение?
Когда модель запоминает обучающие данные, включая шум

2. Какие признаки указывают на переобучение?
Сильный разрыв между train и test accuracy

3. Какие способы помогают бороться с переобучением?
Регуляризация 
Кросс-валидация

4. Что делает регуляризация?
Ограничивает свободу модели и снижает веса

5.  Что выведет этот код?
1.0