Skip to content

Abel3005/TSI

Repository files navigation

TSI (2024년 날씨 빅데이터 컨테스트 공모)

git 구조

파일

  • data
    • 데이터 파일 저장공간
  • images
    • 데이터 시각화 및 필요한 이미지 저장
  • model
    • 학습한 모델 정보
  • report
    • 유의미한 정보분석을 위한 보고서 저장

코드

  • util.py : 각종 필요한 사용자 정의 함수 정의
  • metric.py : DNN에서 모델 성능 측정에 필요한 함수 정리
  • model.py : DNN 모델 및 해당 모델에 필요한 데이터 셋 정의 함수 정리
  • ML_ADH.ipynb : 일자가 중복된 데이터 중 특정한 범위의 데이터에서만 보팅을 수행
    • 다수의 데이터의 보팅을 수행해도 성능차이가 크지 않음
  • ML_MDH.ipynb : 머신러닝 최소(M) DH를 사용하는 모델 정리(현재 최종 결과물 제출 파일)
  • Model.ipynb : DNN 머신러닝 모델 코드
  • cluster.ipynb: 클러스터를 접근법 사용 코드
  • EDA.ipynb : 전체적인 데이터 분석 코드

목적 : 수치모델 앙상블을 활용한 강수량 예측

  • 3시간 강수량 확률(앙상블 모델들을 통해서 나온 값)을 사용하여 누적 강수량을 예측

  • 정확한 강수량을 예측하는 회귀 분석 문제가 아닌 강수량의 정도에 따른 구간별 계급을 예측하는 분류분석 문제에 해당

데이터 분석

변수 파악

분류 계급 10개 - 강수량이 0.1mm 미만인 경우는 따로 변수 추가 안함

v010.1mm 이상 강수V020.2mm 이상 강수
v030.5mm 이상 강수V041.0mm 이상 강수
v052.0mm 이상 강수V065.0mm 이상 강수
v0710.0mm 이상 강수V0820.0mm 이상 강수
v0930.0mm 이상 강수

물리적 변수 명세

TM_FCDH, TM_EF

rainfall_train.fc_year

  • 3년 간의 강수량임을 확인
  • B년도의 분포가 적은편

rainfall_train.fc_month

  • 5-9월 간의 데이터

rainfall_train.fc_hour

  • 오전 9시, 오후 9시 발표된 데이터

rainfall_train.stn4contest

  • 총 20개 지점

  • 각 지점마다 약 72000개의 데이터

  • DH 3의 배수를 가지며 최대 240읠 값을 가짐

  • TM_EF = TM_FC + DH

  • 발표 시각으로 부터 몇시간 떨어져 있는지를 DH 정보가 나타내고 TM_EF는 그것을 반영한 시간입니다.

  • 발표시간이 12시간 간격임을 고려할 때 TM_EF의 값은 여러개가 됨을 알 수 있습니다.

  • 이전 발표시각에서 예측한 시간과 다음 발표시간에서 예측한 시간이 겹쳤기 때문입니다.

  • 그 예측된 시간에 따라서, 실강수량이 제시됩니다.

(df.groupby(by=['TM_EF','STN'])['VV'].nunique() > 2).sum()
>> 0
(V01 - V09)강수계급(classs_interval)
  • 무 강수를 제외한 누적확률 값으로 int형으로 구성
  • 백분율을 기준으로 표현 되며, 각 단계별 확률을 구하기 위해서는 각 값의 차이 값을 골라야 한다.
  • 10개의 클래스를 가지고 있습니다.
  • 각각의 클래스는 불균형적으로 이루어져 있습니다.
  • 결측치가 존재

최종 모델

  • 무강수/강수 분류 모델
  • 강수 계급 분류 모델

예측 파이프라인

평가 방법

  • $CSI = \frac{H}{H+F+M}$

독립변수

  • 월과 일의 데이터 컬럼을 합쳐서 365일을 기준으로 주기성을 넣어주기 위하여 sin 함수와 cos 함수를 사용하여 전처리
  • 신뢰성 있는 정보를 사용하기 위해서 다양한 DH 값에 대해서 다양하게 전처리
    • 가장 빠른 DH 값만을 가져온다.
    • 평균을 적용
  • 각각의 확률값은 백분율에서 0~1 사이의 값으로 바꿔줌
  • train 데이터와 test 데이터의 지점 데이터가 달라서 STN을 쓰지 않는다.
  • 모든 데이터를 계산하고 투표하는 방식을 사용했지만 효과는 그렇게 크지 않음
  • 각각의 지점을 크게 4개의 클러스터로 분류해서 class_interval 데이터 분포를 바꿔줌
    • 0번째 클러스터: 9,10,11,12,13,14,18,20,22
    • 1번째 클러스터: 1,4,5,6,19
    • 2번째 클러스터: 15,16,17
    • 3번째 클러스터: 2,3,7,8,21,23,24,25
    • 모델 위치: "./model/cluster_kmeans.pkl"

ExtraTrees를 통하여 무강수/강수 분류

강수 클래스 구분 모델 학습

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published