Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дашин_ЛБ4.pptx
Скачиваний:
2
Добавлен:
26.01.2024
Размер:
1.01 Mб
Скачать

Транспортные расходы

Восполнение недостающих данных

В данном случае стоит попытаться восстановить возраст пассажиров, у которых отсутствуют эти данные. Так как у 20% выборки имеются пропуски, то восполнить их будет правильнее, чем лишить себя такого объема информации.

Fare и Embarked имеют буквально несколько незаполненных записей, поэтому они будут заменены медианным значением.

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

Предсказание возраста

Для построения регрессионной модели я разделил записи по наличию данных о возрасте.

bb_clearAge=bb_clear[ np.isnan(bb_clear['Age']) != True ] bb_NoAge=bb_clear[ np.isnan(bb_clear['Age']) == True ]

По данным с заполненным возрастом будет построена регрессионная модель, на основе которой будут предсказан возраст пассажиров с недостающими записями.

Для этого мы разделим выборку с данными возраста на обучающую и тестовую для проверки точности нашей регрессионной модели.

В качестве целевого признака будет выступать возраст, его будем получать на основе класса пассажира и количестве его родственников и членов семьи.

X=aa_clearAge[['Pclass', 'SibSp','Parch']] y=aa_clearAge['Age']

Модель из примера получена с помощью метода случайного леса.

Предсказание возраста

Оценки полученные для регрессии:

Mean Absolute Error: 10.235169491525424 Mean Squared Error: 165.55066864406783 Mean Root Squared Error: 12.866649472340024

Можем сделать вывод, что средняя абсолютная ошибка на данных, предсказанных регрессором составляет около 10 лет. Этот разброс будет меньшим, чем если бы мы оставили медианное значение 30 лет для всей выборки. Так для взрослых людей ошибка бы могла составить до 40-50 лет

Заполним недостающие данные о возрасте значениями, предсказываемыми регрессионной моделью:

bb_NoAge['Age']=np.around( regr.predict(bb_NoAge[['Pclass', 'Family']]) , 0) bb_PredAge=bb_NoAge.append(bb_clearAge)

Конструирование признаков

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

Чтобы использовать данные о посадке пассажиров введем новые признаки Emb_C, Emb_Q, Emb_S которые будут нести информацию о том, сел ли пассажир в этом порту или нет.

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

Итоговые данные для прогнозирования

Прогнозирование: на исходных признаках

Дерево решений: pr=["Pclass", "Age", "Fare", "Sex"] X = bb_PredAge[pr] y = bb_PredAge['Survived']

Дерево решений

precision recall

f1-score

support

 

0

0.82

0.86

0.84

184

 

1

0.75

0.68

0.71

111

 

accuracy

0.78

 

0.79

 

295

295

macro avg

0.77

0.78

weighted avg

0.79

0.79

 

0.79

295

Логистическая регрессия

precision recall

f1-score

support

 

0

0.83

0.87

0.85

184

 

1

0.77

0.71

0.74

111

 

accuracy

0.80

 

0.81

 

295

295

macro avg

0.79

0.79

weighted avg

0.81

0.81

 

0.81

295

Прогнозирование: с сконструированными признаками

Дерево решений

pr=["Pclass", "Age", "Fare", "Sex", 'Family', 'Emb_C','Emb_Q','Emb_S', 'Alone

X = bb_final[pr] y = bb_final['Survived']

 

precision recall

f1-score

support

 

0

0.81

0.93

0.87

184

 

1

0.85

0.64

0.73

111

 

accuracy

0.83

 

0.82

 

295

295

macro avg

0.78

0.80

weighted avg

0.82

0.82

 

0.81

295

Соседние файлы в предмете Интеллектуальный Анализ Данных