Sejong-Kaggle-Challengers / jeongmin

📌 Sejong Kaggle Challenger 이정민 레퍼지토리
0 stars 0 forks source link

[6주차] 퇴근시간 버스승차인원 예측 #6

Open mingxoxo opened 3 years ago

mingxoxo commented 3 years ago

https://dacon.io/competitions/official/229255/overview/

기온 공공데이터 사용 : https://data.kma.go.kr/stcs/grnd/grndTaList.do?pgmNo=70 강수량 공공데이터 사용 : https://data.kma.go.kr/stcs/grnd/grndRnList.do?pgmNo=69

mingxoxo commented 3 years ago

https://truman.tistory.com/97

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.value_counts.html

mingxoxo commented 3 years ago

LR과 NN으로 모델학습 시킨 결과 성능(오차)값의 큰 변화 없음. 모델 학습을 다른 것을 시도해보느냐가 큰 차이가 있는지 궁금하다.. 추측은 전처리를 어떻게 하느냐가 중요한 것이 아닌가 싶다.

mingxoxo commented 3 years ago

제주 기상정보 크롤링 selenium 사용

기상청 제주 기상자료 주소 : https://www.weather.go.kr/weather/observation/currentweather.jsp?auto_man=m&stn=0&type=t99&reg=184&tm=2019.10.25.16%3A00&x=16&y=10

mingxoxo commented 3 years ago

selenium - Colab에서 실행하기(chrome)

Selenium이란?

Selenium은 주로 웹앱을 테스트하는데 이용하는 프레임워크다. webdriver라는 API를 통해 운영체제에 설치된 Chrome등의 브라우저를 제어하게 된다. ‘눈에 보이는’ 컨텐츠라면 모두 가져올 수 있다.

참고 링크


전체 코드 : 1등_코드_날씨데이터_크롤링(colab_버전)

sys.path.insert : 다른 폴더(경로)에 있는 python 파일 import 가능하도록 경로를 환경변수로 지정 --> 경로를 환경변수로 설정하게 해주면 그 경로 안의 프로그램을 실행시킬 때 마다 경로를 매번 입력하지 않아도 된다.

import sys
sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')

from selenium import webdriver

#chrome의 option 설정
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') #chrome 창이 나오지 않게 해준다.
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

#1등 코드에서의 browser == driver
driver = webdriver.Chrome('chromedriver', chrome_options=chrome_options)

weather_data_10 = pd.DataFrame(columns = ['현재일기_10','현재기온_10','체감온도_10','일강수_10']) url = 'http://www.weather.go.kr/weather/observation/currentweather.jsp?auto_man=m&type=t99&reg=184&tm=2019.10.25.16%3A00&x=19&y=7' driver.get(url) #browser == driver

for i in range(0, 46): i+=1

id를 찾고 그 공간을 비운 후 새로운 값을 넣어준다 (날짜값,10시)

elem = driver.find_element_by_id('observation_text') elem.clear() elem.send_keys("2019.9.{}.10:00".format(i))

btn = driver.find_elements_by_class_name('btn') btn[2].click()

time.sleep(1) weathers = driver.find_elements_by_css_selector('td') weather_data_10 = weather_data_10.append(pd.DataFrame([[weathers[40].text,weathers[44].text, weathers[46].text, weathers[47].text]],columns=['현재일기_10','현재기온_10','체감온도_10','일강수_10']))

print('success !') driver.close()

mingxoxo commented 3 years ago

1등 코드 데이터 전처리 부분

  1. weekday(요일) 변환
  2. route_station = bus_route_id(노선ID) + station_code(해당 승하차 정류소의 ID)
  3. bus_route_id_weekday = bus_route_id(노선ID) + weekday(요일)
  4. station_code_weekday = station_code(해당 승하차 정류소의 ID) + weekday(요일)
  5. route_station_weekday = route_station(노선+정류소 ID) + weekday(요일)
  6. 예측 값이 18 ~ 20시 ride이므로 train 안의 1시간대로 나누어져있는 승/하차 인원을 2시간 단위로 합쳐주는 column 생성
mingxoxo commented 3 years ago

Query 함수는 아래 6가지 기능을 포함하고 있습니다. 1) 비교 연산자( ==, >, >=, <, <=, != ) 2) in 연산자( in, ==, not in, != ) 3) 논리 연산자(and, or, not) 4) 외부 변수(또는 함수) 참조 연산 -> 외부변수명 또는 함수명 앞에 @를 붙여 사용해야 한다. -> 또는 f-String를 이용하여 외부변수를 미리 참조하는 것도 방법 5) 인덱스 검색 6) 문자열 부분검색( str.contains, str.startswith, str.endswith )

출처 : https://blog.naver.com/wideeyed/221867273249

출처 : https://yganalyst.github.io/data_handling/Pd_13/#1-%EA%B7%B8%EB%A3%B9-%EA%B0%9D%EC%B2%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0--groupby

출처: https://rfriend.tistory.com/265 [R, Python 분석과 프로그래밍의 친구 (by R Friend)]

출처: https://devuna.tistory.com/67 [튜나 개발일기📚]

coords_jejusi = (33.500770, 126.522761) #제주시의 위도 경도
data['dis_jejusi'] = [geopy.distance.vincenty((data['latitude'].iloc[i],data['longitude'].iloc[i]), coords_jejusi).km for i in range(len(data))]

data의 위도 경도와 제주시의 위도경도의 거리를 계산한다. 여기서 km은 kilometers

출처 : https://geopy.readthedocs.io/en/release-0.96.3/

mingxoxo commented 3 years ago

출처: https://rfriend.tistory.com/275 [R, Python 분석과 프로그래밍의 친구 (by R Friend)]

출처 : https://ko.wikipedia.org/wiki/%EB%A9%B1%ED%8F%89%EA%B7%A0

filename = 'test.txt' src = 'home/banana/' dir = 'home/banana/txt/' shutil.move(src+filename, dir+filename)



> 출처 : https://ourcstory.tistory.com/96
mingxoxo commented 3 years ago

Light GBM

트리기반의 학습 알고리즘인 gradient boosting 방식의 프레임 워크 import lightgbm as lgb

image

출처 : 참고링크1 참고링크2