diff --git a/Lesson_4/DZ_Lesson_4.ipynb b/Lesson_4/DZ_Lesson_4.ipynb new file mode 100644 index 0000000..6835c3e --- /dev/null +++ b/Lesson_4/DZ_Lesson_4.ipynb @@ -0,0 +1,8572 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "04a63304", + "metadata": {}, + "source": [ + "Тема “Визуализация данных в Matplotlib”\n", + "\n", + "Задание 1\n", + "\n", + "Загрузите модуль pyplot библиотеки matplotlib с псевдонимом plt, а также библиотеку numpy с псевдонимом np.\n", + "Примените магическую функцию %matplotlib inline для отображения графиков в Jupyter Notebook и настройки конфигурации ноутбука со значением 'svg' для более четкого отображения графиков.\n", + "Создайте список под названием x с числами 1, 2, 3, 4, 5, 6, 7 и список y с числами 3.5, 3.8, 4.2, 4.5, 5, 5.5, 7.\n", + "С помощью функции plot постройте график, соединяющий линиями точки с горизонтальными координатами из списка x и вертикальными - из списка y.\n", + "Затем в следующей ячейке постройте диаграмму рассеяния (другие названия - диаграмма разброса, scatter plot).\n", + "\n", + "Задание 2\n", + "\n", + "С помощью функции linspace из библиотеки Numpy создайте массив t из 51 числа от 0 до 10 включительно.\n", + "Создайте массив Numpy под названием f, содержащий косинусы элементов массива t.\n", + "Постройте линейную диаграмму, используя массив t для координат по горизонтали,а массив f - для координат по вертикали. Линия графика должна быть зеленого цвета.\n", + "Выведите название диаграммы - 'График f(t)'. Также добавьте названия для горизонтальной оси - 'Значения t' и для вертикальной - 'Значения f'.\n", + "Ограничьте график по оси x значениями 0.5 и 9.5, а по оси y - значениями -2.5 и 2.5.\n", + "\n", + "*Задание 3\n", + "\n", + "С помощью функции linspace библиотеки Numpy создайте массив x из 51 числа от -3 до 3 включительно.\n", + "Создайте массивы y1, y2, y3, y4 по следующим формулам: \n", + "y1 = x**2 \n", + "y2 = 2 * x + 0.5 \n", + "y3 = -3 * x - 1.5 \n", + "y4 = sin(x)\n", + "\n", + "Используя функцию subplots модуля matplotlib.pyplot, создайте объект matplotlib.figure.Figure с названием fig и массив объектов Axes под названием ax,причем так, чтобы у вас было 4 отдельных графика в сетке, состоящей из двух строк и двух столбцов. В каждом графике массив x используется для координат по горизонтали.В левом верхнем графике для координат по вертикали используйте y1,в правом верхнем - y2, в левом нижнем - y3, в правом нижнем - y4.Дайте название графикам: 'График y1', 'График y2' и т.д.\n", + "Для графика в левом верхнем углу установите границы по оси x от -5 до 5. Установите размеры фигуры 8 дюймов по горизонтали и 6 дюймов по вертикали. Вертикальные и горизонтальные зазоры между графиками должны составлять 0.3.\n", + "\n", + "*Задание 4\n", + "\n", + "В этом задании мы будем работать с датасетом, в котором приведены данные по мошенничеству с кредитными данными: Credit Card Fraud Detection (информация об авторах: Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnson and Gianluca Bontempi. Calibrating Probability with Undersampling for Unbalanced Classification. In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015).\n", + "Ознакомьтесь с описанием и скачайте датасет creditcard.csv с сайта Kaggle.com по ссылке:\n", + "Credit Card Fraud Detection\n", + "Данный датасет является примером несбалансированных данных, так как мошеннические операции с картами встречаются реже обычных.\n", + "-Импортируйте библиотеку Pandas, а также используйте для графиков стиль “fivethirtyeight”.\n", + "-Посчитайте с помощью метода value_counts количество наблюдений для каждого значения целевой переменной Class и примените к полученным данным метод plot, чтобы построить столбчатую диаграмму. Затем постройте такую же диаграмму, используя логарифмический масштаб.\n", + "-На следующем графике постройте две гистограммы по значениям признака V1 - одну для мошеннических транзакций (Class равен 1) и другую - для обычных (Class равен 0). Подберите значение аргумента density так, чтобы по вертикали графика было расположено не число наблюдений, а плотность распределения. Число бинов должно равняться 20 для обеих гистограмм, а коэффициент alpha сделайте равным 0.5, чтобы гистограммы были полупрозрачными и не загораживали друг друга. Создайте легенду с двумя значениями: “Class 0” и “Class 1”. Гистограмма обычных транзакций должна быть серого цвета, а мошеннических - красного. Горизонтальной оси дайте название “V1”.\n", + "\n", + "**Задание на повторение материала\n", + "\n", + "1. Создать одномерный массив Numpy под названием a из 12 последовательных целых чисел чисел от 12 до 24 невключительно\n", + "2. Создать 5 двумерных массивов разной формы из массива a. Не использовать в аргументах метода reshape число -1.\n", + "3. Создать 5 двумерных массивов разной формы из массива a. Использовать в аргументах метода reshape число -1 (в трех примерах - для обозначения числа столбцов, в двух - для строк).\n", + "4. Можно ли массив Numpy, состоящий из одного столбца и 12 строк, назвать одномерным?\n", + "5. Создать массив из 3 строк и 4 столбцов, состоящий из случайных чисел с плавающей запятой из нормального распределения со средним, равным 0 и среднеквадратичным отклонением, равным 1.0. Получить из этого массива одномерный массив с таким же атрибутом size, как и исходный массив.\n", + "6. Создать массив a, состоящий из целых чисел, убывающих от 20 до 0 невключительно с интервалом 2.\n", + "7. Создать массив b, состоящий из 1 строки и 10 столбцов: целых чисел, убывающих от 20 до 1 невключительно с интервалом 2. В чем разница между массивами a и b?\n", + "8. Вертикально соединить массивы a и b. a - двумерный массив из нулей, число строк которого больше 1 и на 1 меньше, чем число строк двумерного массива b, состоящего из единиц. Итоговый массив v должен иметь атрибут size, равный 10.\n", + "9. Создать одномерный массив а, состоящий из последовательности целых чисел от 0 до 12. Поменять форму этого массива, чтобы получилась матрица A (двумерный массив Numpy), состоящая из 4 строк и 3 столбцов. Получить матрицу At путем транспонирования матрицы A. Получить матрицу B, умножив матрицу A на матрицу At с помощью матричного умножения. Какой размер имеет матрица B? Получится ли вычислить обратную матрицу для матрицы B и почему?\n", + "10. Инициализируйте генератор случайных числе с помощью объекта seed, равного 42.\n", + "11. Создайте одномерный массив c, составленный из последовательности 16-ти случайных равномерно распределенных целых чисел от 0 до 16 невключительно.\n", + "12. Поменяйте его форму так, чтобы получилась квадратная матрица C. Получите матрицу D, поэлементно прибавив матрицу B из предыдущего вопроса к матрице C, умноженной на 10. Вычислите определитель, ранг и обратную матрицу D_inv для D.\n", + "13. Приравняйте к нулю отрицательные числа в матрице D_inv, а положительные - к единице. Убедитесь, что в матрице D_inv остались только нули и единицы. С помощью функции numpy.where, используя матрицу D_inv в качестве маски, а матрицы B и C - в качестве источников данных, получите матрицу E размером 4x4. Элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 1, должны быть равны соответствующему элементу матрицы B, а элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 0, должны быть равны соответствующему элементу матрицы C." + ] + }, + { + "cell_type": "markdown", + "id": "35819f97", + "metadata": {}, + "source": [ + "### DZ\n", + "\n", + "Задание 1\n", + "\n", + "-Загрузите модуль pyplot библиотеки matplotlib с псевдонимом plt, а также библиотеку numpy с псевдонимом np.\n", + "-Примените магическую функцию %matplotlib inline для отображения графиков в Jupyter Notebook и настройки конфигурации ноутбука со значением 'svg' для более четкого отображения графиков.\n", + "-Создайте список под названием x с числами 1, 2, 3, 4, 5, 6, 7 и список y с числами 3.5, 3.8, 4.2, 4.5, 5, 5.5, 7.\n", + "-С помощью функции plot постройте график, соединяющий линиями точки с горизонтальными координатами из списка x и вертикальными - из списка y.\n", + "-Затем в следующей ячейке постройте диаграмму рассеяния (другие названия - диаграмма разброса, scatter plot)." + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "id": "69befbfd", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "id": "afea1c22", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'svg'" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "id": "5915b04a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([1, 2, 3, 4, 5, 6, 7], [3.5, 3.8, 4.2, 4.5, 5, 5.5, 7.0])" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = [1, 2, 3, 4, 5, 6, 7]\n", + "y = [3.5, 3.8, 4.2, 4.5, 5, 5.5, 7.]\n", + "x,y" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "id": "9640259c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:57:23.781195\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x,y)" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "id": "67caf46b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:57:25.918722\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x,y)" + ] + }, + { + "cell_type": "markdown", + "id": "a351527f", + "metadata": {}, + "source": [ + "Задание 2\n", + "\n", + "-С помощью функции linspace из библиотеки Numpy создайте массив t из 51 числа от 0 до 10 включительно.\n", + "-Создайте массив Numpy под названием f, содержащий косинусы элементов массива t.\n", + "-Постройте линейную диаграмму, используя массив t для координат по горизонтали,а массив f - для координат по вертикали.\n", + "-Линия графика должна быть зеленого цвета.\n", + "-Выведите название диаграммы - 'График f(t)'. \n", + "-Также добавьте названия для горизонтальной оси - 'Значения t' и для вертикальной - 'Значения f'.\n", + "-Ограничьте график по оси x значениями 0.5 и 9.5, а по оси y - значениями -2.5 и 2.5." + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "id": "9eb5ddda", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ,\n", + " 2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2,\n", + " 4.4, 4.6, 4.8, 5. , 5.2, 5.4, 5.6, 5.8, 6. , 6.2, 6.4,\n", + " 6.6, 6.8, 7. , 7.2, 7.4, 7.6, 7.8, 8. , 8.2, 8.4, 8.6,\n", + " 8.8, 9. , 9.2, 9.4, 9.6, 9.8, 10. ])" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = np.linspace(0,10,51)\n", + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "id": "42e8bab9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1. , 0.98006658, 0.92106099, 0.82533561, 0.69670671,\n", + " 0.54030231, 0.36235775, 0.16996714, -0.02919952, -0.22720209,\n", + " -0.41614684, -0.58850112, -0.73739372, -0.85688875, -0.94222234,\n", + " -0.9899925 , -0.99829478, -0.96679819, -0.89675842, -0.79096771,\n", + " -0.65364362, -0.49026082, -0.30733287, -0.11215253, 0.08749898,\n", + " 0.28366219, 0.46851667, 0.63469288, 0.77556588, 0.88551952,\n", + " 0.96017029, 0.9965421 , 0.99318492, 0.95023259, 0.86939749,\n", + " 0.75390225, 0.60835131, 0.43854733, 0.25125984, 0.05395542,\n", + " -0.14550003, -0.33915486, -0.51928865, -0.67872005, -0.81109301,\n", + " -0.91113026, -0.97484362, -0.99969304, -0.98468786, -0.93042627,\n", + " -0.83907153])" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f = np.cos(t)\n", + "f" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "id": "6b340663", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:57:32.898089\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(t,f,color='green')" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "id": "09ac57ac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'График f(t)')" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:57:34.825475\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.title('График f(t)')" + ] + }, + { + "cell_type": "markdown", + "id": "4fb4d3f1", + "metadata": {}, + "source": [ + "так не получилось ))" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "id": "78b3c4db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.5, 9.5, -2.5, 2.5)" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:57:38.723431\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x,y)\n", + "plt.plot(t,f,color='green')\n", + "plt.title('График f(t)')\n", + "plt.xlabel('Значения t')\n", + "plt.ylabel('Значения f')\n", + "plt.axis([0.5,9.5,-2.5,2.5])" + ] + }, + { + "cell_type": "markdown", + "id": "80e5319e", + "metadata": {}, + "source": [ + "*Задание 3\n", + "\n", + "-С помощью функции linspace библиотеки Numpy создайте массив x из 51 числа от -3 до 3 включительно.\n", + "-Создайте массивы y1, y2, y3, y4 по следующим формулам:\n", + "\n", + "y1 = x**2\n", + "y2 = 2 * x + 0.5\n", + "y3 = -3 * x - 1.5\n", + "y4 = sin(x)\n", + "\n", + "-Используя функцию subplots модуля matplotlib.pyplot, создайте объект matplotlib.figure. Figure с названием fig и массив объектов Axes под названием ax,причем так, чтобы у вас было 4 отдельных графика в сетке, состоящей из двух строк и двух столбцов.\n", + "В каждом графике массив x используется для координат по горизонтали.В левом верхнем графике для координат по вертикали используйте y1,в правом верхнем - y2, в левом нижнем - y3, в правом нижнем - y4.\n", + "Дайте название графикам: 'График y1', 'График y2' и т.д.\n", + "Для графика в левом верхнем углу установите границы по оси x от -5 до 5.\n", + "Установите размеры фигуры 8 дюймов по горизонтали и 6 дюймов по вертикали.\n", + "Вертикальные и горизонтальные зазоры между графиками должны составлять 0.3." + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "id": "7320c5ea", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-3. , -2.88, -2.76, -2.64, -2.52, -2.4 , -2.28, -2.16, -2.04,\n", + " -1.92, -1.8 , -1.68, -1.56, -1.44, -1.32, -1.2 , -1.08, -0.96,\n", + " -0.84, -0.72, -0.6 , -0.48, -0.36, -0.24, -0.12, 0. , 0.12,\n", + " 0.24, 0.36, 0.48, 0.6 , 0.72, 0.84, 0.96, 1.08, 1.2 ,\n", + " 1.32, 1.44, 1.56, 1.68, 1.8 , 1.92, 2.04, 2.16, 2.28,\n", + " 2.4 , 2.52, 2.64, 2.76, 2.88, 3. ])" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = np.linspace(-3,3,51)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "id": "2f48fb75", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([9. , 8.2944, 7.6176, 6.9696, 6.3504, 5.76 , 5.1984, 4.6656,\n", + " 4.1616, 3.6864, 3.24 , 2.8224, 2.4336, 2.0736, 1.7424, 1.44 ,\n", + " 1.1664, 0.9216, 0.7056, 0.5184, 0.36 , 0.2304, 0.1296, 0.0576,\n", + " 0.0144, 0. , 0.0144, 0.0576, 0.1296, 0.2304, 0.36 , 0.5184,\n", + " 0.7056, 0.9216, 1.1664, 1.44 , 1.7424, 2.0736, 2.4336, 2.8224,\n", + " 3.24 , 3.6864, 4.1616, 4.6656, 5.1984, 5.76 , 6.3504, 6.9696,\n", + " 7.6176, 8.2944, 9. ])" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y1 = (x**2)\n", + "y1" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "id": "99c06b51", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-5.5 , -5.26, -5.02, -4.78, -4.54, -4.3 , -4.06, -3.82, -3.58,\n", + " -3.34, -3.1 , -2.86, -2.62, -2.38, -2.14, -1.9 , -1.66, -1.42,\n", + " -1.18, -0.94, -0.7 , -0.46, -0.22, 0.02, 0.26, 0.5 , 0.74,\n", + " 0.98, 1.22, 1.46, 1.7 , 1.94, 2.18, 2.42, 2.66, 2.9 ,\n", + " 3.14, 3.38, 3.62, 3.86, 4.1 , 4.34, 4.58, 4.82, 5.06,\n", + " 5.3 , 5.54, 5.78, 6.02, 6.26, 6.5 ])" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y2 = (2*x+0.5)\n", + "y2" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "id": "b407bead", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 7.5 , 7.14, 6.78, 6.42, 6.06, 5.7 , 5.34, 4.98,\n", + " 4.62, 4.26, 3.9 , 3.54, 3.18, 2.82, 2.46, 2.1 ,\n", + " 1.74, 1.38, 1.02, 0.66, 0.3 , -0.06, -0.42, -0.78,\n", + " -1.14, -1.5 , -1.86, -2.22, -2.58, -2.94, -3.3 , -3.66,\n", + " -4.02, -4.38, -4.74, -5.1 , -5.46, -5.82, -6.18, -6.54,\n", + " -6.9 , -7.26, -7.62, -7.98, -8.34, -8.7 , -9.06, -9.42,\n", + " -9.78, -10.14, -10.5 ])" + ] + }, + "execution_count": 127, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y3 = (-3*x-1.5)\n", + "y3" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "id": "8fd7a5fe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.14112001, -0.25861935, -0.37239904, -0.48082261, -0.58233065,\n", + " -0.67546318, -0.75888071, -0.83138346, -0.89192865, -0.93964547,\n", + " -0.97384763, -0.9940432 , -0.99994172, -0.99145835, -0.9687151 ,\n", + " -0.93203909, -0.88195781, -0.81919157, -0.74464312, -0.65938467,\n", + " -0.56464247, -0.46177918, -0.35227423, -0.23770263, -0.11971221,\n", + " 0. , 0.11971221, 0.23770263, 0.35227423, 0.46177918,\n", + " 0.56464247, 0.65938467, 0.74464312, 0.81919157, 0.88195781,\n", + " 0.93203909, 0.9687151 , 0.99145835, 0.99994172, 0.9940432 ,\n", + " 0.97384763, 0.93964547, 0.89192865, 0.83138346, 0.75888071,\n", + " 0.67546318, 0.58233065, 0.48082261, 0.37239904, 0.25861935,\n", + " 0.14112001])" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y4 = np.sin(x)\n", + "y4" + ] + }, + { + "cell_type": "markdown", + "id": "d8befc86", + "metadata": {}, + "source": [ + "- это я для себя а то в задании как то криво написано\n", + "\n", + "создадим область Figure с названием - fig \n", + "для неё установите размеры 8 дюймов по горизонтали и 6 дюймов по вертикали.\n", + "зазоры между графиками должны составлять 0.3.\n", + "\n", + "в область fig добавим 4 области Axes с названием - ax\n", + "\n", + "В левом верхнем графике для координат по вертикали используйте y1,в правом верхнем - y2, в левом нижнем - y3, в правом нижнем - y4.В каждом графике массив x используется для координат по горизонтали.\n", + "Дайте название графикам: 'График y1', 'График y2' и т.д.\n", + "Для графика в левом верхнем углу установите границы по оси x от -5 до 5.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "id": "bd1d9337", + "metadata": {}, + "outputs": [], + "source": [ + "#fig = plt.figure()\n", + "#fig.set_size_inches(8,6)\n", + "#plt.subplots_adjust(wspace=0.3, hspace=0.3)\n", + "\n", + "#ax1 = fig.add_subplot(2, 2, 1)\n", + "#ax2 = fig.add_subplot(2, 2, 2)\n", + "#ax3 = fig.add_subplot(2, 2, 3)\n", + "#ax4 = fig.add_subplot(2, 2, 4)\n", + "\n", + "#ax1.set(title = 'ax1(График y1)', xlim=(-5,5), yticks=(y1))\n", + "#ax2.set(title = 'ax2(График y2)', xticks=(-3,-2,-1,0,1,2,3), yticks=(y2))\n", + "#ax3.set(title = 'ax3(График y3)', xticks=(x), yticks=(y3))\n", + "#ax4.set(title = 'ax4(График y4)', xticks=(x), yticks=(y4))\n", + "\n", + "\n", + "#ax1.plot(x,y1)\n", + "#ax2.plot(x,y2)\n", + "#ax3.plot(x,y3)\n", + "#ax4.plot(x,y4)\n", + "\n", + "#plt" + ] + }, + { + "cell_type": "markdown", + "id": "92ebcc08", + "metadata": {}, + "source": [ + "Вышло некрасиво, поэтому переделываю:" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "69e74331", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:57:54.288853\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(nrows=2, ncols=2)\n", + "ax1, ax2, ax3, ax4 = ax.flatten()\n", + "ax1.plot(x, y1)\n", + "ax1.set_title('График y1')\n", + "ax1.set_xlim([-5, 5])\n", + "ax2.plot(x, y2)\n", + "ax2.set_title('График y2')\n", + "ax3.plot(x, y3)\n", + "ax3.set_title('График y3')\n", + "ax4.plot(x, y4)\n", + "ax4.set_title('График y4')\n", + "fig.set_size_inches(8, 6)\n", + "plt.subplots_adjust(wspace=0.3, hspace=0.3)" + ] + }, + { + "cell_type": "markdown", + "id": "d0dbdfc6", + "metadata": {}, + "source": [ + "*Задание 4\n", + "\n", + "В этом задании мы будем работать с датасетом, в котором приведены данные по мошенничеству с кредитными данными: Credit Card Fraud Detection (информация об авторах: Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnson and Gianluca Bontempi. Calibrating Probability with Undersampling for Unbalanced Classification. In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015).\n", + "\n", + "-Ознакомьтесь с описанием и скачайте датасет creditcard.csv с сайта Kaggle.com по ссылке: Credit Card Fraud Detection\n", + "-Данный датасет является примером несбалансированных данных, так как мошеннические операции с картами встречаются реже обычных. \n", + "-Импортируйте библиотеку Pandas, а также используйте для графиков стиль “fivethirtyeight”. \n", + "-Посчитайте с помощью метода value_counts количество наблюдений для каждого значения целевой переменной Class и примените к полученным данным метод plot, чтобы построить столбчатую диаграмму. \n", + "\n", + "-Затем постройте такую же диаграмму, используя логарифмический масштаб. \n", + "-На следующем графике постройте две гистограммы по значениям признака V1 - одну для мошеннических транзакций (Class равен 1) и другую - для обычных (Class равен 0). \n", + "-Подберите значение аргумента density так, чтобы по вертикали графика было расположено не число наблюдений, а плотность распределения. \n", + "-Число бинов должно равняться 20 для обеих гистограмм, а коэффициент alpha сделайте равным 0.5, чтобы гистограммы были полупрозрачными и не загораживали друг друга.\n", + "-Создайте легенду с двумя значениями: “Class 0” и “Class 1”.\n", + "-Гистограмма обычных транзакций должна быть серого цвета, а мошеннических - красного. Горизонтальной оси дайте название “V1”." + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "id": "cbdb3fc8", + "metadata": {}, + "outputs": [], + "source": [ + "# импортируем библиотеку pandas, используем для графиков стиль “fivethirtyeight”\n", + "import pandas as pd\n", + "plt.style.use('fivethirtyeight')" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "d0ac9720", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TimeV1V2V3V4V5V6V7V8V9...V21V22V23V24V25V26V27V28AmountClass
00.0-1.359807-0.0727812.5363471.378155-0.3383210.4623880.2395990.0986980.363787...-0.0183070.277838-0.1104740.0669280.128539-0.1891150.133558-0.021053149.620
10.01.1918570.2661510.1664800.4481540.060018-0.082361-0.0788030.085102-0.255425...-0.225775-0.6386720.101288-0.3398460.1671700.125895-0.0089830.0147242.690
21.0-1.358354-1.3401631.7732090.379780-0.5031981.8004990.7914610.247676-1.514654...0.2479980.7716790.909412-0.689281-0.327642-0.139097-0.055353-0.059752378.660
31.0-0.966272-0.1852261.792993-0.863291-0.0103091.2472030.2376090.377436-1.387024...-0.1083000.005274-0.190321-1.1755750.647376-0.2219290.0627230.061458123.500
42.0-1.1582330.8777371.5487180.403034-0.4071930.0959210.592941-0.2705330.817739...-0.0094310.798278-0.1374580.141267-0.2060100.5022920.2194220.21515369.990
\n", + "

5 rows × 31 columns

\n", + "
" + ], + "text/plain": [ + " Time V1 V2 V3 V4 V5 V6 V7 \\\n", + "0 0.0 -1.359807 -0.072781 2.536347 1.378155 -0.338321 0.462388 0.239599 \n", + "1 0.0 1.191857 0.266151 0.166480 0.448154 0.060018 -0.082361 -0.078803 \n", + "2 1.0 -1.358354 -1.340163 1.773209 0.379780 -0.503198 1.800499 0.791461 \n", + "3 1.0 -0.966272 -0.185226 1.792993 -0.863291 -0.010309 1.247203 0.237609 \n", + "4 2.0 -1.158233 0.877737 1.548718 0.403034 -0.407193 0.095921 0.592941 \n", + "\n", + " V8 V9 ... V21 V22 V23 V24 V25 \\\n", + "0 0.098698 0.363787 ... -0.018307 0.277838 -0.110474 0.066928 0.128539 \n", + "1 0.085102 -0.255425 ... -0.225775 -0.638672 0.101288 -0.339846 0.167170 \n", + "2 0.247676 -1.514654 ... 0.247998 0.771679 0.909412 -0.689281 -0.327642 \n", + "3 0.377436 -1.387024 ... -0.108300 0.005274 -0.190321 -1.175575 0.647376 \n", + "4 -0.270533 0.817739 ... -0.009431 0.798278 -0.137458 0.141267 -0.206010 \n", + "\n", + " V26 V27 V28 Amount Class \n", + "0 -0.189115 0.133558 -0.021053 149.62 0 \n", + "1 0.125895 -0.008983 0.014724 2.69 0 \n", + "2 -0.139097 -0.055353 -0.059752 378.66 0 \n", + "3 -0.221929 0.062723 0.061458 123.50 0 \n", + "4 0.502292 0.219422 0.215153 69.99 0 \n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# загружаем датасет creditcard.csv как df\n", + "df = pd.read_csv('creditcard.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "id": "810a3aac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 284315\n", + "1 492\n", + "Name: Class, dtype: int64" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Посчитайте с помощью метода value_counts коли-во наблюдений (num_obs)для каждого знач. целевой переменной Class\n", + "num_obs = df['Class'].value_counts()\n", + "num_obs" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "1a033319", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:58:03.493268\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# примените к полученным данным метод plot, чтобы построить столбчатую диаграмму\n", + "num_obs.plot(kind='barh')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "id": "7a3bc384", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:58:04.826019\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# постройте такую же диаграмму, используя логарифмический масштаб.\n", + "num_obs.plot(kind='barh', logx=True)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "id": "742c48ff", + "metadata": {}, + "outputs": [], + "source": [ + "# На следующем графике постройте две гистограммы по значениям признака V1 \n", + "# одну для мошеннических транзакций (Class равен 1)\n", + "# другую - для обычных (Class равен 0).\n", + "\n", + "class0 = df.loc[df['Class'] == 0, ['V1']]\n", + "class1 = df.loc[df['Class'] == 1, ['V1']]" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "id": "ec8688d7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-02-10T15:58:07.762971\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Подберите аргумент density так, чтобы по вертикали графика было расположено не число наблюдений,\n", + "# а плотность распределения.\n", + "# Число бинов должно равняться 20 для обеих гистограмм,\n", + "# а коэффициент alpha сделайте равным 0.5, чтобы гистограммы были полупрозрачными и не загораживали друг друга.\n", + "# Создайте легенду с двумя значениями: “Class 0” и “Class 1”.\n", + "# Гистограмма обычных транзакций должна быть серого цвета, а мошеннических - красного.\n", + "# Горизонтальной оси дайте название “V1”.\n", + "\n", + "\n", + "plt.hist(class0['V1'], bins=20, density=True, alpha=0.5, label='Class 0', color='grey')\n", + "plt.hist(class1['V1'], bins=20, density=True, alpha=0.5, label='Class 1', color='red')\n", + "plt.legend()\n", + "plt.xlabel('V1')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "b7ed8cae", + "metadata": {}, + "source": [ + "***Задание на повторение материала" + ] + }, + { + "cell_type": "markdown", + "id": "bec3aec2", + "metadata": {}, + "source": [ + "### Создать одномерный массив Numpy под названием a из 12 последовательных целых чисел чисел от 12 до 24 невключительно" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "id": "6285f115", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])" + ] + }, + "execution_count": 138, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.array ([12,13,14,15,16,17,18,19,20,21,22,23])\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "id": "b6da23e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23.])" + ] + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.linspace(12, 23, num=12)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "id": "268de59c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.arange(12, 24)\n", + "a" + ] + }, + { + "cell_type": "markdown", + "id": "23d061d5", + "metadata": {}, + "source": [ + "### Создать 5 двумерных массивов разной формы из массива a. Не использовать в аргументах метода reshape число -1." + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "id": "c1da7f6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12],\n", + " [13],\n", + " [14],\n", + " [15],\n", + " [16],\n", + " [17],\n", + " [18],\n", + " [19],\n", + " [20],\n", + " [21],\n", + " [22],\n", + " [23]])" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.array([[12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]])\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "id": "696a6982", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13],\n", + " [14, 15],\n", + " [16, 17],\n", + " [18, 19],\n", + " [20, 21],\n", + " [22, 23]])" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c = a.reshape(6,2)\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "id": "e736329f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14],\n", + " [15, 16, 17],\n", + " [18, 19, 20],\n", + " [21, 22, 23]])" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d = a.reshape(4,3)\n", + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "id": "7752f781", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15],\n", + " [16, 17, 18, 19],\n", + " [20, 21, 22, 23]])" + ] + }, + "execution_count": 144, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "e = a.reshape(3,4)\n", + "e" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "id": "7c92cebe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15, 16, 17],\n", + " [18, 19, 20, 21, 22, 23]])" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f = a.reshape(2,6)\n", + "f" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "id": "4433b119", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[12 13 14 15 16 17 18 19 20 21 22 23]]\n", + "e -> ndim: 2\n", + "e -> shape: (1, 12)\n", + "e -> size: 12\n", + "e -> dtype: int64\n" + ] + } + ], + "source": [ + "e = a.reshape(1,12)\n", + "print (e)\n", + "print(\"e -> ndim:\", e.ndim)\n", + "print(\"e -> shape:\", e.shape)\n", + "print(\"e -> size:\", e.size)\n", + "print(\"e -> dtype:\", e.dtype)" + ] + }, + { + "cell_type": "markdown", + "id": "c19acc84", + "metadata": {}, + "source": [ + "### Создать 5 двумерных массивов разной формы из массива a. Использовать в аргументах метода reshape число -1 (в трех примерах - для обозначения числа столбцов, в двух - для строк)." + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "id": "b2a3ecca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12],\n", + " [13],\n", + " [14],\n", + " [15],\n", + " [16],\n", + " [17],\n", + " [18],\n", + " [19],\n", + " [20],\n", + " [21],\n", + " [22],\n", + " [23]])" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a1 = a.reshape(12,-1)\n", + "a1" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "id": "75a82d0c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13],\n", + " [14, 15],\n", + " [16, 17],\n", + " [18, 19],\n", + " [20, 21],\n", + " [22, 23]])" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1 двумерный массив\n", + "a2 = a.reshape(6,-1)\n", + "a2" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "id": "e9e4fb38", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14],\n", + " [15, 16, 17],\n", + " [18, 19, 20],\n", + " [21, 22, 23]])" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2 двумерный массив\n", + "a3 = a.reshape(4,-1)\n", + "a3" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "id": "1e735d6d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15, 16, 17],\n", + " [18, 19, 20, 21, 22, 23]])" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3 двумерный массив\n", + "a4 = a.reshape(2,-1)\n", + "a4" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "4da6ef1d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a5 = a.reshape(1,-1)\n", + "a5" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "id": "b80e59a1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a6 = a.reshape(-1,12)\n", + "a6" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "id": "6b59665a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15, 16, 17],\n", + " [18, 19, 20, 21, 22, 23]])" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 4 двумерный массив\n", + "a7 = a.reshape(-1,6)\n", + "a7" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "id": "5b45116d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12, 13, 14, 15],\n", + " [16, 17, 18, 19],\n", + " [20, 21, 22, 23]])" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 5 двумерный массив\n", + "a8 = a.reshape(-1,4)\n", + "a8" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "id": "17521ed6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[12],\n", + " [13],\n", + " [14],\n", + " [15],\n", + " [16],\n", + " [17],\n", + " [18],\n", + " [19],\n", + " [20],\n", + " [21],\n", + " [22],\n", + " [23]])" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a9 = a.reshape(-1,1)\n", + "a9" + ] + }, + { + "cell_type": "markdown", + "id": "1aca2d49", + "metadata": {}, + "source": [ + "### Можно ли массив Numpy, состоящий из одного столбца и 12 строк, назвать одномерным?" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "id": "2cf651df", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[12 13 14 15 16 17 18 19 20 21 22 23]\n", + "[[12]\n", + " [13]\n", + " [14]\n", + " [15]\n", + " [16]\n", + " [17]\n", + " [18]\n", + " [19]\n", + " [20]\n", + " [21]\n", + " [22]\n", + " [23]]\n" + ] + } + ], + "source": [ + "#Можно ли массив Numpy, состоящий из одного столбца и 12 строк, назвать одномерным?\n", + "#Чтобы ответить на этот вопрос, сравним два массива: x и y\n", + "#Массив будет изначально создан, как одномерный\n", + "#Массив y будет создан как reshape от двумерного\n", + "x=np.arange(12, 24)\n", + "matr=x.reshape(3,4)\n", + "y=matr.reshape(12,1)\n", + "print(x)\n", + "print(y)\n", + "#Из примера четко видно, что одномерный массив и массив Numpy, состоящий из одного\n", + "#столбца и 12 строк, различаются. Последний, в отличии от первого, имеет номер строки\n", + "#и номер столбца, выводится как двумерный массив с дополнительными []. Таким образом,\n", + "#массив Numpy, состоящий из одного столбца и 12 строк, НЕЛЬЗЯ назвать одномерным." + ] + }, + { + "cell_type": "markdown", + "id": "c1905d16", + "metadata": {}, + "source": [ + "### Создать массив из 3 строк и 4 столбцов, состоящий из случайных чисел с плавающей запятой из нормального распределения со средним, равным 0 и среднеквадратичным отклонением, равным 1.0. Получить из этого массива одномерный массив с таким же атрибутом size, как и исходный массив." + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "id": "2fcda21f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.46564877, -0.2257763 , 0.0675282 , -1.42474819],\n", + " [-0.54438272, 0.11092259, -1.15099358, 0.37569802],\n", + " [-0.60063869, -0.29169375, -0.60170661, 1.85227818]])" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = np.random.randn(3,4)\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "id": "01fb2a14", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12\n" + ] + } + ], + "source": [ + "print(m.size)" + ] + }, + { + "cell_type": "markdown", + "id": "607d1525", + "metadata": {}, + "source": [ + "### Создать массив a, состоящий из целых чисел, убывающих от 20 до 0 невключительно с интервалом 2." + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "d8ac1b5c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([20, 18, 16, 14, 12, 10, 8, 6, 4, 2])" + ] + }, + "execution_count": 159, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.arange(20, 0, -2) \n", + "a" + ] + }, + { + "cell_type": "markdown", + "id": "af59a216", + "metadata": {}, + "source": [ + "### Создать массив b, состоящий из 1 строки и 10 столбцов: целых чисел, убывающих от 20 до 1 невключительно с интервалом 2. В чем разница между массивами a и b?" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "de551569", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[20, 18, 16, 14, 12, 10, 8, 6, 4, 2]])" + ] + }, + "execution_count": 160, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.arange(20, 1, -2).reshape(1,10)\n", + "b" + ] + }, + { + "cell_type": "markdown", + "id": "647de275", + "metadata": {}, + "source": [ + "массив а - одномерный ([]) массив b - двумерный ([[]])" + ] + }, + { + "cell_type": "markdown", + "id": "8b122cae", + "metadata": {}, + "source": [ + "### Вертикально соединить массивы a и b. где a - двумерный массив из нулей, число строк которого больше 1 и на 1 меньше, чем число строк двумерного массива b, состоящего из единиц. Итоговый массив v должен иметь атрибут size, равный 10." + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "id": "4531771b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 1.],\n", + " [1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.ones((3, 2))\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "fe2ee3b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0.],\n", + " [0., 0.]])" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.zeros((2, 2))\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "2da07ad5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0.],\n", + " [0., 0.],\n", + " [1., 1.],\n", + " [1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v = np.vstack((a, b))\n", + "v" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "648eeed8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 164, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v.size" + ] + }, + { + "cell_type": "markdown", + "id": "5bd6990b", + "metadata": {}, + "source": [ + "### Создать одномерный массив а, состоящий из последовательности целых чисел от 0 до 12. Поменять форму этого массива, чтобы получилась матрица A (двумерный массив Numpy), состоящая из 4 строк и 3 столбцов. Получить матрицу At путем транспонирования матрицы A. Получить матрицу B, умножив матрицу A на матрицу At с помощью матричного умножения. Какой размер имеет матрица B? Получится ли вычислить обратную матрицу для матрицы B и почему?\n" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "id": "d15e9aaf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.arange(0, 12)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "88b6edce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 1, 2],\n", + " [ 3, 4, 5],\n", + " [ 6, 7, 8],\n", + " [ 9, 10, 11]])" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = a.reshape(4,3)\n", + "A" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "id": "f2de2ad4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 3, 6, 9],\n", + " [ 1, 4, 7, 10],\n", + " [ 2, 5, 8, 11]])" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "At = A.transpose()\n", + "At" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "53cb6420", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 14, 23, 32],\n", + " [ 14, 50, 86, 122],\n", + " [ 23, 86, 149, 212],\n", + " [ 32, 122, 212, 302]])" + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B = np.dot(A,At)\n", + "B" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "id": "5ecde683", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(4, 4)" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.shape(B)" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "id": "59b1e37a", + "metadata": {}, + "outputs": [ + { + "ename": "LinAlgError", + "evalue": "Singular matrix", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mLinAlgError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [170]\u001b[0m, in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlinalg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mB\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m<__array_function__ internals>:180\u001b[0m, in \u001b[0;36minv\u001b[0;34m(*args, **kwargs)\u001b[0m\n", + "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/numpy/linalg/linalg.py:545\u001b[0m, in \u001b[0;36minv\u001b[0;34m(a)\u001b[0m\n\u001b[1;32m 543\u001b[0m signature \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mD->D\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m isComplexType(t) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124md->d\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 544\u001b[0m extobj \u001b[38;5;241m=\u001b[39m get_linalg_error_extobj(_raise_linalgerror_singular)\n\u001b[0;32m--> 545\u001b[0m ainv \u001b[38;5;241m=\u001b[39m \u001b[43m_umath_linalg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minv\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msignature\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msignature\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextobj\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextobj\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 546\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m wrap(ainv\u001b[38;5;241m.\u001b[39mastype(result_t, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m))\n", + "File \u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/numpy/linalg/linalg.py:88\u001b[0m, in \u001b[0;36m_raise_linalgerror_singular\u001b[0;34m(err, flag)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_raise_linalgerror_singular\u001b[39m(err, flag):\n\u001b[0;32m---> 88\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LinAlgError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSingular matrix\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[0;31mLinAlgError\u001b[0m: Singular matrix" + ] + } + ], + "source": [ + "np.linalg.inv(B)\n", + "# Квадратная матрица считается вырожденной, если её определитель равен нулю.\n", + "# Строки данной матрицы равны столбцам то есть они линейно зависимые, \n", + "# В таком случае определитель матрицы равен нулю и эта матрица является вырожденной.\n", + "# У вырожденных матриц нет стандартной обратной матрицы." + ] + }, + { + "cell_type": "markdown", + "id": "b7f0a67c", + "metadata": {}, + "source": [ + "### Инициализируйте генератор случайных числе с помощью объекта seed, равного 42." + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "id": "f9e833bb", + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(42)" + ] + }, + { + "cell_type": "markdown", + "id": "576d183d", + "metadata": {}, + "source": [ + "### Создайте одномерный массив c , составленный из последовательности 16-ти случайных равномерно распределенных целых чисел от 0 до 16 невключительно" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "f4948e60", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 6, 3, 12, 14, 10, 7, 12, 4, 6, 9, 2, 6, 10, 10, 7, 4])" + ] + }, + "execution_count": 172, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c = np.random.randint(0, 16, 16)\n", + "c" + ] + }, + { + "cell_type": "markdown", + "id": "a7ac7b52", + "metadata": {}, + "source": [ + "### Поменяйте его форму так, чтобы получилась квадратная матрица C. Получите матрицу D, поэлементно прибавив матрицу B из предыдущего вопроса к матрице C, умноженной на 10. Вычислите определитель , ранг и обратную матрицу D_inv для D." + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "880546f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 6, 3, 12, 14],\n", + " [10, 7, 12, 4],\n", + " [ 6, 9, 2, 6],\n", + " [10, 10, 7, 4]])" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C = c.reshape(4,4)\n", + "C" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "id": "b40fb376", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 65, 44, 143, 172],\n", + " [114, 120, 206, 162],\n", + " [ 83, 176, 169, 272],\n", + " [132, 222, 282, 342]])" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D = B+C*10\n", + "D" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "f0dc2cb2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-28511999.999999944" + ] + }, + "execution_count": 175, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D_det = np.linalg.det(D)\n", + "D_det" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "id": "871756fc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D_rnk = np.linalg.matrix_rank(D)\n", + "D_rnk" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "id": "9c21b9d7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.00935396, 0.04486532, 0.05897517, -0.07286055],\n", + " [-0.01503577, -0.00122896, -0.00192971, 0.00967873],\n", + " [-0.00356692, -0.01782828, -0.04152146, 0.04326178],\n", + " [ 0.00909091, -0.00181818, 0.01272727, -0.01090909]])" + ] + }, + "execution_count": 177, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D_inv = np.linalg.inv(D)\n", + "D_inv" + ] + }, + { + "cell_type": "markdown", + "id": "78af7fbe", + "metadata": {}, + "source": [ + "### Приравняйте к нулю отрицательные числа в матрице D_inv, а положительные - к единице. \n", + "### Убедитесь, что в матрице D_inv остались только нули и единицы. С помощью функции numpy.where, используя матрицу D_inv в качестве маски, а матрицы B и C - в качестве источников данных, получите матрицу E размером 4x4.\n", + "### Элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 1, должны быть равны соответствующему элементу матрицы B, а элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 0, должны быть равны соответствующему элементу матрицы C." + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "id": "21fa6e1f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 1, 1, 0],\n", + " [0, 0, 0, 1],\n", + " [0, 0, 0, 1],\n", + " [1, 0, 1, 0]])" + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D_inv = np.where(D_inv<0, 0, 1)\n", + "D_inv" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "id": "a6dd4583", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 5 14 23 32]\n", + " [ 14 50 86 122]\n", + " [ 23 86 149 212]\n", + " [ 32 122 212 302]]\n" + ] + } + ], + "source": [ + "print(B)" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "03198ca3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 6 3 12 14]\n", + " [10 7 12 4]\n", + " [ 6 9 2 6]\n", + " [10 10 7 4]]\n" + ] + } + ], + "source": [ + "print(C)" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "id": "91a0bdd7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 14, 23, 14],\n", + " [ 10, 7, 12, 122],\n", + " [ 6, 9, 2, 212],\n", + " [ 32, 10, 212, 4]])" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "E = np.where(D_inv==1, B, C)\n", + "E" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}