Книга Искусственный интеллект, страница 34. Автор книги Мередит Бруссард

Разделитель для чтения книг в онлайн библиотеке

Онлайн книга «Искусственный интеллект»

Cтраница 34

Посмотрим на данные.


# Напечатать данные, чтобы увидеть доступные признаки

print (train)


Искусственный интеллект
Искусственный интеллект
Искусственный интеллект
Искусственный интеллект
Искусственный интеллект
Искусственный интеллект

Если вы прочли все эти сотни строк – браво; если же вы их попросту пропустили, то я не удивлена. Я вывела вам столько строк данных специально, чтобы показать, каково это, быть аналитиком данных. Работа с колонками чисел кажется бессмысленной и иногда весьма утомительной. Есть в работе с данными что-то антигуманное. Непросто каждую секунду помнить о том, что за этим массивом цифр скрываются реальные люди с собственными надеждами, мечтами, семьями и историей.

Итак, мы познакомились с сырыми данными, теперь приступим к их обработке. Превратим их в массивы, структуры, которыми компьютер может манипулировать:


# Задать цели и свойства массивов: 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 %. Машина только что «выучила» процесс создания математической модели. А сама модель хранится в объекте под названием my_tree_one.

Теперь попробуем применить эту модель к тестовому пакету данных. Обратим внимание, что в нем нет колонки с данными о выживших. Наша задача заключается в том, чтобы при помощи созданной модели попытаться выяснить, выжил пассажир либо нет. Нам известно, что наибольшее влияние на результат имеет стоимость билетов, однако пассажирский класс (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)

# Составим прогноз, используя тестовый набор данных, и выведем результат

my_prediction = my_tree_one.predict (test_features)

print (‘This is the prediction: n’)

print (my_prediction)

# Выведем данные в две колонки: PassengerId и прогноз выживания

PassengerId =np.array (test [ «PassengerId»]). astype (int) my_solution = pd.DataFrame (my_prediction, PassengerId, columns = [ «Survived»])

print (‘This is the solution in toto: n’)

print (my_solution)

# Проверим, что у нас 418 строк данных

print (‘This is the solution shape: n’)

print (my_solution.shape)

# Записать результаты в. CSV-файл my_solution.csv

my_solution.to_csv (“my_solution_one.csv,” index_label = [“PassengerId”])


А вот и результат:


These are the features:

[[3. 1. 34.5 7.8292]

[3. 0. 47. 7.]

[2. 1. 62. 9.6875] …,

[3. 1. 38.5 7.25]

[3. 1. 27. 8.05]

[3. 1. 27. 22.3583]]

Вход
Поиск по сайту
Ищем:
Календарь
Навигация