2024-10-17 03:04:08 +03:00
|
|
|
|
import numpy as np
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
|
|
|
class lab2:
|
|
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def main(self):
|
2024-11-20 07:26:21 +03:00
|
|
|
|
|
|
|
|
|
# Используем массивы из первой работы
|
2024-10-17 03:04:08 +03:00
|
|
|
|
x11 = np.random.normal(2, 1, [10, 1])
|
|
|
|
|
x21 = np.random.normal(6, 2, [10, 1])
|
|
|
|
|
|
2024-11-20 07:26:21 +03:00
|
|
|
|
# Построение диаграммы рассеяния
|
2024-10-17 03:04:08 +03:00
|
|
|
|
plt.scatter(x11, x21)
|
2024-11-20 07:26:21 +03:00
|
|
|
|
plt.xlabel("x1")
|
|
|
|
|
plt.ylabel("x2")
|
2024-10-17 03:04:08 +03:00
|
|
|
|
plt.title("Диаграмма рассеяния")
|
|
|
|
|
plt.show()
|
|
|
|
|
|
2024-11-20 07:26:21 +03:00
|
|
|
|
# Построение гистограммы
|
2024-10-17 03:04:08 +03:00
|
|
|
|
hist_data = np.vstack((x11, x21))
|
2024-11-20 07:26:21 +03:00
|
|
|
|
plt.hist(hist_data, bins=10)
|
|
|
|
|
plt.xlabel("Значение признака")
|
|
|
|
|
plt.ylabel("Количество значений")
|
|
|
|
|
plt.title("Гистограмма")
|
2024-10-17 03:04:08 +03:00
|
|
|
|
plt.show()
|
|
|
|
|
|
2024-11-20 07:26:21 +03:00
|
|
|
|
# Построение "ящика с усами"
|
|
|
|
|
boxplot_data = plt.boxplot((x11.ravel(), x21.ravel()), notch=True)
|
|
|
|
|
plt.xlabel("Массив")
|
|
|
|
|
plt.ylabel("Значение признака")
|
|
|
|
|
plt.title("Ящик с усами")
|
|
|
|
|
plt.xticks([1, 2], ['x11', 'x21'])
|
2024-10-17 03:04:08 +03:00
|
|
|
|
plt.show()
|
|
|
|
|
|
2024-11-20 07:26:21 +03:00
|
|
|
|
# Получение данных для таблицы
|
|
|
|
|
for i, name in enumerate(['x11', 'x21'], start=1):
|
|
|
|
|
print(f"Данные для {name}:")
|
|
|
|
|
print(f"Медиана: {boxplot_data['medians'][i-1].get_ydata()[0]}")
|
|
|
|
|
print(f"Нижняя граница: {boxplot_data['whiskers'][2*(i-1)].get_ydata()[1]}")
|
|
|
|
|
print(f"Верхняя граница: {boxplot_data['whiskers'][2*(i-1)+1].get_ydata()[1]}")
|
|
|
|
|
print(f"Нижний квартиль: {boxplot_data['boxes'][i-1].get_ydata()[1]}")
|
|
|
|
|
print(f"Верхний квартиль: {boxplot_data['boxes'][i-1].get_ydata()[2]}")
|
|
|
|
|
fliers = boxplot_data['fliers'][i-1].get_ydata()
|
|
|
|
|
print(f"Выбросы: {', '.join(map(str, fliers)) if fliers.size > 0 else 'Нет выбросов'}")
|
|
|
|
|
|
2024-10-17 03:04:08 +03:00
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
l2 = lab2()
|
|
|
|
|
l2.main()
|