lab 1 and 3

This commit is contained in:
cheykrym 2024-10-17 03:04:08 +03:00
parent d27394b502
commit 7c4a2f3ed6
9 changed files with 225 additions and 18 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -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()

View File

@ -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()

View File

@ -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()

0
app/labs/lab6.py Normal file
View File

0
app/labs/lab7.py Normal file
View File

View File

@ -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()

View File

@ -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. Назад')

View File

@ -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