Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
385 changes: 385 additions & 0 deletions HW2 Numpy
Original file line number Diff line number Diff line change
@@ -0,0 +1,385 @@
#!/usr/bin/env python
# coding: utf-8

# In[ ]:


Задание 1
Загрузите модуль pyplot библиотеки matplotlib с псевдонимом plt, а также библиотеку numpy с псевдонимом np.
Примените магическую функцию %matplotlib inline для отображения графиков в Jupyter Notebook и настройки конфигурации ноутбука со значением 'svg' для более четкого отображения графиков.
Создайте список под названием x с числами 1, 2, 3, 4, 5, 6, 7 и список y с числами 3.5, 3.8, 4.2, 4.5, 5, 5.5, 7.
С помощью функции plot постройте график, соединяющий линиями точки с горизонтальными координатами из списка x и вертикальными - из списка y.
Затем в следующей ячейке постройте диаграмму рассеяния (другие названия - диаграмма разброса, scatter plot).


# In[53]:


import numpy as np
import pandas as pd
from matplotlib import pyplot as plt


# In[54]:


get_ipython().run_line_magic('matplotlib', 'inline')


# In[3]:


x = np.arange(1, 8)

print(x)


# In[4]:


y = np.array([3.5, 3.8, 4.2, 4.5, 5, 5.5, 7])

print(y)


# In[5]:


plt.plot(x, y)

plt.show()


# In[6]:


plt.scatter(x, y)

plt.show()


# In[ ]:


Задание 2
С помощью функции linspace из библиотеки Numpy создайте массив t из 51 числа от 0 до 10 включительно.
Создайте массив Numpy под названием f, содержащий косинусы элементов массива t.
Постройте линейную диаграмму, используя массив t для координат по горизонтали,а массив f - для координат по вертикали.
Линия графика должна быть зеленого цвета.
Выведите название диаграммы - 'График f(t)'. Также добавьте названия для горизонтальной оси - 'Значения t'
и для вертикальной - 'Значения f'.
Ограничьте график по оси x значениями 0.5 и 9.5, а по оси y - значениями -2.5 и 2.5.


# In[7]:


t = np.linspace(0, 10, 51)
t


# In[8]:


f = np.cos(t)
f


# In[9]:


plt.plot(t, f,color="green")
plt.title("График f(t)")
plt.xlabel("Значения t")
plt.ylabel("Значения f")
plt.axis([0.5, 9.5, -2.5, 2.5])
plt.show()


# In[ ]:


С помощью функции linspace библиотеки Numpy создайте массив x из 51 числа от -3 до 3 включительно.
Создайте массивы y1, y2, y3, y4 по следующим формулам:
y1 = x**2
y2 = 2 * x + 0.5
y3 = -3 * x - 1.5
y4 = sin(x)
Используя функцию subplots модуля matplotlib.pyplot, создайте объект matplotlib.figure.Figure с названием fig
и массив объектов Axes под названием ax,причем так, чтобы у вас было 4 отдельных графика в сетке, состоящей
из двух строк и двух столбцов. В каждом графике массив x используется для координат по горизонтали.
В левом верхнем графике для координат по вертикали используйте y1,в правом верхнем - y2, в левом нижнем - y3,
в правом нижнем - y4.Дайте название графикам: 'График y1', 'График y2' и т.д.
Для графика в левом верхнем углу установите границы по оси x от -5 до 5.
Установите размеры фигуры 8 дюймов по горизонтали и 6 дюймов по вертикали.
Вертикальные и горизонтальные зазоры между графиками должны составлять 0.3.


# In[10]:


x = np.linspace(-3, 3, 51)
x


# In[11]:


y1 = x**2
y2 = 2 * x + 0.5
y3 = -3 * x - 1.5
y4 = np.sin(x)


# In[12]:


fig, ax = plt.subplots(nrows=2, ncols=2)
ax1, ax2, ax3, ax4 = ax.flatten()

fig.set_size_inches(8, 6)
fig.subplots_adjust(wspace=0.3, hspace=0.3)

ax1.plot(x, y1)
ax1.set_title("График y1")
ax1.set_xlim([-5, 5])
ax2.plot(x, y2)
ax2.set_title("График y2")
ax3.plot(x, y3)
ax3.set_title("График y3")
ax4.plot(x, y4)
ax4.set_title("График y4")


# In[ ]:


В этом задании мы будем работать с датасетом, в котором приведены данные по мошенничеству с кредитными данными:
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).
Ознакомьтесь с описанием и скачайте датасет creditcard.csv с сайта Kaggle.com по ссылке:
Credit Card Fraud Detection
Данный датасет является примером несбалансированных данных, так как мошеннические операции с картами встречаются реже обычных.
Импортируйте библиотеку Pandas, а также используйте для графиков стиль “fivethirtyeight”.
Посчитайте с помощью метода value_counts количество наблюдений для каждого значения целевой переменной Class и примените
к полученным данным метод plot, чтобы построить столбчатую диаграмму. Затем постройте такую же диаграмму, используя
логарифмический масштаб.
На следующем графике постройте две гистограммы по значениям признака V1 - одну для мошеннических транзакций (Class равен 1)
и другую - для обычных (Class равен 0). Подберите значение аргумента density так, чтобы по вертикали графика было расположено
не число наблюдений, а плотность распределения. Число бинов должно равняться 20 для обеих гистограмм, а коэффициент alpha
сделайте равным 0.5, чтобы гистограммы были полупрозрачными и не загораживали друг друга. Создайте легенду с двумя значениями:
“Class 0” и “Class 1”. Гистограмма обычных транзакций должна быть серого цвета, а мошеннических - красного. Горизонтальной
оси дайте название “V1”


