728x90

택시 수요예측 시각화를 끝냈습니다 다만 에러가 한 가지 발생했는데

이 에러는 강사와 똑같은 코드인데도 불구하고 발생한 에러 현상입니다 도저히 이유를 알 수가 없었습니다 

plt.figure(figsize=(16,6))
sns.boxplot(x='hour', y='cnt', data=base_df3)

참고로 base_df3은 아래와 같습니다

제 생각엔 y축 cnt 맨 하단에 박스가 있는걸로 봤을 때 

전체를 대상으로 계산된 박스가 아니라 특정 몇개만을 가지고 박스가 계산된 걸로 생각됩니다

 

일단 이 문제를 뒤로하고 모델을 어떤걸 써야 할지 고민하다가 파이썬 머신러닝 완벽 가이드 책을 보면서 앙상블 기법을 공부했습니다 평소에 XGBoost, LightGBM에 관심이 있었던 터라(캐글에서 유명한 모델이라는 소문을 들었습니다) 실습도 진행해 가면서 살펴봤습니다 실습한 코드는 내일쯤에 업로드할 예정입니다 

 

그 외에도 스태킹과 딥러닝의 RNN 등 여러 모델을 공부해서 견문 좀 넓히려고 합니다:)

머리에 인풋이 있어야 활용을 할 수 있으니까요 

 

아마 다음주도 모델 공부를 계~속 할 것 같아요 

이번 프로젝트 기회로 여러가지를 경험할 수 있어서 좋은 것 같습니다

 

CNN이나 토픽 모델링을 했을 때와는 다르게 이번에는 시간을 좀 넉넉하게 하려고 합니다 

목표는 다음 주까지 완성하는 건데, 시간에 쫓겨서 대충 만들기는 싫으므로 완성도 있게 만들도록 노력해보겠습니다

 

실습 코드보기↓

ghdrldud329.tistory.com/12

728x90
728x90

어제에 이어서 시각화를 진행했습니다~

크게 막히는 것은 없었지만 생각을 많이 해야 했던 부분이 있었습니다

 

바로 데이터의 의미를 파악하는 것이죠 

시각화를 해도 무슨말인지 어떤 의미를 가지는지 모른다면 말짱 도루묵 이니까요

 

그래서 제 나름대로 좀 생각정리하는데 시간이 좀 걸렸죠

한 가지 특이한 점이

택시 운행 거리가 증가를 하는데 비용이 그만큼 들지 않았다는 겁니다

 

장거리 운행을 하게 되면 당연히 비용이 많이 오를 텐데... 그 반대 현상이 일어났죠

상관관계도 0.07을 보였습니다 

 

상당히 의아했고 좀 충격이었어요 이게 무슨 일인가 싶어서 뉴욕 택시 요금이나 구글링을 해봤는데 

확실한 근거는 못 찾았답니다 

 

새로운 발견을 한 것 같아서 재미있었고 흥미로웠습니다 빨리 데이터를 능숙히 다뤄서 재미있게 회사에 다니고 싶어요:)

오늘은 zip_code 위주로 시각화를 했고 내일까지는 시간대 별 시각화로 마무리 지을 예정이에요

 

그 이후로는 모델링을 어떻게 해볼 건지 공부하고 고민해볼 생각입니다 카카오 브레인의 택시 수요예측을 신기하게 다뤘더라고요 보고서를 다시 읽어 보면서 제가 비슷하게나마 적용할 수 있을지 시도해볼 겁니다:)  (만일 성공한다면 상당히 짜릿할 것 같다는 생각에 설레네요)

728x90

'Data Diary' 카테고리의 다른 글

2021-01-25 공부기록(택시수요예측)  (0) 2021.01.25
2021-01-22 공부기록(택시수요예측)  (0) 2021.01.22
2021-01-20 공부기록(택시수요예측)  (0) 2021.01.20
2021-01-19 공부기록  (0) 2021.01.19
2021-01-16 공부기록  (0) 2021.01.16
728x90

오늘은 뉴욕 택시 수요예측 프로젝트를 시작한 첫날입니다. 

