Разработка программного модуля для многокритериальной кластеризации обучающихся по результатам образовательной деятельности

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Программирование
  • 30 30 страниц
  • 8 + 8 источников
  • Добавлена 23.01.2024
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
Цель работы 4
Введение 5
Актуальность темы 5
Цели и задачи исследования 6
Адаптация образовательных программ для индивидуального обучения лиц с ограниченными физическими возможностями: концепция, потребности и эффективный анализ 8
Организация образования для обучающихся с ограниченными возможностями здоровья в соответствии со статьей 79 УК РФ 8
Сущность проблемы 9
Типы ограничений и их влияние на обучение 10
Инклюзивность образовательных программ 11
Адаптация программного обеспечения и материалов 11
Технологии в образовании 13
Роль современных технологий в обучении людей с ограниченными физическими возможностями 13
Теоретические основы компьютерного моделирования 15
Обзор методов кластеризации 17
Выбор Метода Кластеризации 18
Разработка программного модуля 21
Проектирование алгоритма кластеризации 21
Подготовка данных для тестирования 22
Разработка программы 23
Финальный код 24
Результат работы 27
Список литературы 29
Фрагмент для ознакомления

Начнем с определения структуры данных Student, которая будет включать в себя три основных параметра: время работы на компьютере (timeOnComputer), уровень базовой подготовки (basicPreparation) и уровень показателя развития памяти (memoryLevel). Эта структура позволит нам удобно хранить и обрабатывать информацию о каждом студенте.Функция для расчета евклидова расстояния. Разработаем функцию calculateDistance, которая будет вычислять евклидово расстояние между двумя студентами. Это расстояние поможет нам определить сходство между студентами на основе их характеристик. Функция будет использовать стандартные математические операции для расчета расстояния, основываясь на разнице между соответствующими атрибутами студентов.Загрузка данных из файла. Напишем функцию loadStudentsFromFile, которая будет считывать данные о студентах из внешнего файла. Эта функция позволит нам удобно загружать и обновлять информацию без необходимости внесения изменений непосредственно в код программы. Формат файла будет стандартным текстовым форматом с разделителями (например, CSV), что облегчит его создание и редактирование.Основной алгоритм программы. В основной части программы реализуем логику для ввода данных о новом студенте, затем применим алгоритм для нахождения ближайшего соседа среди уже загруженных данных. Это будет включать в себя итерацию по всем загруженным данным, вычисление расстояния до каждого студента и определение того, который находится ближе всего к введенным данным нового студента.Вывод результатов. После определения ближайшего соседа программа выведет соответствующую информацию, включая расстояние до ближайшего соседа и его характеристики. Это даст представление о том, как новый студент соотносится с уже имеющейся группой студентов.Этот код будет ключевой частью программного модуля, позволяя эффективно проводить кластеризацию и анализ данных о студентах. Его реализация потребует глубоких знаний в области программирования и алгоритмов, а также понимания специфики обработки образовательных данных.Подготовка данных для тестированияДля тестирования и оценки эффективности нашего алгоритма кластеризации, необходимо создать обширный набор тестовых данных. Нам потребуется сгенерировать примерно 20,000 записей, каждая из которых будет включать следующие параметры:timeOnComputer (double) Время работы на компьютере, выраженное в часах. Значение является дробным (double), чтобы точно отражать возможное неполное время использования компьютера. Например, 7.6 часов указывает на то, что студент провел 7 часов и 36 минут за компьютером.basicPreparation (int) Уровень базовой подготовки, оцениваемый по десятибалльной шкале. Это целочисленное значение (int), поскольку оно представляет собой стандартизированную оценку, не требующую дробной части.memoryLevel (double) Уровень развития памяти для усвоения учебного материала. Использование типа double позволяет учитывать более тонкие отличия в уровнях памяти, которые могут быть важны для точной кластеризации.Формат каждой записи будет следующим: ;;. Например, запись "7.6;4;5.6" означает, что студент проводит в среднем 7.6 часов за компьютером, имеет уровень базовой подготовки 4 из 10, и уровень развития памяти оценивается в 5.6.Примеры тестовых данных:7.6;4;5.63;6;103.8;1;2.38.1;7;5.26.1;7;53.2;7;99.5;5;8.24.7;3;6.91.9;1;4.73.5;0;9.59.2;9;1.69.1;8;6.76.8;2;6.29.6;2;4.94.3;5;3.75.1;2;4.5Разработка программыВ проекте использованы следующие заголовочные файлы:#include : Этот заголовочный файл используется для ввода и вывода данных. В вашем коде он используется для работы с объектами std::cin (стандартный ввод) и std::cout (стандартный вывод), позволяя считывать данные, введенные пользователем, и выводить данные на экран.#include : Этот заголовочный файл необходим для работы с файлами. Он предоставляет классы, такие как std::ifstream, для чтения из файлов и std::ofstream для записи в файлы. В вашем коде std::ifstream используется для чтения данных из файла students.csv.#include : Этот заголовочный файл предоставляет шаблон класса std::vector, который является динамическим массивом, способным изменять свой размер. В вашем коде std::vector используется для хранения и управления коллекцией объектов Student.#include : Этот заголовочный файл включает функции для выполнения математических операций. Например, std::sqrt и std::pow, используемые в функции calculateDistance для вычисления Евклидова расстояния между студентами.#include : Этот заголовочный файл предоставляет класс std::string и связанные с ним функции и операторы. В вашем коде std::string используется для работы со строками, например, для хранения отдельных линий текста, считываемых из файла.#include : Этот заголовочный файл предоставляет шаблоны классов для работы со строковыми потоками. Классы, такие как std::istringstream, используются для разбора строк, содержащих различные данные, разделенные пробелами или другими разделителями. В вашем коде std::istringstream используется для извлечения данных студента из строки файла.Финальный кодВ коде есть комментарии, которые помогут понять принцип его работы#include// Для ввода-вывода данных#include  // Для работы с файлами#include   // Для использования контейнера vector#include    // Для математических функций, таких как sqrt и pow#include   // Для использования строкового типа данных#include  // Для работы со строковыми потоками// Структура, описывающая студентаstructStudent {    doubletimeOnComputer; // Разрешенное время работы на компьютере    intbasicPreparation;  // Уровень базовой подготовки    doublememoryLevel;    // Уровень показателя развития памяти};// Функция для расчета Евклидова расстояния между двумя студентамиdoublecalculateDistance(constStudent&a, constStudent&b) {    // Использует квадратный корень и возведение в квадрат для вычисления расстояния    returnsqrt(pow(a.timeOnComputer-b.timeOnComputer, 2) +                pow(a.basicPreparation-b.basicPreparation, 2) +                pow(a.memoryLevel-b.memoryLevel, 2));}// Функция для загрузки данных студентов из файлаstd::vector loadStudentsFromFile(conststd::string&filename) {    std::vectorstudents; // Вектор для хранения данных студентов    std::ifstreamfile(filename);  // Открытие файла для чтения    std::string line;              // Строка для временного хранения считываемых данных    // Чтениефайлапострочно    while (std::getline(file, line)) {        std::istringstreamiss(line); // Создание строкового потока из считанной строки        std::string token;            // Строка для хранения отдельных значений        Studentstudent;              // Создание временного объекта студента        // Разбиение строки на токены и преобразование их в соответствующие типы данных        std::getline(iss, token, ';');        student.timeOnComputer=std::stod(token);        std::getline(iss, token, ';');        student.basicPreparation=std::stoi(token);        std::getline(iss, token);        student.memoryLevel=std::stod(token);        students.push_back(student); // Добавление студента в вектор    }    returnstudents; // Возвращение вектора студентов}intmain() {    // Загрузка данных студентов из файла    std::vector students =loadStudentsFromFile("S:\\students.csv");    StudentnewStudent; // Создание нового объекта студента    // Запрос на ввод данных для нового студента    std::cout<<"Введите время работы на компьютере, уровень базовой подготовки и уровень памяти для нового студента (разделенные пробелами): ";    std::cin>>newStudent.timeOnComputer>>newStudent.basicPreparation>>newStudent.memoryLevel;    doubleminDistance=std::numeric_limits::max(); // Инициализация минимального расстояния максимально возможным значением    intnearestIndex=-1; // Инициализация индекса ближайшего соседа    // Поиск ближайшего соседа для нового студента    for (inti=0; i

1.Грас, Джоэл. Data Science. Наука о данных с нуля. 2-е издание. – 2021.
2.Копец, Дэвид. Классические задачи Computer Science на языке Python. – 2020.
3.Элбон, Крис. Машинное обучение с использованием Python. Сборник рецептов. – 2019.
4.Грас, Джоэл. Data Science. Наука о данных с нуля. 2-е издание. – 2021.
5.Лакос, Дж.; Ромео, В.; Хлебников, Р.; Мередит, А. Современный C++: безопасное использование. – 2023.
6.Дайзенрот; Фейзал; Он. Математика в машинном обучении. – 2024.
7.Мескита, И. Б.; Фаулер, Э. Статистика без подвоха. – 2023.
8.Валединский; Корнев. Методы программирования в примерах и задачах. – 2023.