- •Ссылки на лекции
- •Лабораторная работа № 2. Приложение линейной структуры
- •Лабораторная работа № 3. Техника проведения процесса отладки
- •Лабораторная работа № 4. Работа с массивами.
- •Лабораторная работа № 5. Исследование основных операций python
- •Лабораторная работа № 6. Изучение программ с ветвлением и циклами
- •Лабораторная работа № 7. Изучение программ с ветвлением.
- •Лабораторная работа № 8. Изучение проверки типов данных.
- •Лабораторная работа № 9. Алгоритмы с массивами и функциями.
- •Лабораторная работа № 10. Классы
- •Лабораторная работа № 11. Классы. Свойства и наследие.
- •Лабораторная работа № 12. Основные принципы Numpy
- •Лабораторная работа № 13. Решение задач с numpy
- •Лабораторная работа № 14. Линейные уравнения
- •Лабораторная работа № 15. Загрузка и подготовка данных
- •Лабораторная работа № 16. Линейная регрессия
- •Лабораторная работа № 17. Линейная регрессия нескольких параметров
- •Лабораторная работа № 18. Оптимизация минимизации
- •Лабораторная работа № 19. Полиномиальная регрессия
- •Лабораторная работа № 20. Логистическая регрессия
Лабораторная работа № 16. Линейная регрессия
Цель работы: Научиться выполнять линейную регрессию одного параметра
Дан набор данных о параметрах школьников разных школ:
https://drive.google.com/file/d/1WERCKESDexS7j50cpV4oLyWpJNuS5Lbd/view?usp=sharing
(набор данных взят из ресурса kaggle URL:https://www.kaggle.com/datasets/dipam7/student-grade-prediction?resource=download)
Данные представляют собой таблицу, в которой каждый столбец, кроме последних трёх, соответствует одному из параметров школьника, последние три обозначают результат экзаменов (первый, второй и финальный), каждая строка в таблице -- школьник.
В представленном файле каждая строка -- это строка таблицы, внутри строки столбцы разделены запятыми.
Параметры:
1. ОбрМ -- образование матери
2. ОбрП -- образование отца
3. времПоездки -- время поездки до школы (1 -15 мин, 4 - более часа)
4. времУчёбы -- время, посвящённое учёбе (1-мало, 4- много)
5. отнсем -- качество отношений в семье
6. свобвр -- свободное время после школы
7. друзвр -- время, проведённое с друзьями
8. ралк -- количество алкоголя в рабочие дни
9. валк -- количество алкоголя в выходные дни
10. здоровье -- здоровье школьника
11. пропуски -- количество пропусков
Задача. Создать скрипт, выполняющий линейную регрессию по одному из параметров и определяющий предполагаемую оценку на экзамене в зависимости от параметра.
Номер параметра: (100i + j) % 11 + 1, номер экзамена: (100i + j) % 3+ 1
Найти:
1. Построить график зависимости результата экзамена от параметра (исходные данные)
2. Создать функцию, которая рассчитывает гипотезу h(x, theta), где x -- матрица параметров, theta -- вектор коэффициентов.
3. Создать функцию, которая рассчитывает функцию стоимости J(x, y, theta)
4. Создать функции, рассчитывающие производные функции стоимости J_proizv1(x, y, theta) и J_proizv2(x, y, theta)
5. Найти минимум функции стоимости с помощью метода градиентного спуска theta_res:J(x,theta->min)
а. Создать массивы, на каждом шаге градиентного спуска записывающие функцию стоимости и значения theta
б. Построить зависимости функции стоимости и параметров theta от номера итерации алгоритма.
6. Построить зависимость найденной гипотезы h(x, theta=theta_res). Зависимость должна быть на том же графике, что и исходные данные.
Примечание:
При выполнении операций над матрицами важно, чтобы матрицы были одного размера. Размеры двумерной матрицы (N,1) и одномерной (N) являются для numpy разными.
Одномерный массив можно преобразовать в двумерный командой shape:
x = np.array([1,2,3,4])
x.shape = (N,1)
При взятии среза столбца для получения двумерного массива нужно брать срез через ‘:’ даже если столбец 1:
x_col = x(:,i:i+1) # i-тый столбец как матрица (N,1)
x_col = x(:,i) # i-тый столбец как одномерный массив (N)
Лабораторная работа № 17. Линейная регрессия нескольких параметров
Цель работы: Научиться выполнять линейную регрессию на основе нескольких параметров.
Дан набор данных о параметрах школьников разных школ (см. предыдущую работу)
Задача. Составить скрипт, выполняющий линейную регрессию по всем параметрам школьника и определяющий предполагаемую оценку на экзамене в зависимости от параметра.
Номер экзамена: (100i + j) % 3+ 1
Найти:
1. Масштабировать параметры
2. Создать код, рассчитывающий необходимые параметры регрессии (гипотезу, функцию стоимости, её производные, ...)
3. Найти минимум функции стоимости с помощью градиентного спуска. В качестве остановки использовать условие, что функция стоимости уменьшается меньше, чем на 10^-3
4.а Построить график зависимости функции стоимости от номера итерации алгоритма
4.б Построить график зависимости коэффициентов theta от номера итерации алгоритма
5. Предсказать оценку ученика, у которого (k = 100i + j):
Образование матери по 5-бальной шкале k % 5, а отца 3k % 5,
Время поездки до школы (по 5-бальной шкале от 1): k % 4 + 1, а время учёбы в неделю: 3k % 4 + 1
Отношение в семье (по 5-бальной шкале от 1): 4k % 5 + 1
Свободное время (по 5-бальной шкале от 1): 2k % 5 + 1, а с друзьями он проводит: (5 - 3k) % 5 + 1
В будни он выпивает (по 5-бальной шкале от 1): 3k % 5 + 1, а в выходные: k % 5 + 1
Его здоровье по (5-бальной шкале от 1): 2k % 5 + 1
За семестр он пропустит (k2 / 1000) % 100 занятий (с округлением вниз)