실습할 때는 1시간 단위로 잘라서 했습니다. 함수가 hour 단위가 있기 때문에 편하게 했는데 

 

30분 단위로 짜르려고하니까 식은땀이 났습니다. 크게 어렵지 않을 거라고 직감했던 부분에서 크게 뒤통수를 맞은 기분이었습니다. 구글링을 열심히 해봤지만 빅쿼리의 30분 단위로 자르는 예시가 없었지만 문법은 비슷하기 때문에 

 

적용해보려고 노력했지만

이해를 못했습니다 

sql 고수가 달아놓은 답변인 듯 질문자의 질문 내용조차 잘 이해가 되질 않았죠 :~|

 

그렇게 구글링만 2시간이 넘은 시점에서 

이러다가 하루종일 삽질만 할 것 같은 느낌이 들어서 

일단 부딪혀 보는 작전으로 생각을 바꿨습니다 

 

(바보 query)

위 코드가 어찌 저찌 해서 만든 첫 쿼리였습니다. 희망을 품고 실행을 눌렀습니다

10..20분..이 지나도 결과가 출력되지 않았습니다. 메모리를 거의 80~90까지 넘어갔습니다

 

컴퓨터가 바보라서 그런가, 새로 사야 하나 라는 생각을 했습니다  

그러다가 갑자기 화면이 블랙아웃이 되었습니다 

 

사실 작년 11월달쯤 실습을 하는 중에 컴퓨터가 지금처럼 블랙아웃이 된 적이 있었습니다

7만 원을 주고 센터에서 재부팅 수리를 받았고 기존에 쌓아뒀던 제 데이터들은 깔끔하게 사라졌었습니다 :)

 

그 공포가 다시 되살아난 저는 간신히 제 상태로 돌아와 준 컴퓨터에게 실행을 중단하고 백업 작업을 급하게 시작했습니다 그리고 코랩으로 작업장을 옮겼습니다 코랩도 출력이 되질 않았죠

 

이때 번뜩이는 생각이 났습니다. 바보는 컴퓨터가 아니라 나라면?

제 쿼리를 유심히 봤습니다 

네.. sql를 쪼금이라도 공부하신 분이라면 아주 기초적인 문제를 틀린걸 위 코드를 보며 단번에 아실 테죠

 

원인은 passenger_count, trip_distance, total_amount를 sum도 안 하고 groupby에 넣은 게 문제였습니다 

창피한 관계로 여기서 skip 하겠습니다.. 

 

그리고 30분으로 나누는 코드를 datetime으로 만들고 싶어서 여차저차 수정을 했습니다

(조금은 떳떳한 query)

 30분 단위는 concat을 이용해서 2021-01-20 20:30 형식으로 수정했습니다

이걸 to_datetime으로 타입을 변경해주면 제가 원하는 형식으로 만들 수 있었습니다 :))

 

그리고 기초적인 실수를 저질렀던 부분에는 위 그림처럼 수정해주었습니다

 

아침부터 여기까지 오는데 6~7시간이 걸렸답니다 ㅎㅎㅎㅎㅎㅎㅎㅎ

하지만 덕분에 여러 가지 함수를 볼 수 있었고 

무엇보다 스스로 해냈다는 것에 큰 뿌듯함을 느낍니다 

 

그리고 좀 전까지는 지역별 시각화를 하고 있었는데 

제 생각보다 재밌었습니다 

나의 의도를 시각화로 표현하는 작업이 참으로 흥미롭네요

 

갈길이 멀지만 설레는 마음으로 오늘은 이만 자러 가보겠습니다 

감사합니다  

 

 

728x90

'Data Diary' 카테고리의 다른 글

2021-01-22 공부기록(택시수요예측)  (0) 2021.01.22
2021-01-21 공부기록(택시수요예측)  (0) 2021.01.21
2021-01-19 공부기록  (0) 2021.01.19
2021-01-16 공부기록  (0) 2021.01.16
2021-01-15 공부기록  (0) 2021.01.15
728x90

오늘 택시수요예측 강의와 실습을 모두 마쳤습니다 강의 중에 google-composer가 있었는데 

