Web-studio46.ru

Обучение и образование
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Тренинг титаник описание

Упражнение-вызов «Титаник»

Основные — это упражнения, в которых непосредственно тренируются те навыки и умения, за которыми участники пришли на тренинг. Это главные упражнения на тренинге. Они обычно построены так, чтобы каждый участник тренинга смог потренироваться . Подробнее о типах упражнений можно почитать здесь.

Вызовы — сильные и запоминающиеся упражнения, цель которых привлечь внимание группы к определенным темам тренинга, привести группу к важным осознаниям. Они часто достаточно сложные, вызывают активный интерес группы, повышают мотивацию участников . Подробнее о типах упражнений можно прочитать здесь.

Упражнение «Титаник» — крайне эффективное командообразующее упражнение, требующее участия и тотальной вовлеченности всей группы. Перед участниками ставится сложнейшая задача, решить которую можно только совместными усилиями, мобилизовав все свои личностные качества, деловые навыки и умение работать в команде.

«Титаник» особенно подходит для тренингов командообразования и тренингов личностного роста. Будет также отличным упражнением для тренировки участников, которым в жизни часто приходится решать задачи, требующие проявления лидерских качеств, креативности, активности в нестабильных обстоятельствах.

Упражнение крайне богатое на выводы, и управляя процессом, ведущий легко может смещать акценты данного упражнения в зависимости от темы тренинга. В тренинге командообразования — на умение работать в команде. В тренинге личностного роста — на личностные качества участников и их умение находить решения в трудной ситуации. На тренинге коммуникативных навыков – на умение договариваться, убеждать и слушать. На тренинге лидерских качеств или тренинге руководителей — на поиск лучших стратегий в стрессовой ситуации, распределении ролей и лидерских навыков.

Упражнение «Титаник» гарантировано «цепляет» участников тренинга и запоминается как одно из самых ярких упражнений тренинга. Это упражнение может быть доступно и начинающим тренерам, но особенной «жемчужиной» оно будет в руках опытного тренера.

Упражнение может быть проведено в двух вариантах: как вызов и как основное упражнение. Оба варианта описаны в тренерской методичке.

Объем предлагаемой тренерской методички упражнения: 8 страниц.
Бонус! К методичке прилагается вариант подходящего музыкального сопровождения.

Почему вам стоит приобрести это упражнение на Тренерской.ру:

  1. Это уникальная, детально разработанная тренерская методичка проведения упражнения с возможными вариантами речи тренера, с конкретными вопросами, которые стоит задать на рефлексии, с разбором сложных ситуаций, которые могут произойти на группе.
  2. Подобную тренерскую методичку упражнения Вы не найдете больше нигде . Она разрабатывалась командой профессиональных тренеров специально для проекта Тренерская.ру.
  3. С нашей методичкой, как с навигатором, Вы проведете упражнение намного эффектнее и результативнее!
  4. Это упражнение отличается яркостью и масштабностью , оно станет настоящим украшением Вашего тренинга.
  5. Чтобы разработать для вас эту методичку сразу несколько профессионалов высокого уровня работали над ней более 15 часов ! Вы получаете её по символической цене , которую вы платите один раз, а использовать упражнение будете много лет.

Оплатить упражнение для тренинга на портале Trenerskaya . ru просто:

1. Зарегистрируйтесь и войдите в личный кабинет под своим логином и паролем.

2. Пополните свой личный счет на сайте. Для этого:
— нажмите кнопку «Купить»,
— выберите удобный способ оплаты. Самый быстрый способ – картой. Другие варианты оплаты и длительность зачисления денег посмотрите здесь .

3. Убедитесь, что деньги зачислены на личный счет и выкупите материалы: нажмите «Купить» еще раз. Деньги спишутся с личного счета, а методичка тут же придет на почту и сохранится в личном кабинете.

По вопросам, связанным с оплатой, пишите на info.trenerskaya@gmail.com

