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

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

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

Cтраница 32

train_url =


«http://s3.amazonaws.com/assets.datacamp.com/course/Kaggle/train.csv»


train = pd.read_csv (train_url)


test_url = «http://s3.amazonaws.com/assets.datacamp.com/course/Kaggle/test.csv»


test = pd.read_csv (test_url)


pd.read_csv () означает «Пожалуйста, выполни функцию read_csv (), которая обитает в библиотеке pd (pandas)». Фактически мы только что создали DataFrame (структуру данных) и обратились к одной из встроенных функций. Итак, теперь данные импортированы в виде двух наборов – обучающего и тестового. Мы используем данные переменной train, чтобы создать модель, и затем при помощи переменной test протестируем ее точность.

Посмотрим, что в заголовках первых строк обучающего набора данных:


print (train.head ())


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

Итак, перед нами данные в 12 колонках: PassengerId, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, и Embarked. Что же это все означает?

Чтобы ответить на этот вопрос, нам понадобится словарь данных, который обычно имеется в каждом пакете данных. Заглянув в него, мы выясняем:

Pclass = пассажирский класс (1 = 1-й; 2 = 2-й; 3 = 3-й)


Survived = выжил (0 = нет; 1 = да)

Name = имя

Sex = пол

Age = возраст (в годах жизни; выражен дробью, если возраст меньше единицы (1), если данные приблизительны, они выражены в виде хх.5)

SibSp = количество родственников / супругов на борту

Parch = количество родителей / детей на борту

Ticket = номер билета

Fare = пассажирский тариф (до 1970-го считались в британских фунтах)

Cabin = номер каюты

Embarked = в каком порту сел (а) на борт корабля (C = Чербург; Q = Квинстаун; S = Саутгемптон)


В большинстве колонок есть информация, в иных – нет. Так, например, у пассажира с идентификатором 1, мистера Оуэна Харриса Брода, в графе «Номер каюты» зафиксировано значение NaN, что означает «нечисленное выражение». NaN также не равняется нулю, поскольку 0 – это число. Таким образом, NaN подразумевает, что для этой переменной отсутствует значение. В обычной жизни разница может быть несущественной, однако она принципиально важна для компьютерных вычислений. Вспомните, насколько точность важна для языка математики. Например, значение NULL – пустое множество, оно не синонимично NaN или нулю.

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


print (test.head ())


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

Как мы видим, в пакете тестовых данных все те же графы, что и в обучающем, с той лишь разницей, что нет информации о выживших. Хорошо! Наша задача заключается в том, чтобы создать в тестовом пакете колонку Survived («Выжил»), в которой будут содержаться прогностические данные о каждом пассажире. (Конечно, кому-то уже может быть известен результат, но, если бы у нас на руках уже были ответы, это не было бы похоже на упражнение, не так ли?)

Итак, теперь нам предстоит запустить на обучающем наборе сводную статистическую обработку – это позволит лучше понять имеющуюся информацию. Интервьюирование данных – так мы это называем в дата-журналистике. По сути, мы «опрашиваем» данные так же, как опрашивали бы человека, у которого есть имя, возраст, собственная история. В свою очередь, у пакета с данными есть размер и набор колонок. Выяснение среднего значения колонки с данными напоминает ситуацию, в которой мы попросили бы человека написать его фамилию.

Ближе познакомиться с нашими данными мы можем при помощи функции под названием describe – она собирает сводные данные и формирует их в удобную таблицу:


train.describe ()


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

В пакете тренировочных данных содержится 891 запись. В 714 из них содержатся данные о возрасте пассажира. Согласно имеющимся у нас данным, средний возраст пассажира – 29,699118 лет; обычный человек сказал бы, что средний возраст пассажира составляет около 30.

Некоторые представленные данные требуют дополнительного пояснения: минимальное значение в колонке Survived составляет 0, максимальное – 1. Другими словами, это булевы значения: либо кто-то выжил (1), либо нет (0). Таким образом мы можем посчитать среднее значение – 0,38. Мы также можем посчитать среднее значение Pclass, пассажирского класса. Также цены билетов для 1-го, 2-го и 3-го класса. Здесь среднее значение не означает буквально, что кто-то путешествовал классом 2,308.

Выяснив кое-что о данных, которыми мы располагаем, обратимся к анализу. Посчитаем прежде всего количество пассажиров: для этого мы можем воспользоваться функцией value_counts. Она покажет, каково количество значений переменных для каждой категории в колонках. Иначе говоря, мы выясним, сколько пассажиров путешествовало каждым классом. Выясним:


train [ «Pclass»].value_counts ()


1 216

2 184

3 491


Name: Pclass, dtype: int64


Согласно обучающим данным, 491 пассажир путешествовал 3-м классом, 184 человек было во 2-м и 216 – в 1-м.

Теперь посмотрим на число выживших:


train [ «Survived»].value_counts ()

0 549

1 342

Name: Survived, dtype: int64


Обучающие данные показывают, что 549 человек погибли, 342 – выжили.

Посмотрим теперь на данные в процентном соотношении:


print (train [ «Survived»].value_counts (normalize = True))


0 0.616162

1 0.383838


Name: Survived, dtype: float64


62 % пассажиров погибли, 38 % остались в живых. Большинство погибло в крушении. Если бы мы собирались прогнозировать выживание случайного пассажира из нашего списка, то с бо́льшей вероятностью программа бы выдала отрицательный ответ.

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