솔직히 무슨 소리인지 잘 이해가 가지 않았습니다 이걸 이해하기 위해서 쓸 에너지와 시간을 생각하니까

일정에 문제가 생길것같아서 과감히 중단하고 개인 프로젝트에 먼저 집중하기로 결정했습니다 :)

 

프로젝트가 끝나고 여유가 있을 때 공부해도 늦진 않을 것 같습니다

정말 배울게 너~무 많네요 

 

전 직장에서 품질신뢰성 업무를 했었습니다 누구나 할 수 있는 업무난이도가 제게는 정신적 고통?

성취감이 없었는데 IT에 뛰어들면서 이런 배움의 신세계를 느껴보니까 

 

큰 벽을 마주하는 느낌을 받으면서도 

이걸 써먹을 줄 아는 제 모습을 생각하면 많은 동기 부여가 됩니다

 

아무튼, 나머지 시간에는 실습에서 사용한 뉴욕택시 데이터 말고 한국 택시 데이터를 사용하고 싶었어요

그래서 데이터 사이트를 2~3시간 뒤져 봤는데 역시 적당한 데이터를 구하지 못했습니다 ㅠ

 

고민을 하다가 뉴욕택시데이터를 사용하기로 결정했습니다 

이번 프로젝트는 EDA부터 차근차근 체득하고 싶어서 시간을 조금 넉넉히 잡았습니다

모빌리티 수요예측이 개인적으로 흥미로웠고, 다양한 모델을 공부하면서 여러 가지 시도를 하고 싶었습니다

 

그래서 이 블로그를 마저 다 적성하고 나서는

앞으로 진행할 프로젝트의 정의, 목적, 방법 등 나만의 길을 대략 잡아볼 생각입니다

잘 될지는 모르겠지만 많은 걱정은 잠시 접어두고! 

일단 해보겠습니다 

728x90

'Data Diary' 카테고리의 다른 글

2021-01-21 공부기록(택시수요예측)  (0) 2021.01.21
2021-01-20 공부기록(택시수요예측)  (0) 2021.01.20
2021-01-16 공부기록  (0) 2021.01.16
2021-01-15 공부기록  (0) 2021.01.15
2021-01-14 공부기록  (0) 2021.01.14
728x90

국민청원글을 대상으로 토픽모델링을 진행했습니다.

첫번째로 LDA를 활용하여 토픽모델링 함으로써 공통적인 속성을 알고자 했습니다

두번째로 ATM은 카테고리별 문서주제 분포를 파악하여 유사도를 분석해 보고자 했습니다 

corab url

 

Google Colaboratory

 

colab.research.google.com

1.  import/ 파일 불러오기


2. 텍스트 전처리 전 시각화

>각 청원글을 공백 기준으로 단어로 만듭니다


>공백으로 잘라준 total_tokens의 빈도를 확인합니다


> 전처리 전 청원글의 빈도 그래프 입니다. 보다시피 유의미한 의미를 찾기 힘들기 때문에

명사만을 추출하여 진행했습니다.


3. 텍스트 전처리 후 시각화

전처리 과정에 앞서서 먼저 author2doc를 만들어 줍니다 (전처리 후에 해도 상관없습니다) 

> 카테고리 별로 group by를 해줍니다. 총 882개의 청원글의 인덱스가 카테고리별로 이쁘게 모입니다.

cls2doc은 ATM의 author2doc에 해당됩니다.


이제 카테고리 중 "행정" 청원글을 가지고 텍스트 전처리/시각화를 진행하겠습니다.  

>cls2doc['행정']을 실행하면 문서 인덱스가 list로 나오기 때문에 for문을 이용할수 있습니다.


>행정 문서내용이 담긴 cls1을 doc으로 넘겨준 뒤 mecab.nouns(doc) 통해 명사만 추출하는데 

길이가 1이상인 것만 가져옵니다. 한글자 단어는 이 청원글에서 큰 의미를 주지 못하기 때문에 제외 시켜줬습니다.

각 명사별 빈도 top3가 "국민,정부,코로나" 인것을 확인할수 있습니다.