Внимание! Вы также можете приобрести супер-выгодный полный доступ ко всем материалам сайта .

Руководство по машинному обучению для начинающих: модель прогноза выживших на «Титанике»

Руководство по машинному обучению для начинающих: модель прогноза выживших на «Титанике»

  • Переводы , 27 августа 2017 в 21:35
  • Евгений Туренко

Начало работы

Многие другие руководства по машинному обучению рассчитаны на то, что ученик уже является кандидатом наук в области математики или статистики. Настоящее руководство написано для тех, кто раннее не был знаком с машинным обучением.

Формат работы: вы начнёте с введения в машинное обучение на основе написания алгоритма, который будет предсказывать, сколько человек выживет при крушении «Титаника». Затем последуют две тренировочные сессии. Руководство будет направлять вас в дальнейшей работе, но код вы должны будете писать самостоятельно.

Требуемые знания: предполагается, что вы уже имеете опыт работы с Python или знаете его на уровне выше базового. Также предполагается, что вы знакомы с Pandas на базовом уровне. Если вы желаете подтянуть знания по Pandas, предлагаем ознакомиться со специальной статьёй. Также предлагаем вам посмотреть курс по основам Pandas.

Разработка будет выполняться с использованием Ipython (если вы раньше не работали с этой оболочкой, можете посмотреть вводный видеоурок и ознакомиться с командной оболочкой для интерактивных вычислений Jupyter Notebook в нашей статье). По определённым причинам рекомендуется использовать пакет Anaconda с Python 3.

Введение в машинное обучение

В презентации вам дано небольшое задание на проверку логики (чем чаще вы будете уделять время на подобные упражнения, тем лучше вы сможете организовать рабочий процесс). Следует открыть файл titanic_train.csv и определить, какие поля, на ваш взгляд, имеют наибольшее значение для обучения. Вы можете сделать это сейчас, чтобы в середине статьи сравнить свой результат и результат автора.

Машинное обучение с Python

Исходный код, с которым вы будете работать, доступен на платформе Github. Для его загрузки регистрация не требуется. Titanic_Machine_Learning.ipynb — название файла, с которым вам предстоит работать.

Начнём с импорта основных библиотек: Pandas и Numpy.

Для машинного обучения будет использоваться алгоритм Random Forest. На данный момент вам не нужно знать, как он работает (но в будущем обязательно изучите), но вам нужно знать, как его следует применять в деле.

Если вы посмотрели презентацию (что действительно стоило сделать, иначе вы не сможете следовать половине кода), вы знаете, что нужно разделять данные для теста и для тренировки, чтобы не произошло переобучение. Поэтому нужно импортировать функцию train_test_split() .

Теперь давайте отключим предупреждения от Pandas.

Пришло время импортировать функцию joblib . Она будет использоваться для написания модели в файле для повторного использования.

Теперь нужно открыть файл с расширением csv в Pandas. (Вы можете сделать это с помощью Excel или OpenOffice.)

Вы увидите что-то вроде таблицы сверху (обращаем внимание, что некоторые колонки не отображены из-за чрезмерной ширины таблицы).

«Новые Облачные Технологии», Москва, от 70 000 ₽

Посмотрите на колонку age. В таблице на изображении выше нет ячеек со значением NaN, что означает, что нет данных. В нашем случае есть просто пустые ячейки. Но обратите внимание, что NaN и пустая ячейка — одно и то же.

В презентации вам было дано задание: нужно было найти полезные, на ваш взгляд, входные данные для алгоритма.

Ожидаемые выходные данные — данные, которые мы получим в колонке survived (выжившие). Как насчёт входных данных?

Вы ведь смотрели фильм «Титаник»? (Если нет, то сейчас будет спойлер: он утонет.) Когда пришло время распределения людей по шлюпкам, больше шансов на спасение имели обладатели билетов первого класса. Также предпочтение отдавалось женщинам и детям.

