项目作者: Soyeon-ErinLee

项目描述 :
SSS Index Analysis Prediction and Visualization
高级语言: Jupyter Notebook
项目地址: git://github.com/Soyeon-ErinLee/KU-SK-FutureHall-SSS.git
创建时间: 2020-05-23T02:33:55Z
项目社区:https://github.com/Soyeon-ErinLee/KU-SK-FutureHall-SSS

开源协议:

下载


📙 2020 KU 스마트 캠퍼스 해커톤

SK미래관 SSS지수 분석 앱 개발: 개인 맞춤형 학습공간 추천 시스템

최우수상 수상작

" class="reference-link">Alt text

➊ Code 폴더 - App개발 코드(Pycharm, .py, .kivy) 폴더
  • 해당 폴더는 앱 개발을 위해 사용된 코드와 이미지 파일로
    앱을 실행시키기 위해서는 ‘App개발 코드’ 폴더를 한 번에 다운 받아야 함.
    폴더에 존재하는 “main.py” 파일에 앱을 실행하기 위한 메인 소스 코드가 포함되어 있으며,
    이를 실행하기 위해선 아래 메뉴얼을 참고.

    1. Anaconda 3 다운로드 및 설치 (https://www.anaconda.com/distribution/)

    2. Anaconda prompt를 실행하여 가상환경에 kivy 설치

      프롬프트 창에 아래 코드를 작성할 것.

      conda create -n my_python_env
      activate my_python_env
      conda install kivy -c conda-forge

    3. Pycharm 다운로드 및 설치 (https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=windows&code=PCC)

      설치 시 설치 옵션에서 create associations-.py의 박스에 체크할 것.

    4. Pycharm 실행 - Settings - Project Interpreter 설정

    5. 추가 버튼을 클릭하여 conda environment - existing environment 선택 -
      interpreter 경로는 users/이름/Anaconda3/envs/my_python_env(가상환경)/python.exe

    6. New projects 생성 - ‘App 개발 코드’ 폴더를 경로로 설정, 그중 main.py 파일 불러오기

    7. main.py 파일 실행 시 구현된 애플리케이션이 구동되는 것을 확인할 수 있음.

#
➊ Code 폴더 - Google Colab 데이터 분석 코드(.ipynb) 폴더
  • 해당 폴더 내 파일들은 .ipynb 형식의 파일로, Google drive 내 Google Colaboratory를 통해 실행하거나, Anaconda 3의 Jupyter(Notebook / Lab)을 사용하여 열람해야 함. (Google Colab 사용 권장) 기본적으로 실행되어있는 상태이며, 재실행을 원할 경우 코드 왼쪽의 PLAY 버튼을 클릭할 것 *

    [Converting API data to csv.ipynb]

    1. iot.api(https://datahubapi.korea.ac.kr/datathon/iot) 를 통해 실시간으로 업데이트되는 API 데이터를 가공하고 구현된 파이썬 코드와 호환되도록 .csv 파일로 저장하는 코드

    [Crawling Weather Data.ipynb]

    1. 기상청에서 실시간으로 배포하는 성북구 안암동의 온도 습도를 크롤링하기 위해 사용되는 코드

    [Data Preprocessing.ipynb]

    1. 제공된 SK 미래관 IoT 센서 데이터를 통합한 "data.csv"파일로 데이터 전처리 EDA 시행한 코드.
    2. co2, dust, temperature, humidity 변수의 분포 측정, '시간' 'Floor' 변수 추가를 통해 시간별, 층별 그룹화 진행.
    3. 변수의 분포 시각화, 상관 관계 분석 PCA, 층별 다중비교를 위한 Tukey's HSD test 등 변수의 전반적인 특성을 파악하고 시각화하기 위한 코드.

    [Regression with Weather Data.ipynb]

    1. 크롤링한 기상청 온/습도 데이터만으로 기타 학습 공간의 온/ 습도를 추정하는 회귀식을 적합해보기 위해 사용된 코드

    [Regression Time Series AR(8) Model vs Weather + Each Variable + Mean.ipynb]★

    1. 기타 학습 공간의 온/습도 데이터를 주변 학습 공간의 온/습도 데이터와 기상청 온/습도 데이터로 추정하는 회귀식을 적합하기 위해서 사용된 코드.
    2. 시계열 AR(8) 모형을 사용하여 적합한 식과 'Weather + Each Variable + Mean' 모형의 비선형 회귀식을 비교.
    3. 이밖의 다른 코드들에서 적합된 회귀식과도 비교. Stepwise Selection 통해 가장 낮은 AIC를보이는 'Weather + Each Variable + Mean' 모델이 최종적으로 선정되었음.
    4. 즉, 최종적으로 선택된 회귀식은
    5. '기타 학습 공간의 온도/습도 ~ 기상청 데이터를 통해 수집된 성북구 안암동의 온도/습도 + 주변 공간의 온도/습도 + 주변 공간의 온도/습도의 평균'이다.

    [Regression with Interaction.ipynb]

    1. 기타 학습 공간의 온/습도 데이터를 주변 학습 공간의 온/습도 데이터와 기상청 온/습도 데이터로 추정하는 회귀식을 적합하기 위해서 사용된 코드.

    [Regression with Mean Variable.ipynb] 코드에서 적합한 회귀식에 추가적으로 기상청 온/습도 데이터와 주변 학습 공간 데이터의 교호 작용 (Interaction Term) 변수를 추가함.

    [Regression with Mean Variable.ipynb]

    1. 기타 학습 공간의 온/습도 데이터를 주변 학습 공간의 온/습도 데이터와 기상청 온/습도 데이터로 추정하는 회귀식을 적합하기 위해 사용된 코드.
    2. 여기서 Mean Variable "주변공간.txt" 파일에서 정의된 기타 학습공간에 대응되는 '주변 학습 공간' 온도 습도의 평균으로 만들어진 새로운 변수를 의미함.

    [SSS지수 개발작업(with 0616 data).ipynb]

    1. 2020 6 16일의 IoT 센서 데이터를 예시로, SSS지수를 계산하는 코드.
    2. 음수값, 지나치게 들을 제거하는 이상치 제거 코드, 사용자 맞춤형 가중치 계산 코드,
    3. 점수화 알고리즘에 따라 환경 변수에 점수를 부여하는 코드,
    4. 그리고 환경 변수들의 점수를 가중평균하여 SSS지수를 계산하는 코드가 포함되어 있음.
    5. 결과물로 '0616SSSdata.csv' 파일이 출력되도록 코딩되어있음.

    [SSS지수 시각화 구현(with 0616 17시 data).ipynb]★

    1. 앞서 [SSS지수 개발작업(with 0616 data).ipynb]의 결과물인 "0616SSSdata.csv"파일과 "0616weather_data.csv"파일을 불러와 2020 6 16 5 SK 미래관 내부 캐럴실 스터디룸과 기타 학습 공간의 SSS지수를 약도 위에 시각화하여 나타내는 코드.
    2. 기타 학습 공간의 SSS지수는 앞서 구현된 회귀 모형에 의해 예측된 값.
    3. 프로젝트의 가장 메인 코드

    [T-test comparison(humidity).ipynb]

    1. "data_for_regression.csv" 파일의 데이터를 통해 2020 8 11 5시경 아두이노 장치를 통하여 직접 측정한 기타 학습 공간의 온도와 SK 미래관 IoT 센서 API 통해 측정된 스터디룸 캐럴실의 습도에 차이가 있는지 알아보기 위해 T-test 적용한 코드.

    [T-test comparison(temperature).ipynb]

    1. "data_for_regression.csv" 파일의 데이터를 통해 2020 8 11 5시경 아두이노 장치를 통하여 직접 측정한 기타 학습 공간의 온도와 SK 미래관 IoT 센서 API 통해 측정된 스터디룸 캐럴실의 온도에 차이가 있는지 알아보기 위해 T-test 적용한 코드.
#
➊ Code 폴더 - 기타 코드(.R, .ino) 폴더
  • 해당 폴더 내 파일은 아두이노 장치를 통한 ‘기타 학습 공간’ 온/습도 측정을 위해 사용된 .ino 코드와
    회귀 모형 최적화를 위한 Quadratic Programming 실행용 R 코드로 구성됨.
    .ino 파일의 경우 Wemos 온습도 측정 전용 드라이버와 라이브러리를 설치해야 하며,
    R 코드의 경우 R 또는 R Studio를 설치하여 실행해야 함.

    [code.ino]

    아두이노 장치를 통해 SK 미래관 내 온/습도를 직접 측정하기 위한 실행 코드

    [Quadratic Programming.R]

    QP Solver를 이용하여 회귀식의 손실함수를 최적화하기 위해서 사용된 코드

    [stop.ino]

    아두이노 장치를 통한 센서 측정을 중지하기 위한 코드

    [WiFiClient.ino]

    아두이노 장치를 무선 와이파이와 연결하는 클라이언트 코드

#
➊ Images 폴더

[floorB1-final.png ~ floor5-final.png]

  1. 보다 사용자 친화적인 UI 직관적인 시각화를 위해 도면을 기반으로 직접 그린 약도 이미지 파일.
  2. 이후 SSS 지수 시각화를 위해 필요.
#
➊ Raw Data(.csv or .txt) 폴더
  • 프로젝트에 사용한 모든 Raw Data. 열람하기 위해선 엑셀, 메모장, 또는 .csv / .txt 전용 리더가 필요하다.*

    [0616SSSdata.csv]

    1. 6 16 자의 iot 센서 데이터에 계산된 온도, 습도, co2, dust 각각의 점수와 이를 통해 계산된 SSS지수를 컬럼으로 추가한 데이터 파일.
    2. "SSS지수 시각화 구현(with 0616 17시 data).ipynb" 파일을 실행시키기 위해 필요.

    [0616weather_data.csv]

    1. 직접 크롤링한 6 16일자 기상청 온도 습도 측정 데이터.
    2. "SSS지수 시각화 구현(with 0616 17시 data).ipynb" 파일을 실행시키기 위해 필요.

    [0811weather_data.csv]

    1. 직접 크롤링한 8 11일자 기상청 온도 습도 측정 데이터.
    2. SK 미래관 '기타 학습 공간' 환경 변수(온/습도) 예측 모형을 구축할 사용하였던 데이터이다.

    [data.csv]

    1. .txt 파일로 제공받은 여러 IoT 센서 데이터 파일을 합하여 가공하기 쉬운 형식의 .csv 파일로 통일한 파일

    [data_for_regression.csv]

    1. SK 미래관 기타 학습 공간의 환경 변수(온/습도)를 예측하는 회귀식을 적합하기 위해 사용된 데이터.
    2. 2020 8 11 기타 학습 공간에서 30분씩 아두이노 장치를 통해 직접 측정한 데이터와 동시간대에 SK 미래관 IoT 센서 API에서 측정된 강의실 데이터를 병합해놓은 파일.

    [iot_11_5322.txt ~ iot_11_5325.txt]

    1. 2020.06-2020.07 측정된 SK 미래관 iot 센서 데이터.

    [iot_11_26.txt ~ iot_11_34.txt]

    1. 2020.01-2020.03 측정된 SK 미래관 iot 센서 데이터.

    [roompixel.txt]

    1. 자체 제작한 SK 미래관 약도 (Images 폴더 png 파일 참조) 위에 SSS지수를 시각화하기 위해 학습 공간(강의실, 기타 학습 공간 등)과 약도 픽셀 값을 매칭시킨 텍스트 파일. 이후 SSS지수 시각화 코드 작동 위해 필요.

    [주변공간.txt]

    1. 기타 학습 공간의 환경 변수를 예측 필요한 '주변 학습 공간' 정의해 놓은 파일.
    2. 기타 학습 공간과 주변에 존재하는 학습 공간(캐럴실 스터디룸)을 매칭하여 정리해놓은 파일.
#