Skip to content

tyhan02/Mini_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini_Project

파이썬 미니프로젝트- 제주도 퇴근 시간 버스 승객 예측 분석 및 모델링

프로젝트 개요: 머신러닝/딥러닝을 활용하여 제주도의 퇴근 시간대에 탑승하는 버스 승객 수를 예측

파이썬을 사용하여 회귀분석을 수행하고, 훈련 데이터와 관련된 내용을 활용하여 예측 모델을 구축

-활용 장비 및 재료: 프로젝트는 Python, pandas, scikit-learn, tensorflow 등의 개발 환경과 라이브러리를 활용

데이터 전처리, 모델 선정, 최적의 모델 및 파라미터 탐색, 분석 및 예측을 위해 이러한 도구 및 자원들을 사용

-프로젝트 구조: 데이터 전처리: 사용할 데이터를 수집하고, 누락된 값이나 이상치를 처리하여 데이터를 정리

모델 선정: 회귀분석에 적합한 모델을 선택하고, 이를 구현

최적의 모델/파라미터 탐색: 다양한 모델과 파라미터를 실험하여 최적의 조합을 탐색

분석 및 예측: 최종 모델을 사용, 퇴근 시간대의 버스 탑승 승객 수를 예측 및 이를 분석

-기대 효과: 본 연구를 통해 효율적인 제주도 버스 배차 시간 및 정류장을 관리할 수 있는 정보를 얻을 수 있으며

이를 통해 교통 혼잡을 완화하고 승객들의 이동을 효율적으로 지원할 수 있다


컬럼 명

id 데이터 고유 ID(train, test와의 중복 없음)

date 날짜

bus_route_id 노선 ID

in_out 시내버스, 시외버스 구분

station_code 해당 승하차 정류소 ID

station_name 해당 승하차 정류소 이름

latitude 해당 버스 정류장 위도

longitude 해당 버스 정류장 경도

X-Y_ride X:00:00부터 X:59:59까지 승차한 인원 수

X-Y_takeoff X:00:00부터 X:59:59까지 하차한 인원 수

18-20_ride 18:00:00부터 19:59:59까지 승차한 인원 수


numpy, pandas, keras의 Sequential 모델과 Dense 레이어, sklearn의 MinMaxScaler, train_test_split, KFold, r2_score, mean_squared_error 등을 import, 또한 시각화를 위해 matplotlib의 pyplot을 import

-train.csv 파일을 데이터셋으로 읽어오기

  • x와 y 데이터를 설정, x는 'id', 'bus_route_id', 'in_out', 'station_code', 'station_name', 'latitude', 'longitude', '6-7_ride', '7-8_ride', '8-9_ride', '9-10_ride', '10-11_ride', '11-12_ride', '6-7_takeoff', '7-8_takeoff', '8-9_takeoff', '9-10_takeoff', '10-11_takeoff', '11-12_takeoff' 열을 포함

  • 'ride' 카테고리에 대한 열들을 활용하여 새로운 특성을 생성, ex) 'takeon_avg_6-8'은 '6-7_ride'와 '7-8_ride'의 평균이고, 'takeon_avg_8-10'은 '8-9_ride'와 '9-10_ride'의 평균

  • 'takeoff' 카테고리에 대한 열들을 활용하여 새로운 특성을 생성, ex) 'takeoff_avg_6-8'은 '6-7_takeoff'과 '7-8_takeoff'의 평균이고, 'takeoff_avg_8-10'은 '8-9_takeoff'와 '9-10_takeoff'의 평균

  • 'date' 열을 datetime 형식으로 변환하고, 이를 활용하여 'year', 'month', 'day', 'weekday' 특성을 생성

  • 'ride'와 'takeoff' 열들에 대한 통계적 집계를 계산하여 새로운 특성들을 생성, 'takeoff_mean'은 'takeoff' 열들의 평균이고, 'ride_max'는 'ride' 열들의 최댓값

  • 주말 여부를 나타내는 'is_weekend' 특성을 생성, 주말인 경우 1, 주중인 경우 0의 값을 갖는다

  • 범주형 변수인 'in_out'과 'station_name'을 숫자로 인코딩, 'in_out'은 '시내'를 0, '시외'를 1로 mapping하고, 'station_name'은 고유한 값에 대해 숫자를 할당

  • 모든 범주형 변수를 one-hot encoding하여 새로운 열로 추가

  • 데이터셋을 훈련 데이터와 테스트 데이터로 나눈다, 훈련 데이터는 전체 데이터셋의 85%, 테스트 데이터는 15%를 차지하도록 설정

-다양한 스케일러를 사용하여 데이터를 정규화, 코드에서는 MaxAbsScaler를 사용 (스케일러별 비교 필수)

  • CatBoostRegressor를 포함한 다양한 회귀 모델을 훈련하고 평가, 훈련된 모델의 예측값과 실제값을 비교하여 R2 score를 계산

  • MSE(Mean Squared Error)를 계산하여 출력

  • 시각화를 위해 예측값과 실제값의 산점도 그래프를 표시

  • 예측 오차의 분포를 히스토그램으로 표시

  • 상관계수 히트맵을 그려 데이터 간의 상관관계를 시각화


About

파이썬 미니프로젝트- 제주도 퇴근 시간 버스 승객 예측 분석 및 모델링

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages