Первая улица

Nov 28 2022
Я больше, чем ученый-компьютерщик и инженер, я человек. И как человек, зрение является одним из самых важных и полезных сенсорных переживаний, которые мы можем получить.

Я больше, чем ученый-компьютерщик и инженер, я человек. И как человек, зрение является одним из самых важных и полезных сенсорных переживаний, которые мы можем получить. Поэтому для начала я продемонстрирую свой первый дашборд, построенный на фреймворке Streamlit (с помощью python, pandas и Altair).

Введение

Панели? Таблица? PowerBI? Почему бы просто не использовать листы Excel?

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

Во-первых, когда мы слышим слово «приборная панель», скорее вспоминается полиция, тянущая машины в кино, а не компьютерная система, заполненная диаграммами. «Разве вы не видели превышение скорости на приборной панели автомобиля?» Ну… Дашборд — это просто визуальная рамка, которая содержит некоторые ключевые показатели эффективности, графики и статистику. Они могут быть адаптивными, интерактивными и обновляться в режиме реального времени. Используя другой подход, они представляют собой инструменты для визуализации кураторской информации, относящейся к конкретному сценарию. Почему куратор? Потому что система часто используется, и данные должны храниться на существенном уровне, чтобы избежать переполнения приложения. Время имеет решающее значение, и чем быстрее информация усваивается, тем лучше.

Итак… Tableau и Power BI — это всего лишь фреймворки для создания дашбордов и историй. Кроме того, Excel можно использовать для создания информационных панелей. По сути, Excel — дедушка дашбордов… В конце концов, это слово — просто причудливый термин, используемый для описания информационной системы, содержащей статистику.

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

Стек

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

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

Альтаир. Инструмент визуализации данных. Altair имеет ту же цель, что и Matplotlib, но он был построен на другом наборе принципов. Стиль кодирования следует декларативной парадигме, а его синтаксис напоминает формат JSON.

Панды . Библиотека, которую можно использовать для изучения, очистки и обработки табличных данных. Позволяет объединять несколько таблиц, заполнять пропущенные значения, преобразовывать, очищать, фильтровать и запрашивать.

Scikit-Learn . Библиотека предлагает несколько инструментов для анализа данных. От машинного обучения и статистических моделей, расписаний обучения, метрик для количественной оценки ошибок и прогнозирования данных. Используя этот Scikit-Learn, можно быстро и легко анализировать данные. Но имейте в виду, что реализованные модели не являются передовыми.

Нампи . Сокращает время, необходимое для числовых вычислений внутри экосистемы Python. Собственные данные Numpy состоят из N-мерных массивов.

Рассол . Этот инструмент используется для сериализации и десериализации объектов Python.

Набор данных

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

Наши выводы основаны на наборе данных о рынке жилья в Сиэтле (США). Экземпляры были собраны в период с 14 по 15 мая.

Компоненты

