본문 바로가기

분류 전체보기339

[스마트 수거함 입지 선정] 2. 행정동 PET 배출량 도출 ♻️ 순환경제 활성화를 위한 서울시 스마트 수거함 입지 선정 01. 전처리 : 자치구 기준 데이터 집계 행정동 단위 PET 배출량 데이터가 부재 ▶︎ 자치구별 데이터를 기반으로 '다중회귀분석'을 통해 행정동 배출량 예측 예정 자치구 단위 데이터 집계 feature : 거주인구 수 : 연령대 10대 이하 ~ 100세 이상 연령대별 거주인구수 생활인구 수 : 연령대별 생활인구 수 가구원 수 별 가구수 : 1인 가구 ~ 7인 가구 이상 거주인구 수 구별 페트병 배출량(자원순환정보시스템) : 2021년 전국 폐기물 발생 및 처리현황 참고 서울시 식품위생업소 및 공중위생업소 데이터 : 식품접객업 6종(휴게음식점, 일반음식점, 단란주점, 유흥주점, 위탁급식, 제과점) 수 02. 파생변수 생성 상관계수와 히트맵을 확.. 2023. 12. 19.
[스마트 수거함 입지 선정] 1. 주제 선정 배경 및 개요 ♻️ 순환경제 활성화를 위한 서울시 스마트 수거함 입지 선정 스마트 수거함이란? 캔 또는 투명 페트병을 기계에 투입하면 포인트로 적립해 현금이나 모바일 쿠폰으로 보상받을 수 있는 제도 투명 페트병 분리수거 의무화를 위해 설치되었지만 인지도와 참여율이 저조한 편이며, 번거롭다는 인식이 많음 플라스틱병 보증금 반환 시스템은 독일, 북유럽 등 EU 내 9개 국가에서 이미 자리 잡음 주제 선정 배경 한국에서 매일 1만 톤 이상 배출되는 폐플라스틱의 재활용률이 50% 미만임 순환 경제와 탄소 중립 실현의 핵심 역할을 하는 폐 플라스틱을 정작 돈 주고 사와야하는 수급 불안을 겪고 있음 폐플라스틱의 환경 위협을 극복하고 새로운 성장동력으로 만들기 위해 폐플라스틱의 수거 시스템 개선이 필요함 기대효과 ▶︎ 행정동별 스.. 2023. 12. 19.
01. 데이터 확인하기(행과 열, 변수 자료형) 🧐 잘 모르는 분야의 데이터를 처음 받아들었다면? 👉 데이터에 얼마나 익숙한지와 무관하게 일정한 루틴에 따라 데이터를 이해하는 것이 중요하다 데이터의 행이 어떻게 고유하게 식별되는가? (분석단위가 무엇인가?) 데이터셋의 행과 열은 몇 개인가 주요 범주형 변수(categorical variable)는 무엇이고 값의 빈도는 어떠한가? 중요한 연속변수(continuous variable)가 어떻게 분포하는가? 변수들은 서로 어떻게 연관되는가? 이상치와 누락값은 어떻게 분포하는가? 데이터 불러오고 확인하기 # 인덱스 설정(행의 고유값) df.set_index('personid', inplace = True) df.head() # 행과 열 크기 확인 df.shape # 인덱스 고유값 개수 확인 df.index.n.. 2023. 12. 15.
[선박 대기시간 예측] 예측 결과 활용 예시 & 기대 효과 01. 예측 결과 활용 예시 궁극적으로 선박 대기 시간의 '분' 단위 예측을 통해 선박이 최대한 바로 서비스할 수 있는 시간에 입항할 수 있도록 하고자 한다. 다음 예시는 오전 7시에 입항 예정인 선박과 선석의 정보이며, 그때의 기상상태를 가상으로 만들었다. 아래와 같은 상황에서 예상 대기시간은 511분으로 예측되었다. 02. 기대효과 기대효과 1. 선박 비용 측면 오차가 적은 대기시간 예측은 불필요한 선박 대기 비용을 줄여준다. 실제 어느 정도의 대기비용 절감 효과가 나타날지 측정하기 위해 논문을 참고하여 대기비용 산출 식을 재구성했다. 기대효과 2. 대기오염 감소 측면 선박 대기시간 감소의 추가 효과로 대기오염물질 배출 감소가 있었다. 위와 동일하게 선박 대기시간이 감소했을 때 어느 정도의 배출 감소.. 2023. 12. 15.
[선박 대기시간 예측] 파생변수 생성 + 선박 대기시간 예측 모델(LightGBM) 항만 대기시간 예측 및 운영시스템 개선을 위한 Feature Engineering + Model 구축 Feature Engineering 선박, 선석 기준으로 피쳐를 파악하고 나서 유의미한 파생변수를 만들고자 했다. 도메인 지식이 완전하지 않다고 여겨 논문들을 참고하여 총 6개 변수를 만들어 보았다. 변수 생성은 '선박'과 '선석'으로 기준을 나누어 진행했다. 1. 선박 일 별 누적입항 건수 선석 기준 변수로, 선박이 입항하고자 하는 선석에 그 전 시간대까지 몇 개의 선박이 입항했는지를 count 한다. df['이전_입항선박수'] = df.groupby(['ETA_Year', 'ETA_Month', 'ETA_Day', '계선장소명'])['호출부호'].cumcount() # 확인용 df[df['계선장소명.. 2023. 12. 15.
[선박 대기시간 예측] 시계열/선석 기반 EDA 항만 대기시간 예측 및 운영시스템 개선을 위한 EDA 🎯 목표 : 시계열 데이터의 주기성을 확인하고, 시계열 예측 모델(Prophet)을 만들어 결과 확인하기 (데이터는 액체화물과 비액체화물로 나누어 진행) 01. 연도별 월 별 대기시간 시각화(액체화물) 👉 목표 : 시간대별 대기시간 평균 / 건 수의 분포를 살펴 '시계열' 모델을 사용할 만 한 지 판단하기로 함 👉 결과 : 대기시간 평균은 뚜렷한 주기성은 보이지 않으나, 대기 건수는 월별로 편차가 있느 경향을 확인함 liquid['Datetime'] = pd.to_datetime(liquid['Datetime']) # 월별 접안_대기시간_분(평균) temp = liquid[['Datetime', 'ETA_Year','ETA_Month', '접안_대기시.. 2023. 12. 15.
[선박 대기시간 예측] 선박 기반 EDA target 항구인 울산항의 데이터를 종합하여 EDA 시행 01. 단순 EDA 접안 대기시간 유무 선박 용도별 접안대기 발생 비율 선박 용도별 접안 대기시간 평균 선박 용도별 대기율(방문순) 계선장소별 접안대기 발생비율(상위 10개) 상관 분석 Heatmap과 수치 (1) 접안 대기시간 유무 👉 전체 입항건 중 20%만 대기를 가지는 것으로 확인 # '접안_대기시간_분' 열이 0인 데이터와 0이 아닌 데이터의 갯수 계산 count_zero = (df['접안_대기시간_분'] == 0).sum() count_non_zero = (df['접안_대기시간_분'] != 0).sum() # Pretty colors colors = ['#FF9999', '#66B2FF'] # 막대 그래프 그리기 bars = plt.b.. 2023. 12. 15.
[선박 대기시간 예측] 3차 전처리 : 울산항 모델용 데이터셋 도출(결측치 처리) 울산항(TARGET 항구) 추가 데이터 수집 및 전처리 👉 울산항 입항 선박 제원 정보 + 해양 기상 데이터 병합 👉 결측치 채우는 전처리 과정 결측치 확인 호출부호, 입항일시 기준 중복 행을 제거한 후, 결측치를 확인 대기율, 선박 관련된 컬럼(총톤수, 재화중량톤수 등)과 기상 상태 컬럼(풍속, 풍향 등)이 있음 ▶︎ 대기율 결측치 대기율이 결측치인 레코드는 제거 대기율이 중요한 지표인데, Null이 발생한 이유를 찾아야 함 대기율을 도출하는데 필요한 '접안대기시간'과 '서비스 시간' 값이 모두 0인 것을 확인하고 삭제 결정 # 대기율이 null 인 데이터만 확인 rows_with_null = df[df['대기율'].isnull()] # null인 이유를 다른 컬럼과 비교하여 확인 rows_with_n.. 2023. 12. 15.
[선박 대기시간 예측] 2차 전처리 : 중복값 처리 항만 대기시간 예측 및 운영시스템 개선을 위한 2차 전처리 🎯 1차 전처리 결과 : 입출항 1건 당 여러 건의 시설사용허가현황 데이터가 존재함 🎯 목표 : 선박별 입출항 1건을 기준으로 중복행 제거 01. 중복 컬럼 확인 : 호출부호, 입항일시 기준 👉 143,915 rows 중에 71,439 rows 중복 duplicate = df.duplicated(subset=['호출부호', '입항일시']).sum() duplicate 02. 접안대기시간, 출항대기시간 결측치 = 0 처리 df['출항_대기시간_분'].fillna(0, inplace = True) df['접안_대기시간_분'].fillna(0, inplace = True) 03. groupby + aggregation으로 중복행의 대푯값을 추출 Gro.. 2023. 12. 15.
728x90