첫 번째 Str
저는 컴퓨터 과학자와 엔지니어 이상으로 인간입니다. 그리고 인간으로서 보는 것은 우리가 가질 수 있는 가장 중요하고 보람 있는 감각적 경험 중 하나입니다. 따라서 먼저 Streamlit 프레임워크(python, pandas 및 Altair의 도움으로)에 구축된 첫 번째 대시보드를 선보일 예정입니다.
소개
대시보드? 태블로? 파워비? 일부 Excel 시트를 사용하지 않는 이유는 무엇입니까?
"대시보드"라는 단어는 확실히 데이터 과학, 데이터 엔지니어링, 비즈니스 인텔리전스 등의 영역에서 유행하는 유행어입니다. 그런데 대시보드가 무엇입니까? 그리고 그것으로 무엇을 할 수 있습니까?
첫째, 대시보드라는 단어를 들었을 때 차트로 가득 찬 컴퓨터 시스템 대신 영화에서 경찰이 차를 끄는 것을 더 빨리 기억합니다. "자동차 대시보드에 과속 표시가 보이지 않았나요?" 음... 대시보드는 일부 핵심 성과 지표, 차트 및 통계를 포함하는 시각적 프레임일 뿐입니다. 반응형, 대화형 및 실시간 업데이트가 가능합니다. 다른 접근 방식을 사용하여 특정 사례 시나리오와 관련하여 선별된 정보를 시각화하는 도구입니다. 큐레이션된 이유는 무엇인가요? 시스템이 자주 사용되며 응용 프로그램의 과잉 공급을 방지하기 위해 데이터를 필수 수준으로 유지해야 하기 때문입니다. 시간은 매우 중요하며 정보가 빨리 소화될수록 좋습니다.
그래서… Tableau와 Power BI는 대시보드와 스토리를 만들기 위한 프레임워크일 뿐입니다. 또한 Excel을 사용하여 대시보드를 만들 수 있습니다. 사실 엑셀은 대시보드의 대부…
천 마디 말보다 이미지가 낫다는 말이 있듯이 실전으로 넘어가겠습니다. 여기에서 소개를 마치고 EDA를 수행하기 위해 도구 선택 및 무작위 데이터 세트 선택으로 이동한 다음 대시보드를 사용하여 해결하거나 분석할 수 있는 스트레스 포인트를 찾아 답변을 시도합니다. 대시보드를 동시에 사용하는 동안 모두 가능합니다.
스택
엄청난 양의 암석을 효율적으로 부수려면 강력한 전용 도구 세트가 필요할 것입니다. 다음 목록은 미니 프로젝트에서 사용되는 여러 도구를 설명합니다.
스트림릿 . 비주얼로서의 스크립팅, 구성 요소를 변수로 사용하여 상호 작용 및 빠른 배포라는 세 가지 주요 원칙을 따르는 오픈 소스 프레임워크입니다. 즉, Streamlit을 사용하면 프런트 엔드 및 스타일링 프레임워크를 사용하는 방법을 알 필요 없이 시각적으로 매력적인 대시보드를 만들 수 있습니다. 이 패러다임을 통해 시스템은 스타일링 세부 사항을 무시하고 KPI를 정의하고 KPI를 나타내는 데 더 나은 방법을 정의하는 데 모든 주의를 집중할 수 있습니다.
알테어. 데이터 시각화 도구. Altair는 Matplotlib와 유사한 목표를 가지고 있지만 다른 원칙을 기반으로 합니다. 코딩 스타일은 선언적 패러다임을 따르며 구문은 JSON 형식과 유사합니다.
팬더 . 테이블 형식 데이터를 탐색, 정리 및 조작하는 데 사용할 수 있는 라이브러리입니다. 여러 테이블 조인, 누락된 값 채우기, 변환, 정리, 필터링 및 쿼리를 허용합니다.
Scikit 학습 . 라이브러리는 데이터 분석을 위한 여러 도구를 제공합니다. 기계 학습 및 통계 모델, 교육 일정, 오류 정량화 및 데이터 예측을 위한 지표. 이 Scikit-Learn을 사용하면 빠르고 쉽게 데이터를 분석할 수 있습니다. 그러나 구현된 모델은 최첨단 모델이 아닙니다.
넘피 . Python 생태계 내에서 수치 계산에 필요한 시간을 개선합니다. Numpy의 기본 데이터는 N차원 배열로 구성됩니다.
피클 . 이 도구는 Python 개체의 직렬화 및 역직렬화에 사용됩니다.
데이터세트
이 프로젝트는 종단 간 선별된 데이터 과학 프로젝트를 수행하는 것이 아니라 Streamlit이 제공해야 하는 것을 탐색하는 데 중점을 둡니다. 따라서 우리가 선택하려는 데이터 세트는 거의 순전히 운에 따라 선택됩니다.
우리의 연구 결과는 시애틀(미국) 주택 시장 데이터 세트로 구성됩니다. 인스턴스는 2014년 5월과 2015년 5월 사이에 수집되었습니다.
구성 요소
이제 최종 대시보드에 추가되는 여러 구성 요소를 확인할 차례입니다. 내 Github 페이지에서 전체 구현을 확인하십시오(https://github.com/LOCLuisPereira/streamlit_house_market).
초기 KPI 지표
이 KPI 메트릭은 사용자가 가장 먼저 보는 것입니다. 중요한 정보를 간결하게 전달해야 합니다. Streamlit은 KPI 제목, 값 및 델타를 정의할 수 있는 카드와 유사한 구성 요소(streamlit.metric)를 제공합니다. 식별, 정량화 및 측정 값 변동에 사용됩니다.
우리의 경우 총 주택 수와 시애틀 주택 시장에 대한 기타 평균(예: 평균 주택 가격, 바닥 상태 수 등)이 있습니다.

시애틀 지도 및 주택 분포
Streamlit에는 개발자가 단어 또는 도시 지도(streamlit.map)를 빠르게 만들 수 있는 지도 구성 요소가 있습니다. 이 구성 요소는 사용자 정의 수준이 낮기 때문에 매우 간단하고 복잡한 요구 사항이 아닙니다.
예를 들어 주어진 도시의 인스턴스 분포를 확인하려면 구성 요소로 충분합니다. 그러나 클러스터 분포와 해당 색상을 시각화하려면 다른 도구가 필요합니다.

클러스터링 시각화를 위해 알테어 맵 그래프 사용
Streamlit의 기본 지도 구성 요소는 내부적으로 Altair를 사용합니다. 저것과 같이 쉬운. 이전에 이 구성 요소는 플러그 앤 플레이 방식이지만 어떤 종류의 사용자 정의도 제공하지 않는다고 언급했습니다. 기본 구현의 대안은 Altair Chart를 사용하고 Streamlit-Altair Chart 구성 요소와 연결하는 것입니다.
위치가 핵심입니다. 특히 주택 시장 사업에. 같은 집이라도 바다 근처에 있거나 대도시 안에 있다는 것만으로도 그 가치가 20배가 될 수 있습니다.
이것이 사실인지 확인하기 위해 실험을 진행했습니다. Scikit-Learn과 K-Means 구현을 사용하여 서로 다른 수의 클러스터(2에서 10까지)로 알고리즘을 실행합니다. 경도와 위도가 특징으로 사용되었습니다. 매 실행마다 평균 주택 가격을 확인합니다.
마지막 단계인 시각화는 세 가지 구성 요소를 병합하여 이루어졌습니다. 원하는 클러스터 수를 선택하기 위한 슬라이더입니다. 인스턴스와 해당 맵의 위치를 표시하기 위한 Altair 맵. 그리고 각 클러스터의 평균 가격을 표시하기 위한 데이터 프레임.


결국 위치가 정말 중요합니다. 남쪽에서 북쪽으로 갈수록 집값이 올라간다. 시애틀의 왼쪽에 있는 집들은 덜 비싼 경향이 있습니다. 주택 시장에서는 여러 요인이 가격에 영향을 미칠 수 있습니다. 예를 들어 오른쪽에 있는 집은 본토에 더 가깝고 시애틀의 다른 지역이나 가까운 도시로 이동하기 쉽습니다. 이 이유는 중요하지 않지만 주택 최종 가격에 영향을 줄 수 있습니다.
등급 및 상태
이 구성 요소는 간단하고 짧습니다. 두 개의 막대 차트 `streamlit.bar_chart`를 사용하여 등급 및 조건 분포를 플로팅했습니다. 그래픽을 시각화하여 대부분의 인스턴스가 중간에 있다는 결론을 내립니다(두 그래프 모두).

이 두 기능을 서로에 대해 플로팅했습니다. 평균 점수가 중립적이라고 생각하면 대부분의 하우스는 점수의 중립 쪽에 있는 경향이 있습니다. 중립적이지 않으면 소심한 양의 점수로 떨어집니다.

주택 개조는 어떻습니까? 또 다른 KPI 세트
streamlit.metric을 사용하여 세 가지 인라인 KPI 메트릭을 구현하여 주택 개조와 관련된 데이터를 빠르게 분석했습니다. 우리는 개조된 주택의 수, 나머지 주택에 대한 대표성, 건축 연도와 개조 연도 사이의 기간을 보여주었습니다.

대시보드를 보면 914채의 주택이 개조되었음을 알 수 있습니다. 그리고 주택은 지어진 지 56년이 지나면 복원되는 경향이 있습니다.
라인 차트가 없는 대시보드? 불가능한…
꺾은선형 차트는 매우 일반적인 경향이 있습니다. Streamlit은 빠르고 쉬운 방식으로 구성 요소를 구성할 수 있는 랩 구성 요소를 제공합니다. 대시보드에서 이를 사용하여 월별 주택 판매를 확인합니다.

잠깐 살펴보세요… 가장 많이 팔린 달은 2014년 7월과 2015년 4월이었습니다.
침실과 욕실? 쌓거나 균형을 잡으시겠습니까?
때로는 더 많은 것이 더 나은 것과 밀접한 관련이 없습니다. 그것을 확인하거나 반박하기 위해 침실, 욕실 수 및 각 침실-욕실 조합의 평균 가격과 관련된 히트 맵 문자를 구현합니다.
새 그래프를 보면 침실과 욕실 수의 균형이 기본임을 알 수 있습니다. 업계에서는 침실보다 1:1 비율과 더 많은 욕실을 선호합니다.
침실을 쌓을 때 가격은 같은 범위에 있는 경향이 있습니다. 그러나 욕실을 추가하면 가격이 항상 상승하는 경향이 있습니다.

이는 간단한 추론을 통해 설명할 수 있습니다. 사람들은 기다리는 것을 좋아하지 않으며, 사람들은 극도로 사적인 공간을 공유하는 것을 좋아하지 않습니다. 요컨대 거주자와 손님이 더 높은 수준의 프라이버시를 가질 수 있도록 하면 자산의 가치가 높아집니다.
저는 시애틀에 부동산이 있습니다… 공정한 판매 가격을 찾도록 도와주실 수 있나요?
우리는 이 질문을 두 가지 더 작은 문제로 분해할 수 있습니다. 사용자에서 정보 시스템으로 정보 흐름을 연결하기 위해 무엇을 할 수 있습니까? 그리고 기계 학습 알고리즘을 사용하여 데이터를 소화하고 주어진 입력 정보에 가능한 가격을 부여할 수 있습니까?
Streamlit은 사용자와 시스템 통신을 자동으로 연결하는 여러 구성 요소를 제공합니다. 이 특정한 경우에는 양식 구성 요소를 사용할 것입니다. 이러한 구성 요소는 데이터 제출을 트리거하는 최종 버튼의 유일한 요구 사항으로 다른 구성 요소를 병합할 수 있습니다.

양식 구성 요소의 정보는 사전 훈련된 두 모델에 공급됩니다. 추론 후 데이터는 대시보드로 전송되고 사용자는 두 가지 가능한 추정 값을 볼 수 있습니다.
프로젝트의 임무는 대시보드를 구축하고 대부분의 Streamlit 구성 요소를 탐색하는 것이므로 Scikit-Learn에서 구현되는 두 가지 기본 기계 학습 모델 알고리즘을 사용했습니다. 결국 전체 데이터에 대해 0.54 및 0.87 R2 점수를 갖는 Bayesian Ridge 및 Random Forest가 있습니다.

왜 0.54 점수의 모델을 유지해야 할까요? 우리는 농담으로 지켰습니다. 모델은 때때로 음수 값을 출력합니다. 즉, 모델은 우리가 집을 살 수 있고…
Dataframe 내부에는 무엇이 있습니까?
이 작업을 위해 Streamlit은 세 가지 옵션을 제공합니다. 하나는 정적 테이블용, 하나는 데이터 프레임용, 다른 하나는 JSON용입니다. 여기서 우리는 마지막 두 가지에 초점을 맞출 것입니다.
Dataframe의 함수는 데이터셋의 구조를 표 형식으로 시각화할 수 있는 표를 출력합니다. 열을 오름차순 또는 내림차순으로 정렬할 수 있으므로 시각화 및 데이터 의미 체계가 향상됩니다.

JSON의 출력은 Python의 JSON 라이브러리에서 가져온 들여쓰기가 있는 덤핑 함수와 유사합니다.

두 구성 요소 모두 사용 사례가 있습니다. 데이터 프레임 구성 요소를 사용하여 정보를 신속하게 분석하고 예를 들어 최대값, 최소값 찾기, 누락 또는 null 값 확인 등을 수행할 수 있습니다. JSON은 데이터 구조와 데이터 세트의 각 필드를 제외한 유형을 확인하는 데 탁월합니다.
최종 테이크
이것이 이 프로젝트의 끝입니다. 우리는 섬세하거나 최신 알고리즘을 탐색하지 않았습니다. 그것들은 이론과 구현에서 단순했습니다. 그러나 이 구현을 통해 우리는 프레임워크가 얼마나 좋은지, 우리 스택과 호환되는지에 대한 질문에 답하고 숙고할 수 있는 위치에 있습니다.
결국 Streamlit은 제안하는 것을 제공할 수 있습니다. 대시보드를 만드는 것은 스크립트를 작성하는 것만큼 쉽습니다. 데이터는 상호적이고 조직적인 방식으로 표시됩니다. 시연하지는 않았지만 프로토타입 배포는 빠르고 쉽습니다.
현재로서는 두 가지 가능한 단점만 볼 수 있습니다. 라우팅 및 스타일링. 다중 페이지 대시보드를 위한 라우팅. 현재 스타일 지정 메커니즘을 확장하고 더 높은 수준의 사용자 지정을 허용하는 스타일 지정.
Streamlit에 대한 제 개인적 견해는 간단합니다. 다른 프로젝트에서 사용하게 되어 매우 기쁩니다. 프로토타입 또는 사내 대시보드를 빠르게 생성하고 결과는 미학적으로 만족스럽고 EDA는 훨씬 더 흥미진진해집니다. 프런트엔드에서 데이터를 얼마나 간단하게 시각화할 수 있기 때문입니다.
보너스. 실시간 대시보드는 어떻습니까?
우리 프로젝트에서는 실시간 데이터 업데이트가 필요하지 않았습니다. 그러나 Streamlit은 실시간 데이터 시각화를 구현하는 방법을 제공합니다. 메커니즘은 간단합니다. 빈 구성 요소를 만들고, 루프를 설정하고, 데이터를 가져오고 공급합니다... 짜잔! 지속적인 실시간 데이터 스트림. 프레임워크 기능의 증거로 아래 이미지를 참조하십시오.


그것은 그! 다음에 보자.