Viewer тетрадок встроенный в Git имеет нехорошую тенденцию отваливаться - если sorry something went wrong. reload пользуйтесь nbviewer: спопируйте линк тетрадки, которую не смог открыть Git в поле (URL| GitHub username etc) и нажмите кнопокчу Go.
Решил навести порядок в тетрадках написанных за 2017 - выявить и схоронить годноту, собрать шпаргалки и тут мой мир рухнул! несколько студентов ворвались в мой уютный мир ламповой и хаотичной еретичной телеграмм пони и потребовали часть 2 за ради вкатиться в ML - я отговаривал, но один из них напомнил мне о старой как мир истине - так что няши, вот вам продолжение на практику в Pandas, полезную годноту и несколько примеров ML на точность.
..и поскольку в телеграмме были крики матан не нужен - давай pandas про матан прочитаете по ссылкам ниже.
Традиционно предлагаю годный саундтрэк для процесса. первая часть содержит тетрадки с ранее использованным фукнционалом стандартной библиотеки Pandas в рамках учебного курса ODS и pandas best practice от бога Pandas.
Да простит меня Yorko за спойлер к домашкам ODS - обещаю ничего серьёзно дальше не показывать, в конце концов домашки второго запуска по 6ой урок включительно относительно свободно гуляют по просторам сети как до, так и после ввода рестрикта.
По результатам общения со студентами с уверенностью могу сказать, что люди не пошли в слак ODS по причине того - что не смогли вкатиться в Pandas, пологаю это надо исправлять так, что бы к следующему запуску курса умеющих прибавилось.
полезные операции
-
Накодить первый датафрейм и сделать наконец выводы о том - что это такое.
-
Научиться добавлять новую колокнку в датафрейм с данными из других колонок.
-
Познакомиться с datetime64 в Pandas и запомнить основные ошибки, что бы потом не повторять.
-
Познакомиться с DS в Pandas ещё раз и запомнить разницу между bool, int, float, object и datetime.
-
Научиться менять положение колонок в датафрейме, на случай если будете писать собственные.
-
Научить наконец группировать данные в датафрейме или хотя бы запомнить, что это возможно.
-
Осознать - что датафрейм это тоже ООП и что объекты в нём также можно использовать как ООП.
-
Посмотреть как делать свобные таблицы и окончательно убедиться в том, что Pandas это тоже ООП.
-
Разобраться как работает pd.melt и что может пойти не так если за ним не следить и юзать как метлган.
-
Вспоминить о существовании True/False и задуматься о том, как это работает в Pandas.
-
Разобраться как работает .map() в Pandas и постараться не забыть половину того что сверху.
-
Осознать, что типы данных - это очень важно и что только ими можно как угодно крутить этим миром.
Вкатиться в графики и процесс их построения гораздо сложнее, чем в базовые возможности кусочка стандартной бибилиотеки Paтdas, здесь всё надо трогать ручками, крутить, вертеть и запоминать в какой ситуации тетрадка строит красоту и годноту, а в какой - варп портал в сторону ока Хаоса.
-
Шапка Matplotlib и размеры картинок в тетрадке.
-
Интро matplotlib и первые картинки от matplotlib в тетрадке.
-
x for x in data.columns if 'name' in x в приложении к созданию графиков.
-
pd.melt и seaborn in action titanic df во время визаульного анализа Титаника.
-
Визуальный анализ практических данных учимся смотреть статистику чатиков.
-
Пробуем сделать красиво в первый раз и понимаем, что красиво пока не получается.
-
Смотрим как "красиво" делают другие и запоминаем понятие longformat в приложении к визуальному анализу.
-
Запоминаем как правильно выглядит t-SNE в представлении людей, которые хотят извлечь из него оценку данных.
-
Включаем голову, правим руки и делаем красиво особое внимание уделяем созданию тепловых карт.
-
Осваиваем полученные навыки и пробуем в t-SNE и понимает, что данные для t-sne нужно готовить.
-
Наслаждаемся процессом и идём читать про t-SNE - до уровня "что такое многомерное пространство".
Няшы, поняши и броняши - а также приравненные к ним фанаты аниме, я бы не смог написать для вас этот гайд - если бы Yorko намеренно не оставил бы пару слепых пятен в каждом примере, который он разбирал и в которые мне пришлось упороться. Самая годнота - примеры как строить тепловые карты у вас есть - математикам должно хватить.
Всем остальным рекомендую потренироваться в построении тех графиков, смысл которых вы понимаете.
Мне пришлось поломать голову для того, что бы вывалить вам пачку тетрадок - даже в той части, которая была решена Yorko, потрудитесь и вы: я намеренно оставил t-sne в части примеров кривым, как его раскаршивать я показал, но пока до вас не дойдёт идея сопоставления точек в многомерном пространстве - ничего не будет.
Да, вот ещё что - тетрадки разложены в порядке "заставь себя думать правильно", к логике учебного курса ODS имеют весьма отдалённое отношение как по содержанию, так и по хронологии. Код тоже не блещет - поскольку большая часть была написана мной, а не скопированна из чужих решений.
дисклеймер
Если что: я не рекомендую заявлять в слаке ODS что правильно только так, как вы здесь видели, скорее всего "правильно" делать так - как пишет Yorko, а не так как я.
смысл
Смысл происходящего в том, что я хотел ответить на самый распространнённый вопрос, который мне задали: "аааааа где начинаеться матан - без которого никак?".
Так вот матан без которого никак - это простое осознание "отчего представление t-sne здесь одноцветное и правильно ли это"? Ответ на этот вопрос в любой форме позволяет вкатить в то - как работает остальное.
щито поделать десу - не прокатит, если фильтров нет
Сейчас будет матан, пачка линков на полезные статьи "на почитать" в части 4.
Даю наглядный пример того, что именно на практике значит фраза "поготовка данных" и почему это так важно
Внимательно смотрите на две картинки снизу, сопоставляете их в своей голове и задаётесь вопросом как отсутствие 1234 строк в среде 70000 величин так подвинуло коофициент корреляции условно одинаковых переменных, что даже космически далёкий от матана человек может заметить разницу.
Запоминаете этот волнительны момент в своей жизни и ставите себе галочку о том, что данные нужно уметь готовить перед тем как скармливать их машине в рамках какого-либо алгоритма.
Знание матана и глубина знаний в этом вопросе определяет - сколько фильтров и других фич вы сможете придумать для того, что бы подготовить данные.
Подготовка данных во многом определяет точность.
Т.е вместо того что бы кодить 3 строчки кода, которые построят лес - математики сидит и думу думает - "а что мне ещё сделать с данными на входе, что бы на выходе получить +0.1% к точности. Если математик сильный и умеет кодить - может даже длинную фукнцию написать на тему этого. Вот для этого и нужен и матан и Python.
Размер имеет значение - pandas.get_dummies наше всё
Я предупреждал, что волнительно важно иметь в голове представление о многономерном прострастве, если что - мы в нём работаем. Датафрейм, который содержит в себе признаки - это такой шарик ненависти и грусти, внутри которого крутиться варп воронка состоящая из значений столбцов, строк и индексов... и это пространство имеет размерность.
Когда мы чистим данные с помощью фильтра, например вычитая 1234 строки из 70000 - мы сокращем размерность признакова простраснтва. Однако, существет ряд вариантов, когда эту размерность наоборот нужно увеличть - добавить к размерности многомерному пространству х2-х3 возможных полей для векторов ради лорности происходящего.
Для этого есть специальный инструмент - dummies
- Святая простота расширения размерности загляни внутри и просто посмотри как это работает.
Няши, я не знаю как мне одним словом, выражением или предложением объяснить теорию информатики и математики. Но, попробую - есть олдскульные дядьки, которые любят по максимуму свёртывать признаковое пространство фильтрам и уже потом считать - они дружат с формулами (с которыми редко когда дружил я) и могут всякое разное рассказать.
С другой стороны, есть мнение, что кратное увеличение полей доступных для построения векторов тоже тру. Я считаю что тру это и то и то и надо щупать ручками. Но, при этом рассуждения олдскульных дядек о влиянии мусора в данных никогда не укладывались в моей голове в рамках доступных мне знаний о соотношении сверх больших и сверх малых величин при построении модели допустимой погрешности.
Как эта разруха в моей голове должна объяснить вам значимость идеи расширения признакового пространства - я хз, спросите своего лектора в универе, но поверьте - это тоже работает.
- Учимся строить полезный график точности - тот, который в самом конце тетрадки, очень показательная вещь.
Когда половина значений в колонках - это str
*Вероятнее всего вы уже сталкивались с ситуацией, в которой несколько столбцов датафрейма содержат текст .astype(str) - например, названия улиц и вам хотелось бы использовать эти данные в своей модели т.к они являються значимыми. Специально для этих целей умные люди придумали labelencoder.
Этот божественный инструмент кодирует строки в np.array значения из которого можно использовать при построении любых моделей, поскольку после кодирования объект, к которому был применён labelencoder принимает вид int64.*
Когда всё стало плохо - и совсем ничего не помогает
Тогда нужно вспомнить заветы олдскульных дядечек о необходимости сокращать выборку по максимуму, перечитать всё выше мной описанное, включить голову и задать себе вопрос о характере данных.
Собственно говоря именно ради этого момента мы и учились строить графики и писать фильтры - что бы на основании анализа данных разработаь аналитическую методику, которая будет работать.
В качестве заключения практической части этого гайда, я предлагаю вам потренироваться на последнем датасете и попытаться добиться лучшей точности за счёт подготовки данных, использования фильтров и любых других решений, которые вы посчиатете нужными. Что бы хорошо посчитать эту задачу (например, для того, что бы поехал pipeline)- нужно провести достаточно серьёзную работу по подготовке данных.
В тетрадке есть визуальный анализ нескольких признаков, графики, пара тепловых карт и корреляционных матриц. После того как подготовите данные - попробуйте сравнить результаты подобного анализа.
В подготовке данных вам поможет важное приложение.
-
Восстание машин - просто огонь!
-
Текст и sklearn - в закладки на будущее.
-
kNN - для тех кто может в английский.
-
Для тру танкистов - вдруг вы всё пропустили и вообще не читатель!
-
Фильтрация строк - дико сложная фигня как фильтровать строки в pandas.
-
Шикарный мануал - про то как работать с категориальными признаками.
-
Решаем Титаник - простой пример как человек решает Титаник.
-
Решаем Титаник - человек решает Титаник на 0.80383 точности.
-
Готовим данные - понятная статья о том, зачем чистить данные.
-
Свет истины - бог понятных комментариев о процессе анализа.
-
SNS - хорошая статься про возможности seaborn.
-
Kaggle - годный data science tutorial for beginners.
Линков получилось мало, потому что разобрать варп варонку закладок оказалось очень сложно, но и того что есть, вам должно хватить на долго. Возможно, позже добавлю ещё. Если вы дочитали это до конца, значит времени на аниме у вас осталось мало, поэтому держите милоты - там целый канал такого.
ЗЫ официально заявлялю что все все все права на курсы ODS и сопутствующие материалы принадлежат Yorko и его конфе. Гайд написал исключительно в ознакомительных целях и за ради подогнать ему на следующий запуск курса хоть одного толкового студента, из числа тех - кто меня заставил это делать.
Приходиться делать потому что в мире нет нормального браузера под 100500 закладок - а те что есть не торт.
эпик тру годный саундтрэк для погружения.
- Heat Map for Grid Search CV
- Evaluating Grid Search Results
- Static Image Export in Python with Plotly
- Энтропия и деревья решений - матан и алгоритмы
- scipy.stats.entropy
- cross_validate and multiple metric evaluation
- Куча книжек про Python - которые можно скачать
- Актуальный список либ и фреймворков под Python
- Ещё одна шпаргаkка по Markdown
- Подборка датасетов для тренировки
- Руководство: Python и алгоритмическая торговля
- Pyparsing для новичков
- Основы парсинга с помощью Python+lxml
- Доступ к распарсенным деревьям Python
- Как устроен парсер Python и про память
- Веб-парсинг на Ruby
- Парсинг формул в 50 строк на Python
- HTML парсер на Python
- Лексический анализ
- Научная графика в Python
- Анализ Временных рядов
- Intro: Graphviz и Pydot
- Введение в GraphViz rus
- Getting started with Graphviz and Python
- DataFrame и статистический анализ Pandas
- Хорошая презентация о Pandas от МГУшника
- Достойный набор лекций и учебных пособий
- Timeseries with pandas
- pydot.Dot() Examples
- Статья:учим Graphviz
- Учим Graphviz в коде
- DOT - FULL ENG Guide
- Numpy frequent errors
- k-nearest-neighbor
- Руководство по интроспекции на Python
- Обучение на больших данных: Spark MLlib
- Tuning parameters of Random Forest model
- Forest of trees-based ensemble methods - код
- Конспекты про python на русском языке Карл!
- Регулярные выражения, пособие для новичков
- Работа с текстовыми данными в scikit-learn
- Метод Главных Компонент PCA вщи со слайдами
- Специальные методы и атрибуты классов Python
- NumPy, пособие для новичков
- An Introduction to Statistical Learning
- Cвёрточная сеть классификаторов текстов
Тот факт, что мне приходиться использовать гит в качестве косплея браузера для хранения всего того что было нагуглено - не вдохновляет: в среднем я генерю около 1000 закладок в квартал из которых значительная часть связана с предметной областью по причине того, что линки на аниме и анимешные куобы я храню в телеграм.
И по факту телега пока вне конкуренции: хром, аваст, неон и мозила так красиво данные не хранят.
Возможно предстоит осваивать учебник по написанию ботов для телеграм и писать под себя.