/Pandas_Practice

Продолжение к первой части гайда про Pandas и ML чата python_beginners написанное по вашим заявкам в [ipynb].

Primary LanguageJupyter Notebook

nbviewer

Viewer тетрадок встроенный в Git имеет нехорошую тенденцию отваливаться - если sorry something went wrong. reload пользуйтесь nbviewer: спопируйте линк тетрадки, которую не смог открыть Git в поле (URL| GitHub username etc) и нажмите кнопокчу Go.

Сборник полезных тетрадок с практикой по Pandas и ML.

Решил навести порядок в тетрадках написанных за 2017 - выявить и схоронить годноту, собрать шпаргалки и тут мой мир рухнул! несколько студентов ворвались в мой уютный мир ламповой и хаотичной еретичной телеграмм пони и потребовали часть 2 за ради вкатиться в ML - я отговаривал, но один из них напомнил мне о старой как мир истине - так что няши, вот вам продолжение на практику в Pandas, полезную годноту и несколько примеров ML на точность.

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

Часть 1. Pandas.

Традиционно предлагаю годный саундтрэк для процесса. первая часть содержит тетрадки с ранее использованным фукнционалом стандартной библиотеки Pandas в рамках учебного курса ODS и pandas best practice от бога Pandas.

Да простит меня Yorko за спойлер к домашкам ODS - обещаю ничего серьёзно дальше не показывать, в конце концов домашки второго запуска по 6ой урок включительно относительно свободно гуляют по просторам сети как до, так и после ввода рестрикта.

По результатам общения со студентами с уверенностью могу сказать, что люди не пошли в слак ODS по причине того - что не смогли вкатиться в Pandas, пологаю это надо исправлять так, что бы к следующему запуску курса умеющих прибавилось.

полезные операции

  1. Накодить первый датафрейм и сделать наконец выводы о том - что это такое.

  2. Научиться добавлять новую колокнку в датафрейм с данными из других колонок.

  3. Познакомиться с datetime64 в Pandas и запомнить основные ошибки, что бы потом не повторять.

  4. Познакомиться с DS в Pandas ещё раз и запомнить разницу между bool, int, float, object и datetime.

  5. Научиться менять положение колонок в датафрейме, на случай если будете писать собственные.

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

  7. Осознать - что датафрейм это тоже ООП и что объекты в нём также можно использовать как ООП.

  8. Посмотреть как делать свобные таблицы и окончательно убедиться в том, что Pandas это тоже ООП.

  9. Разобраться как работает pd.melt и что может пойти не так если за ним не следить и юзать как метлган.

  10. Вспоминить о существовании True/False и задуматься о том, как это работает в Pandas.

  11. Разобраться как работает .map() в Pandas и постараться не забыть половину того что сверху.

  12. Осознать, что типы данных - это очень важно и что только ими можно как угодно крутить этим миром.

Часть 2. Графики.

Вкатиться в графики и процесс их построения гораздо сложнее, чем в базовые возможности кусочка стандартной бибилиотеки Paтdas, здесь всё надо трогать ручками, крутить, вертеть и запоминать в какой ситуации тетрадка строит красоту и годноту, а в какой - варп портал в сторону ока Хаоса.

  1. Шапка Matplotlib и размеры картинок в тетрадке.

  2. Интро matplotlib и первые картинки от matplotlib в тетрадке.

  3. x for x in data.columns if 'name' in x в приложении к созданию графиков.

  4. pd.melt и seaborn in action titanic df во время визаульного анализа Титаника.

  5. Визуальный анализ практических данных учимся смотреть статистику чатиков.

  6. Пробуем сделать красиво в первый раз и понимаем, что красиво пока не получается.

  7. Смотрим как "красиво" делают другие и запоминаем понятие longformat в приложении к визуальному анализу.

  8. Запоминаем как правильно выглядит t-SNE в представлении людей, которые хотят извлечь из него оценку данных.

  9. Включаем голову, правим руки и делаем красиво особое внимание уделяем созданию тепловых карт.

  10. Осваиваем полученные навыки и пробуем в t-SNE и понимает, что данные для t-sne нужно готовить.

  11. Наслаждаемся процессом и идём читать про t-SNE - до уровня "что такое многомерное пространство".

