from app.utils.system import clear_console from app.zadachi.zadacha1 import zadacha1 from app.zadachi.zadacha2 import zadacha2 from app.zadachi.zadacha3 import zadacha3 from app.zadachi.zadacha4 import zadacha4 from app.zadachi.zadacha5 import zadacha5 class menu: def __init__(self): pass # Конструктор пока пустой, при необходимости можно добавить параметры def main_menu(self): clear_console() while True: print('\nMain Menu:') print('1. Задача 1') print('2. Задача 2') print('3. Задача 3') print('4. Задача 4') print('5. Задача 5') print('0. Exit') choice = input('Select an option: ') clear_console() if choice == '1': self.zadacha1_menu() # Переход к подменю Задачи 1 elif choice == '2': self.zadacha2_menu() # Переход к подменю Задачи 2 elif choice == '3': self.zadacha3_menu() # Переход к подменю Задачи 3 elif choice == '4': self.zadacha4_menu() # Добавлен вызов меню задачи 4 elif choice == '5': self.zadacha5_menu() # Добавлен вызов меню задачи 5 elif choice == '0': print('Exiting program...') break else: print('Invalid option') def zadacha1_menu(self): """Меню для задачи 1 с подкатегориями.""" clear_console() while True: print('\nЗадача 1:') print('1. Линейно сгенерировать массив Y, зависящий от x') print('2. Квадратично сгенерировать массив Y, зависящий от x') print('0. Назад') choice = input('Выберите подкатегорию: ') clear_console() z1 = zadacha1() # создаем объект для задачи 1 if choice == '1': z1.plot_lin_data() # Выполнить первую подзадачу #return # Вернуться в основное меню после выполнения elif choice == '2': z1.plot_sqr_data() # Выполнить вторую подзадачу #return # Вернуться в основное меню после выполнения elif choice == '0': break # Вернуться в основное меню else: print('Неверный выбор, попробуйте снова.') def zadacha2_menu(self): """Меню для задачи 2 (расчет коэффициентов методом наименьших квадратов).""" clear_console() z1 = zadacha1() # Используем объект задачи 1 для генерации данных z2 = zadacha2() # Создаем объект для задачи 2 while True: print('\nЗадача 2:') print('1. Рассчитать коэффициенты b0 и b1 для линейной модели') print('2. Сделать прогноз по рассчитанным коэффициентам') print('0. Назад') choice = input('Выберите подкатегорию: ') clear_console() if choice == '1': # Генерация линейных данных с помощью функции из задачи 1 x_data, y_data = z1.create_lin_array() # Рассчет коэффициентов b0 и b1 методом наименьших квадратов b0, b1 = z2.calculate_coefficients(x_data, y_data) print(f'Рассчитанные коэффициенты:') print(f'b0 (свободный член) = {b0}') print(f'b1 (коэффициент наклона) = {b1}') elif choice == '2': # Пример предсказания на новых данных x_data, y_data = z1.create_lin_array() # Сначала генерируем данные b0, b1 = z2.calculate_coefficients(x_data, y_data) # Рассчитываем коэффициенты # Выполняем прогноз predicted_y = z2.predict(x_data, b0, b1) print(f'Предсказанные значения Y на основе рассчитанных коэффициентов:') print(predicted_y) elif choice == '0': break # Вернуться в основное меню else: print('Неверный выбор, попробуйте снова.') def zadacha3_menu(self): """Меню для задачи 3 (построение графика регрессии и расчет метрик).""" clear_console() z1 = zadacha1() # Используем объект задачи 1 для генерации данных z2 = zadacha2() # Используем объект задачи 2 для расчета коэффициентов while True: print('\nЗадача 3:') print('1. Построить график регрессии и рассчитать метрики') print('0. Назад') choice = input('Выберите подкатегорию: ') clear_console() if choice == '1': x_data, y_data = z1.create_lin_array() b0, b1 = z2.calculate_coefficients(x_data, y_data) # Создаем объект задачи 3 и выполняем построение графика z3 = zadacha3(x_data, y_data, b0, b1) z3.plot_regression() elif choice == '0': break # Вернуться в основное меню else: print('Неверный выбор, попробуйте снова.') def zadacha4_menu(self): """Меню для задачи 4""" clear_console() #z4 = zadacha4() # Создаем объект задачи 4 while True: print('\nЗадача 4:') print('1. Провести визуальный анализ остатков') print('0. Назад') choice = input('Выберите подкатегорию: ') clear_console() if choice == '1': z4 = zadacha4() z4.analyze_residuals() elif choice == '0': break else: print('Неверный выбор, попробуйте снова.') def zadacha5_menu(self): """Меню для задачи 5""" clear_console() while True: print('\nЗадача 5:') print('1. Рассчитать статистики для определения выполнения условий применения линейной регрессии') print('0. Назад') choice = input('Выберите подкатегорию: ') clear_console() if choice == '1': z5 = zadacha5() z5.calculate_spearman_rank_test() z5.calculate_gq_test() elif choice == '0': break else: print('Неверный выбор, попробуйте снова.')