시각화를 하기 앞서서 불용어 처리를 위해 불용어 사전을 업로드 후 그래프 및 워드 클라우드를 시각화 합니다.


> 텍스트 전처리 후 상위 100개 단어를 가지고 그래피와 워드클라우 시각화 결과입니다.

ngram을 하지 않아서 각 단어가 어떤 연결성이 존재하는지는 알수 없지만 일자리에 관련된 청원글의 

키워드를 대략 파악할수 있었습니다.


4. topic modeling

lda/atm 모델에는 dictionary ,corpus가 필요합니다.  dictionary는 영어 단어장 처럼 청원글에 제시된 단어를 말합니다.

저는 mecab.nouns를 사용해서 dictionary를 만들었습니다. corpus는 각 단어를 (단어의 인덱스,빈도) 형식으로 수치화 시켜준 것을 말합니다. 이해를 돋기 위해서 아래 그림을 참고해주세요

>왼쪽이미자가 corpus, 오른쪽이미지는 인덱스를 단어로 변경했을때 모습입니다.


그러면 dictionary와 corpus를 어떻게 만드는지 아래 코드를 보면서 설명드리겠습니다.

>왼쪽그림에서 문서를 명사 추출 후 text_cleaning통해 한번더 걸러줍니다. 

명사를 추출하면서 특수문자나 url와 같은 문자들은 추출이 되지 않지만 한 글자만 남아 있는 것들 제거 하기 위해서 실행해 줬습니다.

왼쪽그림에서 한 글자을 제거하는 코드를 여러 방면으로 시도해 봤지만 모델을 돌릴때 인덱스 오류가 지속적으로 발생했습니다. 제 생각에는 한 글자들이 빠지면서 생긴 공백 때문이지 않을까 생각됩니다. 

좀더 쉽고 간단하게 할수 있는 방법을 찾다가 실습때 배웠던 text_cleaning 함수에 len(doc)>1를 추가 했는데 에러가 잡히지 않았습니다.


>명사화된 token들을 Dictionary,doc2bow를 통해 dictionary,corpus를 만들어줍니다.


4-1 LDA Model

>토픽 수를 결정하기 위해서 최소 4개~20개까지 각각 계산해 합니다.


>corpus, dictionary를 넣어주고 num_topic를 이용해서 4개일때,5개일때, ... , 20개일때의 lda를 각각 계산합니다.

주석처리된 부분은 모델을 저장 할때 사용합니다. 


>계산 결과 topic 8개 일때 coherence가 0.45로 가장 높은결과를 얻었습니다(passes=100일때)

coherence의 기준을 보면 0.45가 낮은 수준임을 알수가 있습니다. 즉 유사한 단어끼리 뭉쳤다고는 좋게 볼수가 없습니다. passes를 1000회 이상 높이면 지금보다 더 좋은 결과를 얻을수 있을 거라 생각됩니다. 

이어서 topic_num=8 일때의 lda결과를 보겠습니다.

 

> num_topic를 8로 설정하고, passes= 100 으로 모델을 실행합니다.


> topic label를 정해줍니다.

 

>각 토픽별 어떤 단어끼리 뭉쳤는지 출력합니다. 


>LDA model 결과로는 총 8개의 topic으로 구분되었습니다. 가장 많은 비중을 차지한 topic1은 코로나와 관련된 키워드 "코로나,방역,정부" 등이 있으며 topic3은 "주택,부동산,지역" 등 부동산과 관련된 topic임을 짐작 할수 있었습니다.

coherence가 낮기때문에 양질의 분류는 아닐지라도 어느정도 유추 할수 있는 topic들이 있었습니다. 

여기까지 전체 청원글에 대한 LDA를 이용하여 topic modeling을 진행해 보았습니다.


4-2 ATM_model

> author2doc이 추가 되었고 나머지는 LDA와 같습니다.

 

 

>실행결과 num_topic=8 일때 수치가 가장 높았지만 lda와 같은 0.45로 낮은 수치를 기록했습니다.

그러면 num_topic=8로 다시 설정하여 ATM을 실행하겠습니다.


 

 

