Если вы прочли все эти сотни строк – браво; если же вы их попросту пропустили, то я не удивлена. Я вывела вам столько строк данных специально, чтобы показать, каково это, быть аналитиком данных. Работа с колонками чисел кажется бессмысленной и иногда весьма утомительной. Есть в работе с данными что-то антигуманное. Непросто каждую секунду помнить о том, что за этим массивом цифр скрываются реальные люди с собственными надеждами, мечтами, семьями и историей.
Итак, мы познакомились с сырыми данными, теперь приступим к их обработке. Превратим их в
# Задать цели и свойства массивов: target, features_one
target = train [ «Survived»].values
# Предварительная обработка
encoded_sex = preprocessing.LabelEncoder ()
# Преобразование
train.Sex = encoded_sex.fit_transform (train.Sex)
features_one = train [[“Pclass,” “Sex,” “Age,” “Fare”]].values
# Подобрать первое дерево решений: my_tree_one
my_tree_one = tree.DecisionTreeClassifier () my_tree_one = my_tree_one.fit (features_one, target)
Мы только что запустили функцию под названием fit (подборка) на классификаторе, основанном на дереве принятия решений под названием my_tree_one. Признаки, которые мы ходим принять в расчет: Pclass, Sex, Age и Fare. Мы просим алгоритм выяснить, какая существует взаимосвязь между этими четырьмя факторами и целевым полем Survived:
# Посмотрим на значимость и оценку включенных признаков
print (my_tree_one.feature_importances_)
[0.12315342 0.31274009 0.22675108 0.3373554]
Переменная feature_importances показывает статистическую значимость каждого прогностического фактора.
Наибольшее число указывает на наивысшее значение из всей группы:
Pclass = 0,1269655
Sex = 0,31274009
Age = 0,23914906
Fare = 0,32114535
Fare (пассажирский тариф) – самое большое число. Можно сделать вывод, согласно которому стоимость билета была наиболее весомым фактором, повлиявшим на выживание пассажиров во время крушения «Титаника».
На этом этапе работы с данными мы проверим, насколько верны наши оценки с точки зрения математики. Воспользуемся функцией score:
print (my_tree_one.score (features_one, target))
0.977553310887
Ух ты, 97 %! Выглядит впечатляюще. Если бы я получила 97 % на экзамене, я была бы счастлива. Можно сказать, что наша модель точна на 97 %. Машина только что «выучила» процесс создания математической модели. А сама модель хранится в объекте под названием
Теперь попробуем применить эту модель к тестовому пакету данных. Обратим внимание, что в нем нет колонки с данными о выживших. Наша задача заключается в том, чтобы при помощи созданной модели попытаться выяснить, выжил пассажир либо нет. Нам известно, что наибольшее влияние на результат имеет стоимость билетов, однако пассажирский класс (Pclass), пол (Sex) и возраст (Age) также имеют значение. Применим данные к тестовому пакету и посмотрим, что получится:
# Возместим отсутствующие данные о тарифе с помощью медианных значений
test [ «Fare»] = test [ «Fare»].fillna (test [ «Fare»].median ())
# Возместим отсутствующие данные о возрасте с помощью медианных значений
test [ «Age»] = test [ «Age»].fillna (test [ «Age»].median ())
# Предварительная обработка
test_encoded_sex = preprocessing.LabelEncoder () test.Sex = test_encoded_sex.fit_transform (test.Sex)
# Извлечем необходимые признаки Pclass, Sex, Age, и Fare из тестового набора данных:
test_features = test [[ «Pclass,» «Sex,» «Age,» «Fare»]].values
print (‘These are the features: \ n’)
print (test_features)
# Составим прогноз, используя тестовый набор данных, и выведем результат