Skip to content

ainochi-kor/predict-bus-stop-with-fuzzy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FuzzyPredictBusStop

: 지금 세상에 이용되고 있는 버스 정류장의 예측 시간은 정확하지 않다. 그 이유는 버스의 좌표값과 정류장의 좌표값을 이용하여 거리에 따른 시간을 나타내기 때문이다. 방대한 데이터로 인해, 데이터 셋에 속도가 빠른 데이터를 적용한다면, 오차율을 줄일 수 있다고 판단하였다.

목표

: 네이버(Naver) 포털사이트에 있는 알고 싶은 버스 노선의 정류장 정보를 크롤링하고, 부산교통공사의 해당 버스의 데이터를 크롤링한다. 그 값들을 정제하여, 버스 지연 시간을 계산한 후, 버스 예상 도착시간에 추가하여 지연을 최소화 하도록 한다

  • [01_Bus_Location]: 해당 시간의 해당 번호의 버스들의 위치를 파악하여 크롤링하여 CSV파일에 버스 번호, 현재 위치, Date를 추가한다.
  • [02_Bus_Stop]: 해당 버스 번호의 버스 정류장 경로 정보에서 버스 정류장의 번호와 정류장 이름을 CSV파일에 저장한다.
  • [03_BusStop_Refine]: 02에서 추출한 CSV파일 중 정류장 번호가 없는 행을 제거하고, 정류장 사이의 '-'문자를 제거하여 다시 CSV파일로 정제한다.
  • [04_BusStop_Infomation]: 03에서 정제한 버스 정류장 파일을 이용하여, 원하는 정류장을 정한 뒤, 해당 버스 정류장의 원하는 버스의 도착 예정시간을 크롤링하여 CSV파일로 저장
  • [05_Extract_BusStop_Refine_Sum]: 04에서 추출한 모든 CSV파일 중 '버스 번호의 오전or오후'를 하나로 통합한다.
  • [06_Extract_BusStop_Refine_Time]: 05의 CSV파일의 Date의 년월일시분초를 년월일, 시, 분, 초로 나누어서 다시 저장하도록 한다.
  • [07_Extract_BusStop_Refine_MissingDataAndDataDiet]: 06의 CSV파일 중 결측행을 제거하고, '정류장 번호,날짜,시간,분'을 기준으로 데이터를 줄이도록 한다.
  • [08_Sort_BusStop_Data]: 07의 데이터를 정류장 별로 데이터를 정렬하도록 한다.
  • [09_Fuzzy_Bus_Stop]: 08폴더에서 가져온 CSV파일을 기초로 한다. 이 프로그램은 퍼지 알고리즘을 이용하여 버스 정류장과 시간을 입력하면 지연시간을 계산하여, 예정 도착 시간을 알려주도록 한다.


웹 크롤링 및 데이터 셋 구축


그림 1. 부산교통공사 17번 버스 정보


URL 1. [그림1-1]의 URL


[그림 1]은 검색한 시간의 버스 정보를 나타낸 것이다. 이 정보를 BeautifulSoup 라이브러리와 Selenium 라이브러리를 이용하여, 웹 사이트를 크롤링하였다. [URL 1] + “버스 번호”를 입력하면 해당 [그림1]이 나오게 되며 17, 40, 68, 81, 138-1의 버스 위치 데이터를 추출하였다.


CSV 1. 버스 위치 데이터


추출된 버스 데이터는 버스 번호, 버스 정류장 이름, 검색한 시간의 날짜, 시, 분, 초를 한 행으로 CSV파일을 만들었다.


그림 2. 17번 버스의 정류장


[그림 2]는 네이버 지도에 17번 버스를 검색하여 나타낸 결과이다. 버스 정류장 데이터를 가져오기 위해, 개발자 모드로 변환하여, 해당 데이터를 라이브러리를 이용하여 추출하였다.

About

버스 도착 기록들을 Fuzzy 삼각 함수를 이용하여 버스 예상 도착 시간 예측

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published