Таким образом мы можем определить, что наиболее важные моменты, определяющие шанс спасения, это класс билета, возраст и пол.

Если вы женщина солидного возраста с детьми и с билетом первого класса, то вам повезло — вероятность выжить увеличивается.

Если же речь идёт о мужчине среднего возраста с билетом третьего или второго класса, то шансов на выживание становится в разы меньше. Всё как в фильме. Несмотря на то, что в таблице также указана цена билета, нам важнее знать, к какому классу относится этот билет. Если к первому, то шансы на выживание заметно возрастают.

Давайте вернёмся к пустым ячейкам. Мы не можем их оставить пустыми, потому что нам нужна информация в них для выполнения вычислений.

Решение проблемы: заменяем пустые поля медианой.

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

  • Среднее арифметическое — сумма чисел вы выборке, делённая на количество чисел в выборке. Пример: вы написали 5 строк кода, ваш друг написал 9 строк кода, ваша подруга написала 7 строк кода. В среднем вы все написали по 7 строк: 5 + 9 + 7 = 21, 21 / 3 = 7.
  • Медиана (серединное число) — это такое число выборки, при котором половина значений выборки больше него, а другая половина меньше него. Пример: 1, 2, 5, 10, 21, 33, 57. Медианой в данном случае будет 10, так как числа слева меньше, а числа справа больше и с обеих сторон расположено одинаковое количество чисел.
  • Мода — самое повторяющееся число из всех повторяющихся.

В нашем случае сейчас будем использовать медиану для определения возраста.

Можно подсчитать медиану с помощью функции median() в Pandas, из примера выше видно, что медианой является число 29.

Теперь нужно заменить пустые значения в колонке age на значение медианы. Для этого следует использовать функцию fillna() .

Помните пустые (NaN) значения? Теперь они заменены на 29.

Теперь нужно извлечь три нужных нам поля: class (класс), age (возраст), sex (пол).

Для чего это нужно делать?

Это делается для того, чтобы не запутать алгоритм и не создавать лишний шум.

Ожидаемые выходные данные:

Как видите, у нас возникла проблема. Алгоритмы в библиотеке Scikit, которая используется, работают только с числами. Иначе говоря, алгоритм не понимает, что 1st — первый класс.

Давайте исправим проблему. Просто заменим 1st на 1 , 2nd на 2 , 3d на 3 . Элементарно!

Теперь проблема с классом исправлена. Возраст выставлен правильно. Остаётся поправить проблему с полом.

Будем использовать функцию np.where() , которая не является интуитивной.

Функция заменила female на 0 и male на 1 .

Тестирование для предотвращения переобучения

Как вы могли запомнить из презентации, данные были разделены на набор для тестирования и на набор для обучения. Учебный набор используется для тренировки алгоритма, в то время как набор для теста используется для выявления точности алгоритма. (Так как у нас есть предполагаемые выходные данные, мы можем сравнить их с результатами алгоритма и вычислить процент неточности.)

Пришло время разделить наборы данных. Хотя это и можно сделать вручную, в руководстве это будет выполнено с помощью встроенной функции. Она также будет выполнять другие задачи. Например, перетасовывать данные для нас.

Функция возвращает учебные входные и выходные данные, а также выходной набор данных.

test_size=0.33 значит, что 33% набора данных будет использоваться для тестирования, остальное — для обучения. random_state используется для запуска встроенного генератора случайных выборок.

Давайте выведем несколько значений:

Теперь нужно запустить машинное обучение.

Создаём образец алгоритма Random forest.

Функция fit() используется для обучения нашего алгоритма. Он берёт часть выходных данных и пытается приблизить свой результат к ним. Поэтому мы и сузили поля для сканирования, теперь у алгоритма нет серьёзных помех, которые могли бы быть из-за прочей информации.

В идеале образец алгоритма научится предсказывать количество выживших корабле. Давайте проверим точность алгоритма.

