Merge pull request 'malkova_anastasia_lab_3 ready' (#148) from malkova_anastasia_lab_3 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/148
This commit is contained in:
commit
b4d9dfaa00
83
malkova_anastasia_lab_3/README.md
Normal file
83
malkova_anastasia_lab_3/README.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# Лабораторная работа №3
|
||||||
|
|
||||||
|
> Деревья решений
|
||||||
|
|
||||||
|
### Как запустить лабораторную работу
|
||||||
|
|
||||||
|
1. Установить python, numpy, sklearn
|
||||||
|
1. Для запуска на наборе данных первого задания `python titanic.py`
|
||||||
|
1. Для запуска на наборе данных второго задания `python cars.py`
|
||||||
|
|
||||||
|
### Использованные технологии
|
||||||
|
|
||||||
|
* Язык программирования `python`
|
||||||
|
* Библиотеки `numpy, sklearn`
|
||||||
|
* Среда разработки `PyCharm`
|
||||||
|
|
||||||
|
### Что делает программа?
|
||||||
|
|
||||||
|
#### Часть 1
|
||||||
|
|
||||||
|
По данным о пассажирах Титаника решите задачу классификации (с помощью дерева решений), в которой по различным характеристикам пассажиров требуется найти у выживших пассажиров два наиболее важных признака из трех рассматриваемых (по варианту).
|
||||||
|
|
||||||
|
Вариант 18 Pclass, Age, Ticket.
|
||||||
|
|
||||||
|
Была использована модель DecisionTreeClassifier
|
||||||
|
|
||||||
|
#### Набор данных titanic.csv
|
||||||
|
|
||||||
|
![alt text](titanic.png "titanic results")
|
||||||
|
|
||||||
|
Оценка модели 0.68
|
||||||
|
|
||||||
|
2 ключевых параметра, выделенных моделью: Age, Ticket(Fare)
|
||||||
|
|
||||||
|
#### Часть 2
|
||||||
|
|
||||||
|
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта» на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод.
|
||||||
|
|
||||||
|
#### Данные
|
||||||
|
|
||||||
|
Набор данных о машинах на вторичном рынке.
|
||||||
|
> Ссылка на набор данных: https://www.kaggle.com/datasets/harikrishnareddyb/used-car-price-predictions
|
||||||
|
|
||||||
|
#### Цель
|
||||||
|
|
||||||
|
С помощью дерева решений классифицировать цену автомобилей
|
||||||
|
|
||||||
|
#### Модель
|
||||||
|
|
||||||
|
Модель использованная в ходе эксперимента DecisionTreeClassifier из пакета sklearn
|
||||||
|
|
||||||
|
#### Набор данных true_car_listings.csv
|
||||||
|
|
||||||
|
![alt text](cars.png "cars results")
|
||||||
|
|
||||||
|
Выбранный начальный набор параметров:
|
||||||
|
|
||||||
|
- Mileage
|
||||||
|
- Year
|
||||||
|
- Model
|
||||||
|
|
||||||
|
**Количество данных:**
|
||||||
|
[30000 rows x 3 columns]
|
||||||
|
|
||||||
|
**Оценка:**
|
||||||
|
0.01
|
||||||
|
|
||||||
|
**Важность параметров:**
|
||||||
|
[0.8780813 0.04707369 0.074845 ]
|
||||||
|
|
||||||
|
Качество неудовлетворительное.
|
||||||
|
|
||||||
|
Параметр, имеющий самую большую значимость: Mileage(пробег)
|
||||||
|
|
||||||
|
### Вывод
|
||||||
|
|
||||||
|
Главный вывод работы, состоит в том, что модель DecisionTreeClassifier
|
||||||
|
не подходит для решения 2 части данной задачи, поэтому решение не может быть применено на практике.
|
||||||
|
|
||||||
|
Причина низкой точности модели заключается в том, что цена автомобиля на вторичном рынке зависит не только от пробега,
|
||||||
|
но и от множества других факторов, таких как кол-во аварий, общего состояние автомобиля и экономической обстановке на рынке -
|
||||||
|
и эти фаткоры могут оказывать такое же существенное воздействие на конечную цену. Однако, можно сделать выводы по влиянию
|
||||||
|
пробега автомобиля на его стоимость и использовать это в дальнейшем при реализации задач.
|
BIN
malkova_anastasia_lab_3/cars.png
Normal file
BIN
malkova_anastasia_lab_3/cars.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
30
malkova_anastasia_lab_3/cars.py
Normal file
30
malkova_anastasia_lab_3/cars.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from sklearn.tree import DecisionTreeClassifier
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
|
||||||
|
slice_size = 30000
|
||||||
|
data = pd.read_csv('true_car_listings.csv', index_col='Vin')[:slice_size]
|
||||||
|
|
||||||
|
unique_numbers = list(set(data['Model']))
|
||||||
|
data['Model'] = data['Model'].apply(unique_numbers.index)
|
||||||
|
|
||||||
|
clf = DecisionTreeClassifier(random_state=341)
|
||||||
|
|
||||||
|
# Выбираем параметры
|
||||||
|
Y = data['Price']
|
||||||
|
X = data[['Mileage', 'Year', 'Model']]
|
||||||
|
print(X)
|
||||||
|
|
||||||
|
# Разделяем набор на тренировочные и тестовые данные
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(
|
||||||
|
X, Y, test_size=0.2, random_state=42)
|
||||||
|
|
||||||
|
# Запуск на тренировочных данных
|
||||||
|
clf.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# Точность модели
|
||||||
|
print(f'Score: {clf.score(X_test, y_test)}')
|
||||||
|
|
||||||
|
# Значимость параметров
|
||||||
|
importances = clf.feature_importances_
|
||||||
|
print(f'Means {importances}')
|
1310
malkova_anastasia_lab_3/titanic.csv
Normal file
1310
malkova_anastasia_lab_3/titanic.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
malkova_anastasia_lab_3/titanic.png
Normal file
BIN
malkova_anastasia_lab_3/titanic.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
26
malkova_anastasia_lab_3/titanic.py
Normal file
26
malkova_anastasia_lab_3/titanic.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from sklearn.tree import DecisionTreeClassifier
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
|
||||||
|
data = pd.read_csv('titanic.csv', index_col='Passengerid')
|
||||||
|
clf = DecisionTreeClassifier(random_state=241)
|
||||||
|
|
||||||
|
# Выбираем параметры
|
||||||
|
Y = data['2urvived']
|
||||||
|
X = data[['Pclass', 'Age', 'Fare', ]]
|
||||||
|
print(X)
|
||||||
|
|
||||||
|
# Разделяем набор на тренировочные и тестовые данные
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(
|
||||||
|
X, Y, test_size=0.05, random_state=42)
|
||||||
|
|
||||||
|
# Запуск на тренировочных данных
|
||||||
|
clf.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# Точность модели
|
||||||
|
print(f'Score: {clf.score(X_test, y_test)}')
|
||||||
|
|
||||||
|
# Значимость параметров
|
||||||
|
importances = clf.feature_importances_
|
||||||
|
print(f'Means: {importances}')
|
||||||
|
|
852123
malkova_anastasia_lab_3/true_car_listings.csv
Normal file
852123
malkova_anastasia_lab_3/true_car_listings.csv
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user