lab 1 and 3
This commit is contained in:
parent
d27394b502
commit
7c4a2f3ed6
|
@ -0,0 +1,33 @@
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
class lab1:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def main(self):
|
||||||
|
x11 = np.random.normal(2, 1, [10, 1])
|
||||||
|
x21 = np.random.normal(6, 2, [10, 1])
|
||||||
|
x11_od=x11.flatten()
|
||||||
|
x21_od=x21.flatten()
|
||||||
|
|
||||||
|
mu_x11 = x11.mean()
|
||||||
|
sigma_x11 = x11.std()
|
||||||
|
|
||||||
|
mu_x21 = x21.mean()
|
||||||
|
sigma_x21 = x21.std()
|
||||||
|
|
||||||
|
print("Массив x11:")
|
||||||
|
print("Среднее значение:", mu_x11)
|
||||||
|
print("Среднеквадратическое отклонение:", sigma_x11)
|
||||||
|
|
||||||
|
print("Массив x21:")
|
||||||
|
print("Среднее значение:", mu_x21)
|
||||||
|
print("Среднеквадратическое отклонение:", sigma_x21)
|
||||||
|
|
||||||
|
corr_coeff=np.corrcoef(x11_od,x21_od)[0,1]
|
||||||
|
print("Коэффициент корреляции между x11 и x21:", corr_coeff)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
l1 = lab1()
|
||||||
|
l1.main()
|
|
@ -0,0 +1,40 @@
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
class lab2:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def main(self):
|
||||||
|
# Данные для графика
|
||||||
|
x11 = np.random.normal(2, 1, [10, 1])
|
||||||
|
x21 = np.random.normal(6, 2, [10, 1])
|
||||||
|
print(x11,x21)
|
||||||
|
|
||||||
|
# Рисуем график
|
||||||
|
plt.scatter(x11, x21)
|
||||||
|
plt.xlabel("x")
|
||||||
|
plt.ylabel("y")
|
||||||
|
plt.title("Диаграмма рассеяния")
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
hist_data = np.vstack((x11, x21))
|
||||||
|
print ("Данные для гистограммы:", hist_data )
|
||||||
|
plt.hist(hist_data)
|
||||||
|
plt.xlabel('Значение признака')
|
||||||
|
plt.ylabel('Частота появления значения признака')
|
||||||
|
plt.title('Гистограмма')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
# Коробочковая диаграмма
|
||||||
|
plt.boxplot((x11.ravel(), x21.ravel()), notch=True)
|
||||||
|
print("Данные для коробочковой диаграммы",x11.ravel(), x21.ravel())
|
||||||
|
plt.xlabel('№ объекта')
|
||||||
|
plt.ylabel('Значение признака')
|
||||||
|
plt.title('Ящик с усами')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
l2 = lab2()
|
||||||
|
l2.main()
|
|
@ -0,0 +1,92 @@
|
||||||
|
from sklearn.datasets import load_iris
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
class lab3:
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def main(self):
|
||||||
|
data = load_iris()
|
||||||
|
X = data.data
|
||||||
|
print('Все данные', data.data)
|
||||||
|
Y = data.target
|
||||||
|
print(data.target)
|
||||||
|
Y_str = data.target_names
|
||||||
|
print(Y_str)
|
||||||
|
|
||||||
|
setosa_inds = Y == np.where(Y_str == 'setosa')
|
||||||
|
setosa_data = X[np.ravel(setosa_inds), :]
|
||||||
|
print('Индексы setosa', setosa_inds)
|
||||||
|
print('Признаки setosa:', setosa_data)
|
||||||
|
|
||||||
|
versicolor_inds = Y == np.where(Y_str == 'versicolor')
|
||||||
|
versicolor_data = X[np.ravel(versicolor_inds), :]
|
||||||
|
virginica_inds = Y == np.where(Y_str == 'virginica')
|
||||||
|
virginica_data = X[np.ravel(virginica_inds), :]
|
||||||
|
|
||||||
|
plt.scatter(setosa_data[:, 0], setosa_data[:, 1])
|
||||||
|
plt.title('Скаттерограмма setosa по признакам 1 и 2')
|
||||||
|
plt.xlabel('Длина чашелистика')
|
||||||
|
plt.ylabel('Ширина чашелистика')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
plt.scatter(versicolor_data[:, 0], versicolor_data[:, 1])
|
||||||
|
plt.title('Скаттерограмма versicolor по признакам 1 и 2')
|
||||||
|
plt.xlabel('Длина чашелистика')
|
||||||
|
plt.ylabel('Ширина чашелистика')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
plt.scatter(virginica_data[:, 0], virginica_data[:, 1])
|
||||||
|
plt.title('Скаттерограмма virginica по признакам 1 и 2')
|
||||||
|
plt.xlabel('Длина чашелистика')
|
||||||
|
plt.ylabel('Ширина чашелистика')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
# расчет статистических характеристик коэф. корреляции для признаков
|
||||||
|
setosa_sl_mean = np.mean(setosa_data[:, 0])
|
||||||
|
setosa_sl_std = np.std(setosa_data[:, 0])
|
||||||
|
setosa_sw_mean = np.mean(setosa_data[:, 1])
|
||||||
|
setosa_sw_std = np.std(setosa_data[:, 1])
|
||||||
|
setosa_cor = np.corrcoef(setosa_data[:, 0], setosa_data[:, 1])[0, 1]
|
||||||
|
|
||||||
|
versicolor_sl_mean = np.mean(versicolor_data[:, 0])
|
||||||
|
versicolor_sl_std = np.std(versicolor_data[:, 0])
|
||||||
|
versicolor_sw_mean = np.mean(versicolor_data[:, 1])
|
||||||
|
versicolor_sw_std = np.std(versicolor_data[:, 1])
|
||||||
|
versicolor_cor = np.corrcoef(versicolor_data[:, 0], versicolor_data[:, 1])[0, 1]
|
||||||
|
|
||||||
|
virginica_sl_mean = np.mean(virginica_data[:, 0])
|
||||||
|
virginica_sl_std = np.std(virginica_data[:, 0])
|
||||||
|
virginica_sw_mean = np.mean(virginica_data[:, 1])
|
||||||
|
virginica_sw_std = np.std(virginica_data[:, 1])
|
||||||
|
virginica_cor = np.corrcoef(virginica_data[:, 0], virginica_data[:, 1])[0, 1]
|
||||||
|
|
||||||
|
print('Setosa: Среднее значение длины чашелистика:', setosa_sl_mean, 'СКО длины чашелистика:', setosa_sl_std, 'Среднее значение ширины чашелистика:', setosa_sw_mean, 'СКО ширины чашелистика:', setosa_sw_std)
|
||||||
|
print('Коэффициент корреляции:', setosa_cor)
|
||||||
|
print('Versicolor: Среднее значение длины чашелистика:', versicolor_sl_mean, 'СКО длины чашелистика:', versicolor_sl_std, 'Среднее значение ширины чашелистика:', versicolor_sw_mean, 'СКО ширины чашелистика:', versicolor_sw_std)
|
||||||
|
print('Коэффициент корреляции:', versicolor_cor)
|
||||||
|
print('Virginica: Среднее значение длины чашелистика:', virginica_sl_mean, 'СКО длины чашелистика:', virginica_sl_std, 'Среднее значение ширины чашелистика:', virginica_sw_mean, 'СКО ширины чашелистика:', virginica_sw_std)
|
||||||
|
print('Коэффициент корреляции:', virginica_cor)
|
||||||
|
|
||||||
|
# построение гистограммы и коробочковой диаграммы для setosa по признакам 1 и 2
|
||||||
|
hist_data = np.vstack((setosa_data[:, 0], setosa_data[:, 1]))
|
||||||
|
plt.hist(hist_data.T, label=['Длина чашелистика', 'Ширина чашелистика'])
|
||||||
|
|
||||||
|
# Настройка графика
|
||||||
|
plt.title('Гистограмма setosa по признакам 1 и 2')
|
||||||
|
plt.xlabel('Значение')
|
||||||
|
plt.ylabel('Частота')
|
||||||
|
plt.legend()
|
||||||
|
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
plt.boxplot((setosa_data[:, 0].ravel(), setosa_data[:, 1].ravel()), notch=False, labels=['Длина чашелистика', 'Ширина чашелистика'])
|
||||||
|
plt.title('Коробочковая диаграмма setosa по признакам 1 и 2')
|
||||||
|
plt.ylabel('Значение')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
l3 = lab3()
|
||||||
|
l3.main()
|
|
@ -55,5 +55,5 @@ class labTest:
|
||||||
print("Ошибка ввода: необходимо ввести целые числа для a, b и c.")
|
print("Ошибка ввода: необходимо ввести целые числа для a, b и c.")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
lab_test = labTest()
|
lT = labTest()
|
||||||
lab_test.start()
|
lT.start()
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
from app.utils.system import clear_console
|
from app.utils.system import clear_console
|
||||||
|
|
||||||
# from app.zadachi.lab1 import lab1
|
from app.labs.lab1 import lab1
|
||||||
# from app.zadachi.lab2 import lab2
|
# from app.labs.lab2 import lab2
|
||||||
# from app.zadachi.lab3 import lab3
|
from app.labs.lab3 import lab3
|
||||||
# from app.zadachi.lab4 import lab4
|
# from app.labs.lab4 import lab4
|
||||||
# from app.zadachi.lab5 import lab5
|
# from app.labs.lab5 import lab5
|
||||||
# from app.zadachi.lab6 import lab6
|
# from app.labs.lab6 import lab6
|
||||||
# from app.zadachi.lab7 import lab7
|
# from app.labs.lab7 import lab7
|
||||||
from app.labs.labTest import labTest
|
from app.labs.labTest import labTest
|
||||||
|
|
||||||
class menu:
|
class menu:
|
||||||
|
@ -18,9 +18,9 @@ class menu:
|
||||||
clear_console()
|
clear_console()
|
||||||
while True:
|
while True:
|
||||||
print('\nMain Menu:')
|
print('\nMain Menu:')
|
||||||
print('1. Задача 1 (Не работает)')
|
print('1. Задача 1')
|
||||||
print('2. Задача 2 (Не работает)')
|
print('2. Задача 2 (Не работает)')
|
||||||
print('3. Задача 3 (Не работает)')
|
print('3. Задача 3')
|
||||||
print('4. Задача 4 (Не работает)')
|
print('4. Задача 4 (Не работает)')
|
||||||
print('5. Задача 5 (Не работает)')
|
print('5. Задача 5 (Не работает)')
|
||||||
print('6. Задача 6 (Не работает)')
|
print('6. Задача 6 (Не работает)')
|
||||||
|
@ -32,11 +32,11 @@ class menu:
|
||||||
|
|
||||||
clear_console()
|
clear_console()
|
||||||
if choice == '1':
|
if choice == '1':
|
||||||
pass
|
self.lab1_menu()
|
||||||
# elif choice == '2':
|
# elif choice == '2':
|
||||||
# self.lab2_menu() # Переход к подменю Задачи 2
|
# self.lab2_menu() # Переход к подменю Задачи 2
|
||||||
# elif choice == '3':
|
elif choice == '3':
|
||||||
# self.lab3_menu() # Переход к подменю Задачи 3
|
self.lab3_menu()
|
||||||
# elif choice == '4':
|
# elif choice == '4':
|
||||||
# self.lab4_menu() # Добавлен вызов меню задачи 4
|
# self.lab4_menu() # Добавлен вызов меню задачи 4
|
||||||
elif choice == '8':
|
elif choice == '8':
|
||||||
|
@ -47,15 +47,56 @@ class menu:
|
||||||
else:
|
else:
|
||||||
print('Invalid option')
|
print('Invalid option')
|
||||||
|
|
||||||
|
def lab1_menu(self):
|
||||||
|
"""Меню для lab 1 с подкатегориями."""
|
||||||
|
clear_console()
|
||||||
|
while True:
|
||||||
|
print('\nЛаб 1:')
|
||||||
|
print('1. Генерация одномерных данных. Статистические характеристики')
|
||||||
|
print('0. Назад')
|
||||||
|
|
||||||
|
choice = input('Выберите подкатегорию: ')
|
||||||
|
|
||||||
|
clear_console()
|
||||||
|
l1 = lab1() # создаем объект для задачи 1
|
||||||
|
|
||||||
|
if choice == '1':
|
||||||
|
l1.main() # Выполнить первую подзадачу
|
||||||
|
elif choice == '0':
|
||||||
|
break # Вернуться в основное меню
|
||||||
|
else:
|
||||||
|
print('Неверный выбор, попробуйте снова.')
|
||||||
|
|
||||||
|
def lab2_menu(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def lab3_menu(self):
|
||||||
|
"""Меню для lab 3 с подкатегориями."""
|
||||||
|
clear_console()
|
||||||
|
while True:
|
||||||
|
print('\nЛаб 3:')
|
||||||
|
print('1. Набор данных «Ирисы Фишера»»')
|
||||||
|
print('0. Назад')
|
||||||
|
|
||||||
|
choice = input('Выберите подкатегорию: ')
|
||||||
|
|
||||||
|
clear_console()
|
||||||
|
l3 = lab3() # создаем объект для задачи 1
|
||||||
|
|
||||||
|
if choice == '1':
|
||||||
|
l3.main() # Выполнить первую подзадачу
|
||||||
|
elif choice == '0':
|
||||||
|
break # Вернуться в основное меню
|
||||||
|
else:
|
||||||
|
print('Неверный выбор, попробуйте снова.')
|
||||||
|
|
||||||
def labTest_menu(self):
|
def labTest_menu(self):
|
||||||
"""Меню для задачи Тест"""
|
"""Меню для lab Тест"""
|
||||||
clear_console()
|
clear_console()
|
||||||
lT = labTest()
|
lT = labTest()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
print('\nЗадача Тест:')
|
print('\nЛаб Тест:')
|
||||||
print('1. Рассчитать значение дискриминанта и по результату выдать в консоль сообщение, сколько вещественных корней имеет уравнение.')
|
print('1. Рассчитать значение дискриминанта и по результату выдать в консоль сообщение, сколько вещественных корней имеет уравнение.')
|
||||||
print('0. Назад')
|
print('0. Назад')
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
numpy==2.1.2
|
numpy==1.24.4
|
||||||
matplotlib==3.9.2
|
matplotlib==3.7.5
|
||||||
|
scikit-learn==1.3.2
|
||||||
|
|
Loading…
Reference in New Issue