Функция score() работает с тестовыми входными данными и выясняет, насколько точным является прогноз на основе известных выходных тестовых данных.

В примере выше показана точность, которая составила 79%. Мы узнаем, на сколько это хорошо, только когда сможем сравним с чем-нибудь.

Последний шаг близок. Всё это время тренировался алгоритм. Но нам ведь не нужно, чтобы он всё время повторял этот процесс. (Если каждый день складывать одни и те же числа, то умнее человек не станет, верно?) Следующая часть статьи не отнимет у вас много времени, так как наш набор данных невелик.

Мы можем записать модель машинного обучения в файл, чтобы в будущем иметь возможность использовать её повторно.

Раньше для этого использовалась библиотека Pickle, но функция joblib.dump намного проще. Применение compress=9 является необходимым условием, в противном случае будут созданы десятки файлов.

Практика

В этой секции созданный алгоритм машинного обучения будет запущен в новом файле.

Работать предстоит с новым файлом, который раннее не использовался — titanic_test.csv . Он был создан с использованием оригинальных данных, от которых были отсечены 30% данных.

Извлеките из набора данные класса и пола, как мы это сделали для первой практики.

Теперь нужно взять входные данные и пропустить их через прогнозирующую функцию:

Сверху вы видите пустую функцию predict() . Вам нужно сделать predict(data) , чтобы прогнозирование запустить.

На этом урок закончен. Спасибо за внимание!

Решение задачи Титаник на Kaggle для начинающих

Титаник — известная задача на Kaggle, ориентированная в большей мере на начинающих в машинном обучении. Датасет Титаник содержит данные пассажиров корабля. Цель задачи — построить модель, которая лучшим образом сможет предсказать, остался ли произвольный пассажир в живых или нет.

Перевод статьи A beginner’s guide to Kaggle’s Titanic problem, автор — Sumit Mukhija, ссылка на оригинал — в подвале статьи.

Я разработчик программного обеспечения, ставший энтузиастом в анализе данных. Недавно я начал постигать тонкости Data Science. Когда я начал изучать видеокурсы на таких сайтах, как Udemy, Coursera и т.д., из-за одной задачи у меня пропало желание решать ее и другие задачи, и я стал больше слушать и меньше делать. У меня не было практики, хотя я понимал большую часть теории.

В этот момент я наткнулся на Kaggle, сайт с набором задач в области Data Science и соревнованиями, проводимыми несколькими крупными технологическими компаниями, такими как Google. Во всем мире Kaggle известен своими интересными, сложными и очень захватывающими задачами. Одной из таких задач является датасет Титаник.

Подводя итог, можно сказать, что задача Титаник основана на потоплении «непотопляемого» корабля «Титаник» в начале 1912 года. Она дает вам информацию о пассажирах, такую как их возраст, пол, число братьев и сестер, порт посадки и выжили ли они или нет в катастрофе. Основываясь на этой информации, вы должны предсказать, сможет ли произвольный пассажир на Титанике пережить затопление.

Звучит легко, правда? Нет. Постановка задачи является лишь верхушкой айсберга.

Используемые библиотеки

  1. Pandas
  2. Seaborn
  3. Sklearn
  4. WordCloud

Начальный этап

На начальном этапе рассматривались признаки полного датасета. Здесь я не пытался производить действия над признаками, а просто наблюдал их значения.

1. Загрузка данных

Я сразу загрузил данные из train и test датасетов. Полученный датасет имел 1309 строк и 12 столбцов. Каждая строка представляла уникального пассажира Титаника, а в каждом столбце содержались количественные или категориальные признаки для каждого пассажира.

2. Пропущенные значения

В датасете было несколько столбцов, в которых отсутствовали значения. Признак «Cabin» имел 1014 пропущенных значений. Столбец «Embarked», который отображал пункт посадки пассажиров, имел всего 2 пропущенных значения. В признаке «Age» было 263 пропущенных значения, а в столбце «Fare» — одно.