Няшы, поняши и броняши - а также приравненные к ним фанаты аниме, я бы не смог написать для вас этот гайд - если бы Yorko намеренно не оставил бы пару слепых пятен в каждом примере, который он разбирал и в которые мне пришлось упороться. Самая годнота - примеры как строить тепловые карты у вас есть - математикам должно хватить.

Всем остальным рекомендую потренироваться в построении тех графиков, смысл которых вы понимаете.

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

Да, вот ещё что - тетрадки разложены в порядке "заставь себя думать правильно", к логике учебного курса ODS имеют весьма отдалённое отношение как по содержанию, так и по хронологии. Код тоже не блещет - поскольку большая часть была написана мной, а не скопированна из чужих решений.

дисклеймер

Если что: я не рекомендую заявлять в слаке ODS что правильно только так, как вы здесь видели, скорее всего "правильно" делать так - как пишет Yorko, а не так как я.

смысл

Смысл происходящего в том, что я хотел ответить на самый распространнённый вопрос, который мне задали: "аааааа где начинаеться матан - без которого никак?".

Так вот матан без которого никак - это простое осознание "отчего представление t-sne здесь одноцветное и правильно ли это"? Ответ на этот вопрос в любой форме позволяет вкатить в то - как работает остальное.

Часть 3. Machine Learning.

щито поделать десу - не прокатит, если фильтров нет

Сейчас будет матан, пачка линков на полезные статьи "на почитать" в части 4.

Даю наглядный пример того, что именно на практике значит фраза "поготовка данных" и почему это так важно

  1. Коофициент корреляции Пирсона без фильтра
  2. Коофициент корреляции Пирсона с фильтром

Внимательно смотрите на две картинки снизу, сопоставляете их в своей голове и задаётесь вопросом как отсутствие 1234 строк в среде 70000 величин так подвинуло коофициент корреляции условно одинаковых переменных, что даже космически далёкий от матана человек может заметить разницу.

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

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

Подготовка данных во многом определяет точность.

Т.е вместо того что бы кодить 3 строчки кода, которые построят лес - математики сидит и думу думает - "а что мне ещё сделать с данными на входе, что бы на выходе получить +0.1% к точности. Если математик сильный и умеет кодить - может даже длинную фукнцию написать на тему этого. Вот для этого и нужен и матан и Python.

  1. Святая простота

Размер имеет значение - pandas.get_dummies наше всё

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

Когда мы чистим данные с помощью фильтра, например вычитая 1234 строки из 70000 - мы сокращем размерность признакова простраснтва. Однако, существет ряд вариантов, когда эту размерность наоборот нужно увеличть - добавить к размерности многомерному пространству х2-х3 возможных полей для векторов ради лорности происходящего.

Для этого есть специальный инструмент - dummies

  1. Святая простота расширения размерности загляни внутри и просто посмотри как это работает.

Няши, я не знаю как мне одним словом, выражением или предложением объяснить теорию информатики и математики. Но, попробую - есть олдскульные дядьки, которые любят по максимуму свёртывать признаковое пространство фильтрам и уже потом считать - они дружат с формулами (с которыми редко когда дружил я) и могут всякое разное рассказать.

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

Как эта разруха в моей голове должна объяснить вам значимость идеи расширения признакового пространства - я хз, спросите своего лектора в универе, но поверьте - это тоже работает.

  1. Учимся строить полезный график точности - тот, который в самом конце тетрадки, очень показательная вещь.

Когда половина значений в колонках - это str

  1. from sklearn.preprocessing import LabelEncoder

*Вероятнее всего вы уже сталкивались с ситуацией, в которой несколько столбцов датафрейма содержат текст .astype(str) - например, названия улиц и вам хотелось бы использовать эти данные в своей модели т.к они являються значимыми. Специально для этих целей умные люди придумали labelencoder.

Этот божественный инструмент кодирует строки в np.array значения из которого можно использовать при построении любых моделей, поскольку после кодирования объект, к которому был применён labelencoder принимает вид int64.*

  1. Пользуйтесь, вот вам ещё пример с LabelEncoder

Когда всё стало плохо - и совсем ничего не помогает

  1. Что делать если...

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

Собственно говоря именно ради этого момента мы и учились строить графики и писать фильтры - что бы на основании анализа данных разработаь аналитическую методику, которая будет работать.

