В этом проекте я объяснил, как подключиться к MongoDB и получить данные с помощью GUI, а также как создать безопасный способ защиты паролей и, наконец, использовать Дерево решений для прогнозирования на основе набора данных.

Дерево решений (DT).Алгоритм дерева решений считается алгоритмом классификации задач, связанных с алгоритмом обучения с учителем, с точки зрения машинного обучения. Обучение с учителем или машинное обучение с учителем считается подкатегорией машинного обучения. Он обучает алгоритм классификации данных с использованием помеченных наборов данных. Алгоритмы обучения включают в себя входные данные и правильные выходные данные, что приводит модель к обучению.

Проект:

По данным ВОЗ, инсульт является второй ведущей причиной смерти в мире, на которую приходится около 11% всех смертей. Этот проект прогнозирует, может ли пациент получить инсульт, на основе входных параметров, таких как пол, возраст, различные заболевания и статус курения.

Первый шаг — получить наборы данных в формате CSV или Excel, чтобы подготовить данные для алгоритма дерева решений.

Загрузите все основные библиотеки.

В этом проекте наборы данных хранятся на онлайн-сервере MongoDB, поэтому необходимо подключить MongoDB. Создание класса и функции для подключения и чтения данных с сервера MongoDB и преобразования наборов данных во фрейм данных для изучения данных. Здесь я использую закрытый метод для всех своих классов в программе.

Защита данных и приложений является важным вопросом, который следует учитывать. Поэтому, защищая алгоритмы хеширования, которые являются односторонней функцией, пароль не может быть получен из хэша.

Хэш-класс состоит из generate_hash_password и check_password, которые получают пароль от пользователя и преобразуют его в хеш, а затем проверяют.

Данные состоят из 13 столбцов признаков, по которым можно увидеть удар. Некоторые из этих столбцов не имеют значения и не влияют на ход, например _id (это идентификатор, хранящийся в MongoDB), id (идентификатор, который имеют собственные наборы данных), ever_married и work_type, которые необходимо удалить.

Следующий шаг — очистка и подготовка данных(прочитайте эту статью). Чтобы достичь правильного анализа, нам нужно избавиться от лишнего и никакого значения из наборов данных. на самом деле, наука о данных тратит большую часть своего времени (80%)

Есть несколько шагов в правильных данных, которые каждый

анализатор следует учитывать:

  1. Избавьтесь от лишних пробелов
  2. Выберите и обработайте все пустые ячейки
  3. Преобразование чисел, сохраненных в виде текста, в числа
  4. Удалить дубликаты
  5. Выделите ошибки
  6. Изменить текст на нижний/верхний/правильный регистр
  7. Проверка орфографии
  8. Удалить все форматирование

В классе Exploring_data функция cleaning_data удаляет некоторые ненужные столбцы (ever_married, Id, work-_type и _id) из фрейма данных.

Далее найдите значение None в наборах данных. Очень часто мы заполняем значение none медианой, и здесь значение none столбца bmi заполняется медианой. Затем мы находим индекс отсутствующих значений в столбцах smoking_status и gender, чтобы удалить эти отсутствующие данные из нашего фрейма данных.

Последним шагом в очистке данных является преобразование текстовых значений, хранящихся в данных, в числа. Для анализа нам нужно только число, поэтому с помощью функции карты преобразуйте наш текст в число и верните окончательный результат в виде dfname.

На следующем этапе данные должны быть разделены на данные поезда и тестовые данные. Алгоритму дерева решений требуется часть данных для обучения и прогнозирования данных напоминания. функция разделения разделяет данные поезда как self.__X и тестовые данные как self.__y.

Один из сложных шагов в дереве решений — определить, какой атрибут выбрать в качестве корня. Случайный выбор — это один из способов, который можно использовать в некоторых случаях, но он не является гарантией достижения высокой точности. Таким образом, чтобы решить эту проблему, мера выбора атрибута использует некоторые критерии, такие как прирост энтропийной информации, индекс Джини, коэффициент усиления, уменьшение дисперсии и хи-квадрат.