>각 토픽별 word를 출력한 결과입니다. topic0은 범죄와 관련되어 있고, topic1은 사회적 거리두기 방역지침과 밀접해 보입니다. LDA와 마찬가지로 같은 num_topic(8), coherence를 보였습니다. 전반적으로 토픽의 성격도 비슷하게 묶였음을 확인할수 있었습니다. 그러면 author 간의 거리를 측정해서 유사도를 보겠습니다.


> 특정 저자가 어떠한 저자와 유사한지를 구하는 함수입니다.

즉, author-topic space에서 가장 가까운 벡터를 구해야 합니다. 거리를 재는 방법 중 hellinger distance를

사용합니다. hellinger distance는 두 개의 확률분포가 가우시안 분포를 따를 때 그 사이의 거리를 재는 방법입니다.

get_author_topics에는 해당 저자(카테고리)가 7개 토픽 중 차지하는 비율 정보가 있습니다.

이 정보로 가지고 저자 간의 거리를 구합니다.

(해당 함수는 강의 실습 코드를 참고했습니다.)


>일자리 author와 가장 유사도가 높은 것은 경제 민주화입니다.

따라서 이 두개의 author는 청원글의 주제가 겹칠수 있다는걸 알수 있습니다.

 

토픽모델링을 공부하면서 느낌점

부트캠프에서 크롤링->R의 워드클라우드로 프로젝트를 한적이 있었습니다. 그 당시에도 들었던 생각은 키워드만 가지고 뭔가 인사이트를 얻는게 충분치 않다 라는 느낌을 받았습니다. 이번계기로 NLP가 파고들수록 어려운 분야 라는걸 깨달았습니다. 문맥,뉘앙스 처럼 사람만이 이해하는 것들을 학습시키는게 상당히 어려울 거란걸 초보인 저도 가늠할수 있었습니다.  이처럼 어려운 분야의 전문가가 되는 제 모습을 상상하면서 더욱 매진해 볼 생각입니다 :) 

만일 틀린거라든가 보완해야 할 점이 있다면 언제점 말씀해주세요 ~!  

728x90

'projects' 카테고리의 다른 글

따릉이 자전거 이용 예측_dacon  (0) 2021.09.30
Face Mask Detection  (0) 2021.08.25
동서발전 태양광 발전량 예측 프로젝트_dacon  (0) 2021.06.29
뉴욕 택시수요예측  (0) 2021.02.16
CNN_BTS 멤버 image classification  (0) 2021.01.10
728x90

taxi 수요예측 실습을 어제에 이어서 진행했습니다 

쿼리문에 난이도가 올라가서 잠시 중단하고 한참을 구글링을 했습니다

 

함수는 이해했지만 

 

왜 이런 변수를 만들었는지는 설명이 없어서 뒤적뒤적 만져보며 이해하려 했지만 실패했습니다

이틀 뒤에 다시 시도해 보겠습니다!

데이터 다룰때는 코딩 실력도 중요하지만 내가 무엇을 할 건지를 정하는 스킬이 가장 중요한 것 같아요

 

그리고.. 아직 에러 원인조차 파악 못한 코드가 있습니다

분명.. 같은 코드인데 에러 내용이 또 바꿨네요  끄응

아까 에러 내용은 5번 줄의 x_train의  type 관한 내용이었던 걸로 기억해요 

강사님과 정말 같은 내용으로 실습하는데 말이죠 

 

이래서 팀 단위로 모여서 프로젝트를 하면 실력이 빨리 오른다는 게 이런 이유이지 않을까 하네요

피드백이 빨라야 학습을 빨리 할 수 있는데 말이죠옵

시국이 나아지면 그룹에 참가해서 프로젝트 진행해도 좋을 것 같습니다:) 

 

 

728x90

'Data Diary' 카테고리의 다른 글

2021-01-20 공부기록(택시수요예측)  (0) 2021.01.20
2021-01-19 공부기록  (0) 2021.01.19
2021-01-15 공부기록  (0) 2021.01.15
2021-01-14 공부기록  (0) 2021.01.14
2021-01-13 공부기록(토픽모델링)  (0) 2021.01.13
728x90

