Решение задач по Машинному обучению на Python в Jupiter Notebook
Задача 1. Реализация собственных классов и функций
sklearn
; 2) чтобы избежать случая с вырожденной матрицей при оценке параметров добавьте незначительную регуляризацию по умолчанию или используйте lstsq
из пакета numpy
или др. способ; 3) используйте random_state=0
- Реализуйте класс, предназначенный для оценки параметров линейной регрессии с регуляризацией совместимый с
sklearn
. Передаваемые параметры: 1) коэффициент регуляризации (alpha
). Использовать метод наименьших квадратов с регуляризацией. - Реализуйте класс для стандартизации признаков в виде трансформации совместимый с
sklearn
. Передаваемые параметры: 1)has_bias
(содержит ли матрица вектор единиц), 2)apply_mean
(производить ли центровку) - Реализуйте функции для расчета
MSE
иR^2
при отложенной выборке (run_holdout
) и кросс-валидации (run_cross_val
). Для кросс-валидации используйте только классKFold
. Выходными значениями должны бытьMSE
иR^2
для обучающей и тестовой частей.
Шаблон кода:def run_holdout(model, X, y, train_size, random_state) -> dict: ... return scores def run_cross_val(model, X, y, n_splits, shuffle, random_state) -> dict: ... return scores
- Используя класс
Pipeline
, выполнить обучение линейной регрессии с предварительной стандартизацией с коэффициентом регуляризации равным0
и0.01
. Выведите значения параметров обученной модели. Выведите значенияMSE
иR^2
, полученные посредством функцийrun_holdout
иrun_cross_val
. Отобразите график предсказание ( ) - действительное значение ( ) для разных коэффициентов регуляризации для обучающего и текстового множества. Использовать следующие параметры:train_size=0.75
,n_splits=4
,shuffle=True
,random_state=0
Задача 2. Классификация и кросс-валидация
- Используйте класс логистической регрессии из
sklearn
со следующими параметрами:penalty='l2'
fit_intercept=True
max_iter=100
C=1e5
solver='liblinear'
random_state=12345
- Разбейте исходные данные на обучающее и тестовое подмножества в соотношении
70
на30
,random_state=0
- Для выбора гиперпараметров используйте два подхода: 1) с отложенной выборкой, 2) с кросс-валидацией
- Для кросс-валидации использовать функцию
cross_validate
изsklearn
- Параметры разбиения для выбора гиперпараметров используйте те, что в п.4 задачи 1
Построить:
- диаграмму разброса исходных данных
- зависимость доли правильных классификаций от степени полинома для обучающего и проверочного подмножеств (две кривые на одном графике)
- результат классификации для наилучшего случая (степень полинома) для обучающего и тестового подмножеств с указанием границы принятия решения
Задача 3. Классификация текстовых документов
файл: data/reviews.tsv
- Загрузите исходные данные
- Разбейте исходные данные на обучающее (train, 80%) и тестовое подмножества (test, 20%)
- Используя стратифицированную кросс-валидацию k-folds (
) для обучающего множество с метрикойBalanced-Accuracy
, найдите лучшие гиперпараметры для следующих классификаторов:- K-ближайших соседей: количество соседей (
) из диапазонаnp.arange(1, 150, 20)
- Логистическая регрессия: параметр регуляризации (
) из диапазонаnp.logspace(-2, 10, 8, base=10)
- Наивный Байес: сглаживающий параметр модели Бернулли (
) из диапазонаnp.logspace(-4, 1, 8, base=10)
- Наивный Байес: сглаживающий параметр полиномиальной модели (
) из диапазонаnp.logspace(-4, 1, 8, base=10)
- K-ближайших соседей: количество соседей (
- Отобразите кривые (параметры модели)-(
Balanced-Accuracy
) при обучении и проверке для каждой классификатора (две кривые на одном графике для каждого классификатора) - Если необходимо, выбранные модели обучите на всём обучающем подмножестве (train) и протестируйте на тестовом (test) по
Balanced-Accuracy
,R
,P
,F1
. Определите время обучения и предсказания. - Выполните пункты 3-5 для
n-gram=1
,n-gram=2
иn-gram=(1,2)
- Выведите в виде таблицы итоговые данные по всем методам для лучших моделей (метод, n-gram, значение параметра модели, время обучения, время предсказания, метрики (
Balanced-Accuracy
,R
,P
,F1
)) - Сделайте выводы по полученным результатам (преимущества и недостатки методов)
- Для всех объектов/методов/моделей
random_state = 123
- Для выбора гиперпараметров можно использовать стандартные утилиты
sklearn
!!!Всё выполнить в Jupiter Notebook, пример выполнения с другими задачами прикреплен!!!