0x00 Предисловие
Для использования данных, независимо от того, нужно ли нам понимать качество данных, калибр данных или происхождение данных, мы в конечном итоге перейдем к изучению ценности данных. Поэтому в этой статье делается попытка обсудить анализ признаков в интеллектуальном анализе данных.
В этой статье в качестве основной линии будет рассмотрен конкретный пример для обсуждения основного процесса анализа признаков.
Тема и данные — конкурс начального уровня «Титаник: машинное обучение после катастрофы» в Kaggle. Предыстория темы - предсказать, переживет ли человек бедствие.
Обзор функций 0x01
Давайте посмотрим, какие данные у нас есть в целом.Данный набор данных выглядит следующим образом, всего 10 полей, из которых выживание указывает, выжил ли наконец пассажир.
имя поля | значение | описывать |
---|---|---|
survival | Survival | 0 = No, 1 = Yes |
pclass | Ticket class | 1 = 1st, 2 = 2nd, 3 = 3rd |
sex | Sex | |
Age | Age in years | |
sibsp | # of siblings / spouses aboard the Titanic | |
parch | # of parents / children aboard the Titanic | |
ticket | Ticket number | |
fare | Passenger fare | |
cabin | Cabin number | |
embarked | Port of Embarkation | C = Cherbourg, Q = Queenstown, S = Southampton |
Затем взгляните на то, как примерно выглядят данные:
train_df = pd.read_csv('../input/train.csv')
train_df.head()
Использование встроенных функций панд позволяет легко увидеть распределение данных, таких как среднее и минимальное значения возраста.
train_df.describe(include='all')
0x02 Функция Описание
Дальнейшие действия будут включать:
- Является ли функция значимой: например, идентификатор пользователя, уникальный идентификатор, принадлежащий пользователю, не имеет значения для анализа.
- Узнайте тип данных функции: скажем, является ли функция категориальной функцией?
- Ситуация с пропущенными значениями: сколько пропущенных значений, и более 80% пропущенных значений?
Выше приведено базовое содержание анализа.После завершения анализа будут соответствующие методы обработки, такие как выбор признаков, преобразование признаков, обработка отсутствующих значений и т. д. Мы не будем описывать здесь конкретные шаги.
0x03 Влияние функции
Прежде чем приступить к разработке различных функций, стоит провести некоторый анализ влияния различных функций.
Интуитивно мы предполагаем, что эти характеристики будут иметь относительно большое влияние на то, будет ли человек в конечном итоге спасен:
- Pclass (позиция): люди из первого класса с большей вероятностью будут иметь приоритет?
- Секс: сначала дамы, так проще первым попасть на борт?
- Возраст: сначала пожилые и дети?
Исходя из этих предположений, мы анализируем эти характеристики отдельно:
Давайте посмотрим на спасение различных P-классов с помощью следующего утверждения.
train_df[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean().sort_values(by='Survived', ascending=False)
Id | Pclass | Survived |
---|---|---|
0 | 1 | 0.629630 |
1 | 2 | 0.472826 |
2 | 3 | 0.242363 |
Давайте посмотрим на ситуации, в которых разный пол спасается с помощью следующего утверждения.
train_df[["Sex", "Survived"]].groupby(['Sex'], as_index=False).mean().sort_values(by='Survived', ascending=False)
Id | Sex | Survived |
---|---|---|
0 | female | 0.742038 |
1 | male | 0.188908 |
При анализе возраста нам нужно сделать простую сегментацию возраста, Мы напрямую используем функцию Pandas, чтобы разделить возраст на 7 сегментов. (Такая оценка не очень разумна и хороша только как объяснение.)
train_df['AgeBand'] = pd.cut(train_df['Age'], 7)
train_df[['AgeBand', 'Survived']].groupby(['AgeBand'], as_index=False).mean().sort_values(by='AgeBand', ascending=True)
Id | AgeBand | Survived |
---|---|---|
0 | (0.34, 11.789] | 0.573529 |
1 | (11.789, 23.157] | 0.359551 |
2 | (23.157, 34.526] | 0.399142 |
3 | (34.526, 45.894] | 0.417910 |
4 | (45.894, 57.263] | 0.411765 |
5 | (57.263, 68.631] | 0.346154 |
6 | (68.631, 80.0] | 0.142857 |
Эти характеристики имеют значение?
Благодаря приведенному выше анализу мы можем увидеть некоторые явления:
- Выживаемость пассажиров с разным положением сильно различается, интуитивно понятно, чем лучше положение, тем больше выживает.
- У женщин выживаемость составляет 74%, а у мужчин всего около 18 лет.
- Выживаемость детей выше, выживаемость пожилых людей ниже
То есть все три функции, которые мы предположили, являются влиятельными. После того, как мы поймем влияние различных функций на результаты, можно ли продолжить?
Конечно нет.Существует также влияние сочетания характеристик,таких как влияние возраста.В настоящее время выживаемость в возрасте от 20 до 50 лет аналогична,но значит ли это,что самец на самом деле очень низкий,и большинство выживших это женщины, а то женщины подтягивают общую выживаемость?
0x04 Комбинация функций
Это комбинация функций, давайте возьмем возраст и пол в качестве комбинированной функции, чтобы увидеть влияние
train_df['AgeBand'] = pd.cut(train_df['Age'], 7)
train_df[['AgeBand','Sex', 'Survived']].groupby(['AgeBand','Sex'], as_index=False).mean().sort_values(by='AgeBand', ascending=True)
Id | AgeBand | Sex | Survived |
---|---|---|---|
0 | (0.34, 11.789] | female | 0.593750 |
1 | (0.34, 11.789] | male | 0.555556 |
2 | (11.789, 23.157] | female | 0.753623 |
3 | (11.789, 23.157] | male | 0.110092 |
4 | (23.157, 34.526] | female | 0.772152 |
5 | (23.157, 34.526] | male | 0.207792 |
6 | (34.526, 45.894] | female | 0.764706 |
7 | (34.526, 45.894] | male | 0.204819 |
8 | (45.894, 57.263] | female | 0.826087 |
9 | (45.894, 57.263] | male | 0.200000 |
10 | (57.263, 68.631] | female | 1.000000 |
11 | (57.263, 68.631] | male | 0.105263 |
12 | (68.631, 80.0] | female | NaN |
13 | (68.631, 80.0] | male | 0.142857 |
Из таблицы хорошо видно, что выживаемость женщин той же возрастной группы значительно выше, чем у мужчин.
0xFF Сводка
Мы просто делим процесс машинного обучения на: сбор данных, разработку функций, обучение модели, оценку модели и онлайн-модель.
Среди них разработка функций является очень важной частью, и при разработке функций невозможно имитировать различные методы обработки.Сначала вы должны выполнить анализ функций.Только когда анализ и понимание функций на месте, может быть больше ценности постучал.
Добро пожаловать в мой публичный аккаунт WeChat! Придерживайтесь обмена оригинальными технологиями, ваша поддержка побудит меня продолжать творить! наградаWeChat Pay
- Автор этой статьи:Мастер Мудонг
- Ссылка на эту статью: Город Муданьцзян.info/2018/04/15/…
- Уведомление об авторских правах:Все статьи в этом блоге, если не указано иное, используютCC BY-NC-SA 3.0соглашение. Пожалуйста, укажите источник!