IIS_2023_1/basharin_sevastyan_lab_3/README.md

7.0 KiB
Raw Blame History

Лабораторная работа 3. Вариант 4.

Задание

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

Модель:

  • Дерево решений DecisionTreeClassifier.

Как запустить

Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:

python main.py

Используемые технологии

  • Библиотека pandas, используемая для работы с данными для анализа scv формата.
  • sklearn (scikit-learn): Scikit-learn - это библиотека для машинного обучения и анализа данных в Python. Из данной библиотеки были использованы следующие модули:
    • metrics - набор инструменов для оценки моделей
    • DecisionTreeClassifier - классификатор, реализующий алгоритм дерева решений. Дерево решений - это модель машинного обучения, которая разбивает данные на рекурсивные решения на основе значений признаков. Она используется для задач классификации и регрессии.
    • accuracy_score -функция из scikit-learn, которая используется для оценки производительности модели классификации путем вычисления доли правильно классифицированных примеров (точности) на тестовом наборе данных.
    • train_test_split - это функция из scikit-learn, используемая для разделения набора данных на обучающий и тестовый наборы.
    • LabelEncoder - это класс из scikit-learn, используемый для преобразования категориальных признаков (например, строки) в числовые значения.

Описание работы

Описание набора данных

Набор данных: набор данных о цене автомобиля в автопарке.

Названия столбцов набора данных и их описание:

  • Id: Уникальный идентификатор для каждого автомобиля в списке.
  • Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
  • Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
  • Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
  • Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
  • Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
  • Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
  • Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
  • Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
  • Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
  • Assembly: Импорт или местный рынок.
  • Body Type: Тип кузова.
  • Transmission Type: Тип трансмиссии.
  • Registration Status: Статус регистрации.

Ссылка на страницу набора на kuggle: Ultimate Car Price Prediction Dataset

Оцифровка и нормализация данных

Для нормальной работы с данными, необходимо исключить из них все нечисловые значения. После этого, представить все строковые значения параметров как числовые и очистить датасет от "мусора". Для удаления нечисловых значений воспользуемся функцией .dropna(). Так же мы удаляем первый столбец Id, так как при открытии файла в pd он сам нумерует строки.

Все нечисловые значения мы преобразуем в числовые с помощью LabelEncoder:

label_encoder = LabelEncoder()
data['Location'] = label_encoder.fit_transform(data['Location'])
data['Company Name'] = label_encoder.fit_transform(data['Company Name'])
data['Model Name'] = label_encoder.fit_transform(data['Model Name'])
data['Engine Type'] = label_encoder.fit_transform(data['Engine Type'])
data['Color'] = label_encoder.fit_transform(data['Color'])
data['Assembly'] = label_encoder.fit_transform(data['Assembly'])
data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])

Формулировка задачи

Предсказать статус регистрации автомобиля (Registration Status) на основе других параметров.

Оценка эффективности

Для оценки точности модели будем использовать встроенный инструмент accuracy_score:

accuracy = accuracy_score(y_test, y_pred)

Результаты

Вывод

Алгоритм показал высокую точность. Считаем, что алгоритм успешен.