В качестве заключения практической части этого гайда, я предлагаю вам потренироваться на последнем датасете и попытаться добиться лучшей точности за счёт подготовки данных, использования фильтров и любых других решений, которые вы посчиатете нужными. Что бы хорошо посчитать эту задачу (например, для того, что бы поехал pipeline)- нужно провести достаточно серьёзную работу по подготовке данных.

В тетрадке есть визуальный анализ нескольких признаков, графики, пара тепловых карт и корреляционных матриц. После того как подготовите данные - попробуйте сравнить результаты подобного анализа.

В подготовке данных вам поможет важное приложение.

Часть 4. Что почитать на ночь перед сном, утром и днём.

  1. Восстание машин - просто огонь!

  2. Текст и sklearn - в закладки на будущее.

  3. kNN - для тех кто может в английский.

  4. Для тру танкистов - вдруг вы всё пропустили и вообще не читатель!

  5. Фильтрация строк - дико сложная фигня как фильтровать строки в pandas.

  6. Шикарный мануал - про то как работать с категориальными признаками.

  7. Решаем Титаник - простой пример как человек решает Титаник.

  8. Решаем Титаник - человек решает Титаник на 0.80383 точности.

  9. Готовим данные - понятная статья о том, зачем чистить данные.

  10. Свет истины - бог понятных комментариев о процессе анализа.

  11. SNS - хорошая статься про возможности seaborn.

  12. Kaggle - годный data science tutorial for beginners.

Линков получилось мало, потому что разобрать варп варонку закладок оказалось очень сложно, но и того что есть, вам должно хватить на долго. Возможно, позже добавлю ещё. Если вы дочитали это до конца, значит времени на аниме у вас осталось мало, поэтому держите милоты - там целый канал такого.

ЗЫ официально заявлялю что все все все права на курсы ODS и сопутствующие материалы принадлежат Yorko и его конфе. Гайд написал исключительно в ознакомительных целях и за ради подогнать ему на следующий запуск курса хоть одного толкового студента, из числа тех - кто меня заставил это делать.

Extra бонус - новогодний сборник линков на гайды.

Приходиться делать потому что в мире нет нормального браузера под 100500 закладок - а те что есть не торт.

эпик тру годный саундтрэк для погружения.

  1. Heat Map for Grid Search CV
  2. Evaluating Grid Search Results
  3. Static Image Export in Python with Plotly
  4. Энтропия и деревья решений - матан и алгоритмы
  5. scipy.stats.entropy
  6. cross_validate and multiple metric evaluation
  7. Куча книжек про Python - которые можно скачать
  8. Актуальный список либ и фреймворков под Python
  9. Ещё одна шпаргаkка по Markdown
  10. Подборка датасетов для тренировки
  11. Руководство: Python и алгоритмическая торговля
  12. Pyparsing для новичков
  13. Основы парсинга с помощью Python+lxml
  14. Доступ к распарсенным деревьям Python
  15. Как устроен парсер Python и про память
  16. Веб-парсинг на Ruby
  17. Парсинг формул в 50 строк на Python
  18. HTML парсер на Python
  19. Лексический анализ
  20. Научная графика в Python
  21. Анализ Временных рядов
  22. Intro: Graphviz и Pydot
  23. Введение в GraphViz rus
  24. Getting started with Graphviz and Python
  25. DataFrame и статистический анализ Pandas
  26. Хорошая презентация о Pandas от МГУшника
  27. Достойный набор лекций и учебных пособий
  28. Timeseries with pandas
  29. pydot.Dot() Examples
  30. Статья:учим Graphviz
  31. Учим Graphviz в коде
  32. DOT - FULL ENG Guide
  33. Numpy frequent errors
  34. k-nearest-neighbor
  35. Руководство по интроспекции на Python
  36. Обучение на больших данных: Spark MLlib
  37. Tuning parameters of Random Forest model
  38. Forest of trees-based ensemble methods - код
  39. Конспекты про python на русском языке Карл!
  40. Регулярные выражения, пособие для новичков
  41. Работа с текстовыми данными в scikit-learn
  42. Метод Главных Компонент PCA вщи со слайдами
  43. Специальные методы и атрибуты классов Python
  44. NumPy, пособие для новичков
  45. An Introduction to Statistical Learning
  46. Cвёрточная сеть классификаторов текстов

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

И по факту телега пока вне конкуренции: хром, аваст, неон и мозила так красиво данные не хранят.

Возможно предстоит осваивать учебник по написанию ботов для телеграм и писать под себя.