# Лабораторная 3
## Вариант 9

## Задание
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы  искусственного  интеллекта»на  99%  ваших  данных.
Проверьте работу модели на оставшемся проценте, сделайте вывод.

## Описание Программы
Данная программа предназначена для построения и оценки модели дерева решений с использованием данных о зарплатах в области Data Science.
1) Задача, решаемая деревом решений:
Можно использовать дерево решений для классификации должностей на основе опыта работы (experience_level), типа занятости (employment_type), местоположения компании (company_location) и размера компании (company_size). Например, можно предсказать категории должностей, такие как "Junior Data Scientist," "Senior Data Analyst," и т.д.

### Используемые библиотеки
- `pandas`: Библиотека для обработки и анализа данных, используется для загрузки и предобработки данных.
- `scikit-learn`: Библиотека для машинного обучения, включает в себя реализацию дерева решений (DecisionTreeClassifier), метрики оценки модели (accuracy_score, mean_squared_error) и кодировщик категориальных переменных (LabelEncoder).

### Шаги программы

**Загрузка данных:**

Данные о зарплатах в области Data Science загружаются из файла 'ds_salaries.csv'.
Столбец 'Unnamed: 0', предположительно, содержащий индекс или идентификатор, удаляется.

**Предобработка данных:**

Определены признаки (features) и целевая переменная (target).
Категориальные признаки преобразованы в числовой формат с использованием LabelEncoder.
Целевая переменная также преобразована в числовой формат.

**Разделение данных:**

Данные разделены на обучающий (99%) и тестовый (1%) наборы с использованием train_test_split.

**Построение и обучение модели:**

Создана и обучена модель дерева решений с использованием DecisionTreeClassifier.

**Предсказание и оценка:**

Выполнено предсказание категорий должностей на тестовом наборе данных.
Оценена точность модели с использованием accuracy_score.
Рассчитана средняя квадратичная ошибка в процентах с использованием mean_squared_error.

**Анализ важности признаков:**

Выведена важность каждого признака в модели.
Вывод первых 5 строк тестового набора данных:

Выведены первые 5 строк тестового набора данных для ознакомления с фактическими и предсказанными значениями.

### Запуск программы
- Склонировать или скачать код `main.py`.
- Запустите файл в среде, поддерживающей выполнение Python. `python main.py`

### Результаты
![](img.png)

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

**Точность модели 14.29%**

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

**Средняя квадратичная ошибка: 165.86%**

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

**Важность признаков**

'company_location' оказывает наибольшее влияние на модель, тогда как 'employment_type' - наименьшее.