taxi 수요예측 실습을 계속 진행 중입니다.

남의 코드를 보고 실습하는건 정말 좋은 참고서가 되는 것같아요

 

이렇게도 할수 있구나 라는 생각을 자주하게 돼요 색다른 코드들을 보니까 코딩 실력을 좀더 창의적으로 하고 싶다는 

생각을 해봤어요 사실 한달 전쯤에

코딩테스트 준비를 할려고 책까지 사놨는데  포트폴리오가 먼저라는 교수님 말씀에 이렇게 열공하고있네요ㅎㅎ

 

만일 제가 취업을 하더라도 개인적인 호기심과 자기개발을 위해서 코딩테스트를 하지 않을까 싶어요

아 그리고 1월1일에 데이터 분석 강의(이러닝)를 신청했었는데

 

오늘 개강했다는 알람을 받았습니다 온라인으로 진행되는 수업이죠 그곳은 바로!!! 

ekoreatech 라는 사이트입니다 

 

무료 강의와 수료증 발급까지 해줍니다 저처럼 자격증이나 수료증이 필요한 분들에게는 도움이 될 것같아요

제가 줄곧 관심깊게 지켜봤던 mysql! 이 들어 있더군요 오호홓 

 

이전에는 오라클과 heidSQL(mysql)는 사용 해봤었지만 mysql는 처음 접해 봅니당 

취업 조건에 mysql이 꽤 많은 비율을 차지 하는것같아요  ㅠㅠ 

 

공부할건 너무 많은데 몸이 하나라서 너무 아쉽다는 생각이 자주 드네요

비록 몸뚱이는 하나라도 차근차근 열심히 기본을 잘 쌓아 올려보도록 노력해 볼게요

 

 

728x90

'Data Diary' 카테고리의 다른 글

2021-01-19 공부기록  (0) 2021.01.19
2021-01-16 공부기록  (0) 2021.01.16
2021-01-14 공부기록  (0) 2021.01.14
2021-01-13 공부기록(토픽모델링)  (0) 2021.01.13
2021-01-12 공부기록(토픽모델링)  (0) 2021.01.12
728x90

어제 실습에 이어서 오늘도 택시 수요예측 실습을 진행했습니다. 

원래 계획은 하루에 강의 10개씩 진도를 나가는 걸로 정했는데 

 

실습도 하고, 시행착오도 있다 보니까 겨우 2개만 진도를 나갔습니다

쿼리문은 나름 익숙해서 큰 문제는 없었지만

 

데이터 시각화(시간별, 지역별) 부분에는 조금 더 유심히 봤습니다. 제 약점? 중에 하나가 

~~ 별로 group by입니다

예를 들어 시간별, 지역별 등등

 

위처럼 간단한 문제라면 괜찮지만 문제가 복잡하게 되면 헷갈립니다 

아마 익숙하지 않아서 그런 거라 생각됩니다 

 

그리고 가장 시간을 많이 잡아먹었던 건 아래 코드입니다.

날짜를 가지고 주말을 구분해야 했는데, 날짜 함수가 머릿속에서 정리가 안되고

처음 본 것들이라서 삽질이 좀 길었습니다. 

 

시간을 더 이상 지체할 수 없어서 강의 진도를 나가던 참에 

잘못된 부분을 알아차렸습니다 내일 아침에 바로 고쳐볼 생각입니다. 

 

오랜만에 쿼리문을 다루니까 오래간만에 흥미로웠습니다! 

게다가 새로운 함수도 여러 개 알게 돼서 든든합니다 빨리 내 것으로 만들어서 내실을 다지고 싶네요

728x90

'Data Diary' 카테고리의 다른 글

2021-01-19 공부기록  (0) 2021.01.19
2021-01-16 공부기록  (0) 2021.01.16
2021-01-15 공부기록  (0) 2021.01.15
2021-01-13 공부기록(토픽모델링)  (0) 2021.01.13
2021-01-12 공부기록(토픽모델링)  (0) 2021.01.12

+ Recent posts