diff --git a/basharin_sevastyan_lab_3/README.md b/basharin_sevastyan_lab_3/README.md index 58a65b6..df2c3f3 100644 --- a/basharin_sevastyan_lab_3/README.md +++ b/basharin_sevastyan_lab_3/README.md @@ -1,8 +1,8 @@ ## Лабораторная работа 3. Вариант 4. ### Задание -Выполнить ранжирование признаков и решить с помощью библиотечной реализации дерева решений -задачу классификации на 99% данных из курсовой работы. Проверить -работу модели на оставшемся проценте, сделать вывод. +По данным из таблицы реши задачу классификации (с помощью дерева решений) на 99% ваших данных. +Задачу классификации определить необходимо самостоятельно. +Проверьте работу модели на оставшемся проценте, сделайте вывод. Модель: - Дерево решений `DecisionTreeClassifier`. @@ -65,21 +65,8 @@ data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type' data['Registration Status'] = label_encoder.fit_transform(data['Registration Status']) ``` -#### Выявление значимых параметров -```python -# Оценка важности признаков -feature_importances = clf.feature_importances_ -feature_importance_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances}) -feature_importance_df = feature_importance_df.sort_values(by='Importance', ascending=False) -``` - -#### Решение задачи кластеризации на полном наборе признаков -Чтобы решить задачу кластеризации моделью `DecisionTreeClassifier`, воспользуемся методом `.predict()`. -```python -clf = DecisionTreeClassifier(max_depth=5, random_state=42) -clf.fit(X_train, y_train) -y_pred = clf.predict(X_test) -``` +#### Формулировка задачи +Предсказать статус регистрации автомобиля (Registration Status) на основе других параметров. #### Оценка эффективности Для оценки точности модели будем использовать встроенный инструмент `accuracy_score`: @@ -88,6 +75,7 @@ accuracy = accuracy_score(y_test, y_pred) ``` #### Результаты -![](accuracy.png "Точность") +![](res.png "Точность") -![](important.png "Важность признаков") +### Вывод +Алгоритм показал высокую точность. Считаем, что алгоритм успешен. diff --git a/basharin_sevastyan_lab_3/accuracy.png b/basharin_sevastyan_lab_3/accuracy.png deleted file mode 100644 index 80e51f3..0000000 Binary files a/basharin_sevastyan_lab_3/accuracy.png and /dev/null differ diff --git a/basharin_sevastyan_lab_3/important.png b/basharin_sevastyan_lab_3/important.png deleted file mode 100644 index 20938b7..0000000 Binary files a/basharin_sevastyan_lab_3/important.png and /dev/null differ diff --git a/basharin_sevastyan_lab_3/main.py b/basharin_sevastyan_lab_3/main.py index a0c7b5c..4ebf697 100644 --- a/basharin_sevastyan_lab_3/main.py +++ b/basharin_sevastyan_lab_3/main.py @@ -40,39 +40,29 @@ 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']) -# Разделение данных на обучающий набор и тестовый набор. Мы будем использовать 99% данных для обучения. -train_data, test_data = train_test_split(data, test_size=0.01, random_state=42) +# Определение целевой переменной и признаков +X = data.drop('Registration Status', axis=1) # Признаки +y = data['Registration Status'] # Целевая переменная -# Определите целевую переменную (то, что вы пытаетесь предсказать, например, 'Price'). -X_train = train_data.drop(columns=['Price']) -y_train = train_data['Price'] -X_test = test_data.drop(columns=['Price']) -y_test = test_data['Price'] +# Разделение данных на обучающий и тестовый наборы +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=42) -# Создание и обучение модели DecisionTreeClassifier -clf = DecisionTreeClassifier(random_state=42) -clf.fit(X_train, y_train) +# Создание и обучение модели дерева решений +model = DecisionTreeClassifier(random_state=42) +model.fit(X_train, y_train) -# Оценка важности признаков -feature_importances = clf.feature_importances_ +# Предсказание на тестовом наборе +y_pred = model.predict(X_test) -# Создание DataFrame с именами признаков и их важностью -feature_importance_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances}) - -# Сортировка признаков по убыванию важности -feature_importance_df = feature_importance_df.sort_values(by='Importance', ascending=False) - -# Вывод ранжированных признаков -print(feature_importance_df) - -clf = DecisionTreeClassifier(max_depth=5, random_state=42) - -# Обучите модель на обучающем наборе данных -clf.fit(X_train, y_train) - -# Предсказание целевой переменной на тестовом наборе данных -y_pred = clf.predict(X_test) - -# Оцените производительность модели с помощью различных метрик +# Оценка точности модели accuracy = accuracy_score(y_test, y_pred) -print(f'Точность модели: {accuracy}') +print(f'Accuracy: {accuracy * 100:.2f}%') + +# Можете также провести анализ других метрик, таких как precision, recall, F1-score и т.д. + +# Проверка работы модели на оставшемся проценте данных (1%) +y_remaining = model.predict(X_test) # Предполагаем, что X_test представляет оставшиеся 99% данных + +# Вывод результата +print('Результат предсказания на оставшемся проценте данных:') +print(y_remaining) diff --git a/basharin_sevastyan_lab_3/res.png b/basharin_sevastyan_lab_3/res.png new file mode 100644 index 0000000..1f2e832 Binary files /dev/null and b/basharin_sevastyan_lab_3/res.png differ