본문 바로가기

언어/Python

11/26 공모전 준비하며 배운점 + 느낀점 (잊지말자 reset_index)

1. pickle을 써서 저장하고 load하기

 

2. 데이터프레임 itertuples()로 for문 돌리기 가능

근데 이렇게 하다보면 에러는 아닌데 크래쉬 문제가 난다고 해놓고, 문제없이 돌아간다.

문제가 있는데 모르고 지나가는 건가?

-> 검색해보니 출력데이터 초과시 생기는 문제라고 함.

즉 print()문 안 쓰면 안 생길 문제였음

만약에 바로 출력 내용 보고싶으면 cmd 창에서

jupyter notebook --NotebookApp.iopub_data_rate_limit=1.0e10

이거로 리밋 해제하면 됨

 

3. 사용자별, 아이템별 계산 한 내용을 딕셔너리로 저장하려고 itertuples()로 데이터프레임을 반복문 돌린 다음에,

튜플로 (사용자인덱스, 아이템 인덱스)를 묶어서 딕셔너리꼴로 저장했다.

처음엔 사용자 인덱스를 키로 하고 값으로 또 딕셔너리를 써서 할까 했다.

그럼 구조가 { '사용자_인덱스1':{'아이템_인덱스1': 계산내용_1, ... ,  '아이템_인덱스2':계산내용_2} } 이렇게 된다.

이걸 구현하는게 어려운 건 아닌데 to_dict를 쓰고 싶었는데 to_dict로 만드는게 생각보다 잘 안됐다.

그리고 나중에 for문으로 출력할 때를 생각하면, 튜플로 (사용자 인덱스, 아이템 인덱스)를 묶는게 더 편한 것 같았다.

어차피 효율성 면에서는 둘 다 해시를 쓰는 거라 오래 걸리지 않을 터.

그래서 튜플을 키값으로 저장했고 다행히 문제없는 것 같다.

코드가 깔끔하지 못한 건 내 실력 부족이니까 실력을 더 키워야된다.

 

 

 

[느낀점]

1. 진짜 다운이는 코드를 빠르고 효율적으로 잘 짠다.

뭔가 이상하게 짠 거 같아서 물어보면 논리가 잡힌 방식이엇고 내가 한눈에 봤을 때 이해 못 한 경우가 많다.. 

 

2. groupby써서 하는 거 여전히 좀 잘 못하는데 잘 좀 써보자

groupby로 저장한 데이터프레임 reset_index로 인덱스 뭉친거 풀 수 있는데 저 함수를 항상 깜빡한다.

 

3. 나린이가 말하는 키워드 아이디어를 반영하고 싶은데, 어떻게 하라는건지는 알아듣겠는데 뭘 뽑아내야 되는지 모르겠다.. 물어보든가 해도 딥러닝 모델 구현 제대로 안 해봐서 못하겟다.

'키워드 6개를 한번에 conv1d 돌려서 에버리지풀링해서 하나의 변수로 만들어 피처로 쓰기'

 

4. 그래도 나름 피처 엔지니어링 관련 아이디어 제시한 부분이나 보충한 부분에 반응이 좋았고, 실제로 성능도 대폭 향상돼서 다행이다.