3. Категориальные признаки

Далее, чтобы определить категориальные признаки, я взглянул на количество уникальных значений в каждом столбце. Признаки «Sex» и «Survived» имели два возможных значения, а «Embarked» и «Pclass» имели три возможных значения.

Признаки

Получив лучшее представление о различных аспектах датасета, я начал исследовать признаки и роль, которую они сыграли в выживании или гибели путешественника.

1. Survived

Первый признак показывал, выжил ли пассажир или умер. Сравнение показало, что более 60% пассажиров умерли.

2. Pclass

Этот признак показывает класс, которым следовал пассажир. Пассажиры могли выбрать из трех отдельных классов, а именно: класс 1, класс 2 и класс 3. Третий класс имел наибольшее количество пассажиров, затем класс 2 и класс 1. Количество пассажиров в третьем классе было больше, чем количество пассажиров в первом и втором классе вместе взятых. Вероятность выживания пассажира класса 1 была выше, чем пассажира класса 2 и класса 3.

3. Sex

Примерно 65% пассажиров составляли мужчины, а остальные 35% — женщины. Тем не менее, процент выживших женщин был выше, чем число выживших мужчин. Более 80% мужчин умерли, в сравнении с примерно 70% женщинами.

4. Age

Самому молодому путешественнику на борту было около двух месяцев, а самому старшему — 80 лет. Средний возраст пассажиров на борту был чуть менее 30 лет. Большая часть детей в возрасте до 10 лет выжила. В любой другой возрастной группе число жертв было выше, чем число выживших. Более 140 человек в возрастной группе 20-30 лет погибли в сравнении с примерно 80 выжившими того же возраста.

5. SibSp

SibSp — это число братьев, сестер или супругов на борту у человека. Максимум 8 братьев и сестер путешествовали вместе с одним из путешественников. Более 90% людей путешествовали в одиночку или с одним из своих братьев и сестер или супругом(ой). Шансы на выживание резко падали, если кто-то ездил с более чем двумя родными.

6. Parch

Подобно SibSp, этот признак содержал количество родителей или детей, с которыми путешествовал каждый пассажир. Максимум 9 родителей/детей путешествовали вместе с одним из пассажиров.

Для хранения суммарных значений «Parch» и «SibSp» я добавил столбец «Family».

Более того, шансы на выживание взлетели до небес, когда путешественник путешествовал один. Создал другой столбец Is_Alone и присвоил значение True, если значение в столбце «Family» было 0.

7. Fare

Разделив сумму тарифа на четыре категории, стало очевидно, что существует тесная связь между стоимостью тарифа и выживанием. Чем больше заплатит пассажир, тем выше будут его шансы на выживание.

Я добавил новые категории тарифов в новый столбец Fare_Category.

8. Embarked

Этот столбец хранит информацию о порте посадки пассажира. Есть три возможных значения для Embarked — Саутгемптон, Шербург и Куинстаун. Более 70% людей сели в Саутгемптон. Чуть менее 20% сели на борт из Шербура, а остальные — из Квинстауна. Люди, которые сели в порте Шербург, имели более высокие шансы на выживание, чем люди, которые сели в портах Саутгемптон или Квинстаун.

Стоит отметить, что мы не использовали столбец «Ticket».

Заполнение пропущенных данных

Существует множество процессов заполнения пропусков, которые можно использовать. Я использовал некоторые из них.

1. Embarked

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

2. Cabin

В колонке «Cabin» было много пропущенных данных. Я решил определить все отсутствующие данные в отдельный класс. Я назвал его NA и заполнил все пропущенные значения этим значением.

3. Age

Возраст был самым непростым столбцом для заполнения. Возраст имел 263 пропущенных значения. Я сперва классифицировал людей на основе их имени. Разделение строк простого Python было достаточно, чтобы извлечь префикс для обращений (например, Mr, Miss, Mrs) из каждого имени. Было 18 разных названий.

