Читать книгу "Искусственный интеллект - Мередит Бруссард"
Шрифт:
Интервал:
Закладка:
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 % остались в живых. Большинство погибло в крушении. Если бы мы собирались прогнозировать выживание случайного пассажира из нашего списка, то с бо́льшей вероятностью программа бы выдала отрицательный ответ.
Внимание!
Сайт сохраняет куки вашего браузера. Вы сможете в любой момент сделать закладку и продолжить прочтение книги «Искусственный интеллект - Мередит Бруссард», после закрытия браузера.