Стратегия меры выбора атрибута вычисляет все эти критерии для каждого атрибута и сортирует значение. Наконец, атрибуты размещаются в дереве по порядку, а значение с большим информационным приростом помещается в корень. В классе Decision_tree мы используем Gini в качестве критерия в нашем классификаторе дерева решений, а затем подгоняем модель с помощью классификатора.

Затем с помощью функции точности проверьте точность.

Распространенная проблема в Дереве решений — переоснащение. Теоретическая максимальная глубина в дереве решений меньше количества всех выборок. Следовательно, переобучение не позволяет алгоритму достичь этого. Кроме того, достижение максимальной глубины в сложном наборе данных может быть трудоемким и занимать много времени. Поскольку изменение достижения максимальной глубины незначительно, оптимизация дерева решений — это способ избежать переобучения и затрат времени.

В этом проекте оптимизация классификатора дерева решений выполняется только путем предварительной обрезки. Максимальная глубина дерева может использоваться как управляющая переменная для предварительной обрезки, и здесь я использую четыре максимальных глубины. Затем с помощью функции точности проверьте точность.

Одна из причин популярности дерева решений заключается в том, что этот алгоритм можно использовать для регрессии и классификации, и они не только не требуют масштабирования признаков, но и доступны и могут быть интерпретированы так, как могут визуализировать дерево решений.

Класс визуализации является подклассом своего родительского класса (Decision_tree), поэтому мы можем использовать объекты из дерева решений. В функции plot _bar_chart мы создаем столбчатую диаграмму переломов, которая показывает, насколько сильно каждая функция влияет на штрих.

В функции tree_Graph мы отображаем граф дерева решений нашего алгоритма и оптимизации.

Гистограмма функций

Этот граф является исходным графом нашего дерева решений. В этом случае алгоритм вычисляет множество узлов с максимальной глубиной. При оптимизации мы ограничиваем максимальную глубину до четырех, что существенно не снижает точность и сокращает время процесса.

График оптимизации

Это интерфейс моего проекта, в котором, введя логин и пароль и нажав на зеленую кнопку, будет запущен анализ.

Это интерфейс моего проекта, который, введя имя пользователя и пароль и нажав зеленую кнопку, запустит анализ.

Для пользовательского интерфейса (UI) класс Gui — отличный выбор, который обрабатывает пользовательский ввод и вывод.

Вещи, которые происходят в пользовательском интерфейсе, такие как щелчок внизу или ввод имени пользователя и пароля, известны как события, и Gui использует ООП, который называется управляемым событиями.

В этом проекте мы используем Gui для создания нашего интерфейса. Во-первых, мы определяем функции для главных окон, которые предоставляют нам множество функций по умолчанию. Каждое приложение может иметь только одно главное окно.

Во-вторых, я упорядочиваю различные элементы, такие как button_plus, exists_button, label1 и т. д., которые говорят сами за себя. Кроме того, необходимо поместить все наши метки и кнопки в наши главные окна.

button_ plusпредназначен для запуска функции main_start нажатием на кнопку. Exist_button может существовать из приложения, нажав на нее.

Команда label1 и label2show помогает пользователю.

enter_username и enter_password представляют собой два элемента, которые получают имя пользователя и пароль от пользователя.

result_accuracy, label_accuracy_result, result_accuracy2 и label_accuracy_result2 покажут точность нашего алгоритма дерева решений как для исходного алгоритма, так и для оптимизации.

Затем я использую метод Pack для размещения каждого элемента внутри основных окон. Если вы забудете упаковать какой-либо элемент, он не будет отображаться в приложении.

Наконец, определите функцию для выполнения нашего приложения. Он начинается с проверки имени пользователя в качестве пароля, и если он правильный, он подключается к серверу для получения данных и продолжения процесса.