- •Лабораторная работа № 4
- •Шаги работы
- •Описание выборкиНабор данных о пассажирах Титаника – Titanic
- •Разведочный анализ
- •Зависимости признаков
- •Данные по посадке пассажиров
- •Тепловые карты признаков
- •Можно сделать вывод, что высоких корреляций не наблюдается. Мы можем выделить заметные соотношения
- •Транспортные расходы
- •Восполнение недостающих данных
- •Предсказание возраста
- •Предсказание возраста
- •Конструирование признаков
- •Итоговые данные для прогнозирования
- •Прогнозирование: на исходных признаках
- •Дерево решений
- •Логистическая регрессия
- •Прогнозирование: с сконструированными признаками
- •Логистическая регрессия
- •Случайный лес
- •Градиентный бустинг
- •Работа модели на новых данных
- •Тестовый датасет не имеет информации о том, выжил ли пассажир. Это предстоит узнать
- •Дерево решений с тюнингом гиперпараметров
- •Результат работы на новых данных
Логистическая регрессия
precision recall |
f1-score |
support |
|
||||
0 |
0.85 |
0.88 |
0.86 |
275 |
|
||
1 |
0.79 |
0.75 |
0.77 |
171 |
|
||
accuracy |
0.82 |
|
0.83 |
|
446 |
446 |
|
macro avg |
0.82 |
0.82 |
|||||
weighted avg |
0.83 |
0.83 |
|
0.83 |
446 |
Случайный лес
precision recall |
f1-score |
support |
|
||||
0 |
0.82 |
0.87 |
0.85 |
184 |
|
||
1 |
0.76 |
0.69 |
0.73 |
111 |
|
||
accuracy |
0.79 |
|
0.80 |
|
295 |
295 |
|
macro avg |
0.78 |
0.79 |
|||||
weighted avg |
0.80 |
0.80 |
|
0.80 |
295 |
Градиентный бустинг
precision recall |
f1-score |
support |
|
||||
0 |
0.86 |
0.88 |
0.87 |
275 |
|
||
1 |
0.79 |
0.77 |
0.78 |
171 |
|
||
accuracy |
0.83 |
|
0.83 |
|
446 |
446 |
|
macro avg |
0.82 |
0.82 |
|||||
weighted avg |
0.83 |
0.83 |
|
0.83 |
446 |
Работа модели на новых данных
Тестовый датасет не имеет информации о том, выжил ли пассажир. Это предстоит узнать нашему обученному классификатору.
Дерево решений с тюнингом гиперпараметров
from sklearn.model_selection import GridSearchCV
pr=["Pclass", "Age", "Fare", "Sex", 'Family', 'Emb_C','Emb_Q','Emb_S', 'Alone', 'Parch', 'SibSp']
X = bb_final[pr]
y = bb_final['Survived']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1) params = [{'criterion':['gini','entropy'], 'max_depth': [4,5,6,7,8,9,10,11,12,15,20,30,40,50,70,90,120,150, None], 'splitter': ['best', 'random']}]
clf = GridSearchCV(DecisionTreeClassifier(), param_grid=params, cv=5) clf = clf.fit(X_train,y_train)
y_pred = clf.predict(aa_final[pr]) print(y_pred)