- •Ссылки на лекции
- •Лабораторная работа № 2. Приложение линейной структуры
- •Лабораторная работа № 3. Техника проведения процесса отладки
- •Лабораторная работа № 4. Работа с массивами.
- •Лабораторная работа № 5. Исследование основных операций python
- •Лабораторная работа № 6. Изучение программ с ветвлением и циклами
- •Лабораторная работа № 7. Изучение программ с ветвлением.
- •Лабораторная работа № 8. Изучение проверки типов данных.
- •Лабораторная работа № 9. Алгоритмы с массивами и функциями.
- •Лабораторная работа № 10. Классы
- •Лабораторная работа № 11. Классы. Свойства и наследие.
- •Лабораторная работа № 12. Основные принципы Numpy
- •Лабораторная работа № 13. Решение задач с numpy
- •Лабораторная работа № 14. Линейные уравнения
- •Лабораторная работа № 15. Загрузка и подготовка данных
- •Лабораторная работа № 16. Линейная регрессия
- •Лабораторная работа № 17. Линейная регрессия нескольких параметров
- •Лабораторная работа № 18. Оптимизация минимизации
- •Лабораторная работа № 19. Полиномиальная регрессия
- •Лабораторная работа № 20. Логистическая регрессия
Лабораторная работа № 14. Линейные уравнения
Цель работы: научиться составлять и решать системы линейных уравнений в numpy
Даны точки на плоскости: (j, j), (j + i, j + 2i), (j + 2i, j - 2i), (j + 3i, 2j - i2), (j + 4i, 2j + i), (j + 5i, 2j - i / 2)
Найти:
1. Многочлен минимальной степень (y = a0 + a1 x + a2 x2 + ...), проходящий через все точки.
1а. Определить порядок многочлена (зависит от количества точек)
1б. Написать многочлен в общем виде
1в. Подставить каждую точку в формулу многочлена, составить систему уравнений.
1г. Представить систему уравнений в матричном виде, решить с помощью numpy
Система уравнений вида:
Ax = b
где A -- матрица коэффициентов, b -- матрица результатов, x - матрица неизвестных
решается с помощью функции:
x = np.linalg.solve(A, b)
2. Записать формулу получившегося многочлена, построить график, сделать выводы.
Примечание:
В данной задаче неизвестными являются коэффициенты многочлена, а координаты точек (x и y) известны изначально.
Для составления системы уравнений удобно представить точки в виде двух одномерных матриц:
И находить различные степени x, возводя первую матрицу в степень поэлементно.
Важно. Чтобы не возникало переполнения массивов при возведении в большую степень, следует значения точек представить в виде float (например не 60, а 60.0)
Для составления матрицы коэффициентов системы уравнений можно создать пустую матрицу нужного размера и вставлять в неё нужные элементы:
A = np.empty((n,n))
A[:,0]=x
A[:,1]=x_v_kvadrate
Для построения графика с помощью библиотеки matplotlib.pyplot можно использовать функции:
pyplot.plot(x,y) – линия, pyplot.scatter(x,y) – только точки на графике
Лабораторная работа № 15. Загрузка и подготовка данных
Дан набор данных о составе и качестве вина:
https://drive.google.com/file/d/15LxhtTT-AfAU6Vjqo63F_3VaPyXcJfmS/view?usp=sharing
(набор данных взят из ресурса kaggle URL:https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009?resource=download)
Данные представляют собой таблицу, в которой каждый столбец, кроме последнего, соответствует одному из параметров вина, последний столбец обозначает качество (1-10), каждая строка в таблице -- образец вина.
В представленном файле каждая строка -- это строка таблицы, внутри строки столбцы разделены запятыми.
Задача. Создать скрипт, загружающий данные и представляющие их в виде, удобном для машинного обучения.
1. Открыть файл и представить в виде списка, каждый элемент которого -- это список параметров одного образца)
2. Создать из полученных данных массив numpy
3. Разделить (например с помощью срезов) на отдельные массивы numpy для параметров вина (кроме последнего столбца) и результатов (последний столбец)
3. Вывести данные для первых 5 образцов.
Примечание: 1 строка таблицы -- это заголовки
Полезные функции:
Конструкция with вместе с функцией open(filename) позволяет открыть файл (filename – путь к файлу) и автоматически закрывает, когда отступ пропадает:
with open(filename) as f:
Действия с файлом f
Функция file.readlines() позволяет создать список строк файла:
lines = f.readlines()
Функция str.split(sep) позволяет разделить строку на список строк, по разделителю, где sep -- разделитель:
str = "ab.cd.ef"
l_str = str.split('.') # l_str: ["ab", "cd", "ef"]
Функция map(func, list) позволяет применить функцию func к каждому элементу списка list.
Важно: сама функция лишь создаёт намерение сделать такую операцию, чтобы получить сам список, надо преобразовать результат функции в список:
l_str = ["12", "13", "15"]
map_str_fl = map(float, l_str) # map_str_fl: Объект map
t_fl = tuple(map_str_fl) # t_fl: (12.0, 13.0, 15.0)