# In[ ]:


value_counts
plt.plot(x, y, label="x^2", color="green", linestyle="dotted")


# In[66]:



bmi_df = pd.read_excel('creditcard.xlsx')
bmi_df.iloc[:10, :4]


# In[ ]:


1)Создать одномерный массив Numpy под названием a из 12 последовательных целых чисел чисел от 12 до 24 невключительно


# In[24]:


a = np.arange(12, 24)
a


# In[ ]:


2) Создать 5 двумерных массивов разной формы из массива a. Не использовать в аргументах метода reshape число -1.


# In[31]:


b = a.reshape(2, 6)
print(b)
c = a.reshape(6, 2)
print(c)
d = a.reshape(3, 4)
print(d)
e = a.reshape(4, 3)
print(e)
f = a.reshape(12, 1)
print(f)


# In[ ]:


3) Создать 5 двумерных массивов разной формы из массива a. Использовать в аргументах метода reshape число -1
(в трех примерах - для обозначения числа столбцов, в двух - для строк).


# In[35]:


b = a.reshape(2, -1)
print(b)
c = a.reshape(6, -1)
print(c)
d = a.reshape(3, -1)
print(d)
e = a.reshape(-1, 3)
print(e)
f = a.reshape(-1, 1)
print(f)


# In[ ]:


get_ipython().set_next_input('4) Можно ли массив Numpy, состоящий из одного столбца и 12 строк, назвать одномерным');get_ipython().run_line_magic('pinfo', 'одномерным')


# In[ ]:


Нет


# In[ ]:


5) Создать массив из 3 строк и 4 столбцов, состоящий из случайных чисел с плавающей запятой из нормального распределения со
средним, равным 0 и среднеквадратичным отклонением, равным 1.0. Получить из этого массива одномерный массив с таким же
атрибутом size, как и исходный массив.


# In[41]:


b = np.random.randn(3, 4)
a = b.flatten()
print(b.size)
print(a.size)


# In[ ]:


6) Создать массив a, состоящий из целых чисел, убывающих от 20 до 0 невключительно с интервалом 2.


# In[45]:


a = np.arange(20, 0, -2)
print(a)


# In[ ]:


7) Создать массив b, состоящий из 1 строки и 10 столбцов: целых чисел, убывающих от 20 до 1 невключительно с интервалом 2.
get_ipython().set_next_input(' В чем разница между массивами a и b');get_ipython().run_line_magic('pinfo', 'b')


# In[ ]:





# In[ ]:


8) Вертикально соединить массивы a и b. a - двумерный массив из нулей, число строк которого больше 1 и на 1 меньше,
чем число строк двумерного массива b, состоящего из единиц. Итоговый массив v должен иметь атрибут size, равный 10.


# In[52]:


a = np.zeros((2, 2))
b = np.ones((3, 2))
c = np.vstack((a, b))
c


# In[ ]:


9) Создать одномерный массив а, состоящий из последовательности целых чисел от 0 до 12. Поменять форму этого массива, чтобы
получилась матрица A (двумерный массив Numpy), состоящая из 4 строк и 3 столбцов. Получить матрицу At путем транспонирования
матрицы A. Получить матрицу B, умножив матрицу A на матрицу At с помощью матричного умножения. Какой размер имеет матрица B?
get_ipython().set_next_input('Получится ли вычислить обратную матрицу для матрицы B и почему');get_ipython().run_line_magic('pinfo', 'почему')


# In[ ]:





# In[ ]:


10) Инициализируйте генератор случайных числе с помощью объекта seed, равного 42.


# In[ ]:





# In[ ]:


11) Создайте одномерный массив c, составленный из последовательности 16-ти случайных равномерно распределенных целых чисел от 0
до 16 невключительно.


# In[ ]:





# In[ ]:


12) Поменяйте его форму так, чтобы получилась квадратная матрица C. Получите матрицу D, поэлементно прибавив матрицу B из
предыдущего вопроса к матрице C, умноженной на 10. Вычислите определитель, ранг и обратную матрицу D_inv для D.


# In[ ]:





# In[ ]:


13) Приравняйте к нулю отрицательные числа в матрице D_inv, а положительные - к единице. Убедитесь, что в матрице D_inv остались
только нули и единицы. С помощью функции numpy.where, используя матрицу D_inv в качестве маски, а матрицы B и C - в качестве
источников данных, получите матрицу E размером 4x4. Элементы матрицы E, для которых соответствующий элемент матрицы D_inv
равен 1, должны быть равны соответствующему элементу матрицы B, а элементы матрицы E, для которых соответствующий элемент
матрицы D_inv равен 0, должны быть равны соответствующему элементу матрицы C.


# In[ ]:




Loading