Затем я сгруппировал эти названия по Sex и PClass.

Медиана группы затем была подставлена ​​в пропущенные строки.

Кодирование категориальных признаков

Поскольку текстовые данные плохо сочетаются с алгоритмами машинного обучения, мне нужно было преобразовать нечисловые данные в числовые. Я использовал LabelEncoder для кодирования столбца «Sex». LabelEncoder будет заменять «мужские» значения одним числом, а «женские» значения — другим числом.

Для других категориальных данных я использовал функцию Pandas get_dummies, которая добавляет столбцы, соответствующие всем уникальным значениям столбца. Таким образом, если бы было три возможных значения столбца — Q, C и S, метод get_dummies создал бы три различных столбца и назначил бы значения 0 или 1 в зависимости от соответствия значения этому столбцу.

Удаление колонок

Я отбросил столбцы, которые мне не нужны для прогнозирования, и столбцы, которые я кодировал функцией get_dummies.

Прогнозирование

Это был случай задачи классификации, и я попытался сделать предсказания с помощью двух алгоритмов — Случайный лес и Гауссовский Наивный Байесовский классификатор.

Я был удивлен результатами. Наивный классификатор работал плохо, а Случайный лес, напротив, делал предсказания с точностью более 80%.

Наконец, я создал файл для хранения предсказанных результатов.

Строка кода ниже особенно важна, поскольку Kaggle неверно оценил бы прогнозы, если значение Survived не относится к типу данных int.

С полной реализацией Jupyter Notebook можно ознакомиться на моем GitHub или Kaggle. Решение позволило попасть мне в топ 8% участников. Это было нелегко, и мне потребовалось более 20 попыток попасть туда. Я бы сказал, что важно быть аналитическом, пробовать то, что покажется интересным, использовать интуицию и пробовать все, каким бы нелепым это ни казалось.

Введение в анализ данных с помощью python на примере задачи про Титаник

Задача про спасенных с “Титаника”, имеет большую популярность среди людей, только начинающих заниматься анализом данных и машинным обучением .