Теперь пришло время проверить несколько компонентов, составляющих окончательную панель. Проверьте полную реализацию на моей странице Github (https://github.com/LOCLuisPereira/streamlit_house_market).

Начальные показатели KPI

Эти показатели KPI — первое, что видит пользователь. Они должны кратко излагать важную информацию. Streamlit предлагает картоподобный компонент (streamlit.metric), где можно определить название KPI, значение и дельту. Они используются для идентификации, количественного определения и измерения колебаний значений.

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

Начальные показатели KPI Dashboard

Карта Сиэтла и распределение домов

Streamlit имеет компонент карты, который позволяет разработчику быстро создать карту слова или города (streamlit.map). Этот компонент довольно прост и не предъявляет сложных требований, так как его степень кастомизации невелика.

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

Компонент карты

Использование Altair Map Graph для визуализации кластеризации

Собственный компонент карты Streamlit использует Altair под капотом. Так просто, как, что. Ранее мы заявляли, что этот компонент работает по принципу plug-and-play, но не предлагает никаких настроек. Альтернативой нативной реализации является использование Altair Chart и его связывание с компонентом Streamlit-Altair Chart.

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

Чтобы убедиться, что это действительно так, мы провели эксперимент. Используя Scikit-Learn и его реализации K-Means, мы запускаем алгоритм с разным количеством кластеров (от 2 до 10). В качестве признаков использовались долгота и широта. Из каждого запуска мы проверяем среднюю стоимость жилья.

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

Количество кластеров = 3
Количество кластеров = 6

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

Класс и состояние

Этот компонент простой и короткий. Используя две гистограммы, `streamlit.bar_chart`, мы построили график распределения оценок и состояния. Визуализируя график, мы заключаем, что большинство экземпляров находится посередине (для обоих графиков).

Гистограмма для визуализации состояния и содержания

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

Пузырьковая диаграмма, отображающая оценку и корреляцию вместе

Как насчет ремонта дома? Еще один набор KPI.

Используя streamlit.metric, мы внедрили три встроенных показателя KPI для быстрого анализа данных, связанных с ремонтом дома. Мы показали количество отремонтированных домов, их представительство по отношению к остальным и какой промежуток времени между годом постройки и годом реновации.

Еще один набор KPI.

Посмотрев на приборную панель, мы обнаружили, что 914 домов были отремонтированы. А дома, как правило, восстанавливают через 56 лет после их постройки.

Панель инструментов без линейной диаграммы? Невозможно…

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

Дом продается со временем

Взгляните внимательно… Самыми продаваемыми месяцами были июль 2014 года и апрель 2015 года.

Спальни и ванные комнаты? Складывать или балансировать их?

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

Глядя на новый график, мы видим, что баланс количества спален и ванных комнат имеет основополагающее значение. Промышленность предпочитает пропорции 1:1 и большее количество ванных комнат, чем спален.

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

Наша диаграмма тепловой карты

Вероятно, это можно объяснить, следуя простым рассуждениям. Люди не любят ждать, и люди не любят делить исключительно личное пространство. В целом, предоставление жильцам и гостям более высокой степени конфиденциальности приводит к более высокой стоимости недвижимости.

У меня есть недвижимость в Сиэтле… Можете ли вы помочь мне найти справедливую цену для продажи?

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

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

Форма для связи между пользователем и системой

Информация из компонента формы подается в две предварительно обученные модели. После вывода данные отправляются на панель мониторинга, и пользователи могут видеть две возможные оценки значений.

Поскольку миссия проекта состоит в создании информационной панели и изучении большинства компонентов Streamlit, мы использовали два основных алгоритма модели машинного обучения, которые реализованы в Scikit-Learn. В итоге у нас есть байесовский хребет и случайный лес с оценкой R2 0,54 и 0,87 для всех данных.

Ценовые прогнозы

Возникает вопрос, зачем держать модель с 0,54 балла? Мы сохранили это как шутку. Модель иногда выводит отрицательные значения. Другими словами, модель говорит нам, что мы можем купить дом… и получить деньги, чтобы содержать его.

Что находится внутри Dataframe?

Для этой задачи Streamlit предлагает три разных варианта. Один для статических таблиц, один для фрейма данных и еще один для JSON. Здесь мы сосредоточимся на последних двух.

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

Таблица кадров данных Streamlit

Вывод JSON напоминает функцию дампа с отступом, который является родным из библиотеки Python JSON.

Компонент Streamlit JSON

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

Финальные дубли

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

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

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

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

Бонус. А как насчет панелей мониторинга в реальном времени?

В нашем проекте у нас не было необходимости обновлять данные в реальном времени. Но Streamlit предлагает методы для реализации визуализации данных в реальном времени. Механизм прост. Создайте пустой компонент, задайте цикл, извлеките и загрузите данные… Вуаля! Непрерывные потоки данных в режиме реального времени. См. изображения ниже в качестве доказательства возможностей фреймворка.

Открываем приборную панель и проверяем начальную цену
Цена только что изменилась, и панель инструментов показывает это

Это! Увидимся в следующий раз.