Итак суть задачи состоит в том, чтобы с помощью методов машинного обучения построить модель, которая прогназировала бы спасется человек или нет. К задачи прилагаются 2 файла: train.csv — набор данных на основании которого будет строиться модель ( обучающая выборка test.csv — набор данных для проверки модели

Для анализ понадобятся модули Pandas и sklearn . С помощью Pandas мы проведем начальный анализ данных, а sklearn поможет в вычислении прогнозной модели. Итак, для начала загрузим нужные модули:

Кроме того даются пояснения по некоторым полям: PassengerId — идентификатор пассажира Survival — поле в котором указано спасся человек(1) или нет (0) Pclass — содержит социально-экономический статус: высокий средний низкий Name — имя пассажира Sex — пол пассажира Age — возраст SibSp — содержит информацию о количестве родственников 2-го порядка (муж, жена, братья, сетры) Parch — содержит информацию о количестве родственников на борту 1-го порядка (мать, отец, дети) Ticket — номер билета Fare — цена билета Cabin — каюта Embarked — порт посадки C — Cherbourg Q — Queenstown S — Southampton

Теперь можно загрузить тестовую выборку и посмотреть на нее:

Можно предположить, что чем выше социальный статус, тем больше вероятность спасения. Давайте проверим это взглянув на количество спасшихся и утонувших в зависимости в разрезе классов. Для этого нужно построить следующую сводную:

Наше вышеописанное предположение про то, что чем выше у пассажиров их социальное положение, тем выше их вероятность спасения. Теперь давайте взглямен, как количество родственников влияет на факт спасения:

Как видно из графиков наше предположение снова потдвердилось, и из людей имеющих больше 1 родственников спаслись не многие.

Теперь давайте взглянем столбец с номерами кают и посмотрим насколько нам пригодятся эти данные:

Как видно поле практически не запонено, поэтому данные по нему можно будет опустить.

Итак продолжем разбираться с полями и на очереди поле Age в котором записан возраст. Посмортирим на сколько оно заполено:

Данное поле практически все заполнено, но есть пустые значения, которые не определены. Давайте зададим таким поляем значение равное медиане по возрату из всей выборки. Данный шаг нужен для более точного построения модели:

У нас осталось разобратся с полями Ticket , Embarked , Fare , Name . Давайте посмотрим на поле Embarked, в котором находится порт посадки и проверим есть ли такие пассажиры у которых порт не указан:

Итак у нас нашлось 2 таких пассажира. Давайте присвоим эти пассажирам порт в котором село больше всего людей:

Ну что же разобрались еще с одним полем и теперь у нас остались поля с имя пассажира, номером билета и ценой билета.

По сути нам из этих трех полей нам нужна только цена(Fare), т.к. она в какой-то мере определяем ранжирование внутри классов поля Pclass. Т. е. например люди внутри среднего класса могут быть разделены на тех, кто ближе к первому(высшему) классу, а кто к третьему(низший). Проверим это поле на пустые значения и если таковые имеются заменим цену медианой по цене из все выборки:

Номер же билета и имя пассажира нам никак не помогут, т. к. это просто справочная информация. Единственное для чего они могут пригодиться — это определение кто из пассажиров потенциально являются родственниками, но так как люди у которых есть родственники практически не спаслись (это было показано выше) можно принебречь этими данными.

Теперь наш набор выглядит так:

Итак для построения нашей модели, нужно закодировать все наши текстовые значения. Можно это сделать в ручную, а можно с помощью модуля sklearn.preprocessing . Давайте воспользуемся вторым вариантом.

Закодировать список с фиксированными значениями можно с помощью объекта LabelEncoder() .

В итоге наши исходные данные будут выглядеть так:

Теперь нам надо написать код для приведения проверочного файла в нужный нам вид. Для этого можно просто скопировать куски кода которые были выше(или просто написать функцию для обработки входного файла):

Ну что же терепь данные для построения и проверки модели готовы и можно приступить к ее построению. Для проверки точности модели будем использовать скользящий контроль и ROC-кривые . Проверку будем выполнять на обучающей выборке, после чего применим ее на тестовую.

Итак рассмотрим несколько алгоритмов машинного обучения: SVM (с линейным ядром и квадратичным полиномом) Метод ближайших соседей Random forest

Загрузим нужные нам библиотки:

Для начала, надо разделить нашу обучаюшую выборку на показатель, который мы исследуем, и признаки его определяющие:

Теперь наша обучающая выборка выглядит так:

Теперь разобъем показатели полученные ранее на 2 подвыборки(обучающую и тестовую) для расчет ROC кривых (для скользящего контроля этого делать не надо, т.к. функция проверки это делает сама. В этом нам поможет функция train_test_split модуля cross_validation :

В качестве праметров ей передается: Массив параметров Массив значений показателей Соотношение в котром будет разбита обучающая выборка (в нашем случае для тестового набора будет выделена 1/4 часть данных исходной обучающей выборки) . На выходе функция выдает 4 массива: Новый обучающий массив параметров тестовый массив параметров Новый массив показателей тестовый массив показателей

Далее представлены перечисленные методы с наилучшими параметрами подобранные опытным путем:

Теперь проверим полученные модели с помощью скользящего контроля. Для этого нам необходимо вопользоваться функцией cross_val_score

Когда мы собрали данные по перекрестным проверкам, давайте нарисуем графики ROC-кривых:

Как видно по результам обоих проверок алгоритм на основе деревьев решений выдал лучшие результаты, чем остальные. Теперь осталось только применить нашу модель к тестовой выборке:

Читать еще:  Тренинговые упражнения на сплочение
Ссылка на основную публикацию
Adblock
detector