분석 Python/구현 및 자료(105)
-
[ Python ] 사용한 package 모두 저장해서 다른 곳에서 그대로 사용하는방법
최근에 사용한 패키지 상태를 그대로 유지하면서, 다시 사용해야 할 때 전달해야 하는 이슈가 있었다. 그래서 처음에는 pickle로 저장해봤는데, 안되서 이유를 찾아보니 밑에 글에 잘 정리된 게 있으니 확인해보시길 바란다! 사실 R에서는 .RData로 몽땅 집어넣을 수가 있는데, 이것이 되는지가 궁금했다 https://lovit.github.io/analytics/2019/01/15/python_dill/ Python dill 로 class definition 까지 binary 로 저장하기 파이썬으로 작업을 할 때, 사용자가 정의하는 클래스 인스턴스를 저장할 일들이 있습니다. 예를 들면 namedtuple 을 이용한 데이터 타입이라던지, PyTorch 에서 nn.Module 을 상속받은 모델들이 그 예입니..
2019.08.12 -
[ Python ] threading 에 대해서 잘 설명된 글
https://soooprmx.com/archives/8834 파이썬의 스레드 사용법 · Wireframe 멀티스레드를 사용한 병렬처리는 concurrent.futures의 ThreadPoolExecutor를 사용하면 스레드 풀 관리에서부터, 처리 결과들의 동기화에 이르기까지의 여러 작업을 간단한 API를 통해서 처리할 수 있다. 특히 이 API의 경우 멀티스레드와 멀티프로세스에서 동일한 형태로 디자인되어 있고, 실제 사용시에는 어떤 구현을 선택할 것인지에 따라 Pool관리자의 클래스만 변경하면 되기 때문에 편리하게 사용할 수 있다. 하지만 이 API는 특정한 soooprmx.com 사이트에 좋은 자료가 참 많다! 흔히들 파이썬의 Thread는 Global Interpreter Lock이라는 제약 때문에..
2019.08.11 -
[ Python ] 동시성과 Future / concurrent.futures 알아보기
https://hamait.tistory.com/748 초보자를 위한 동시성과 Future 1. 그림으로 보는 동시성 2. 동시성과 Future 이야기 3. 자바로 밑바닥부터 Future 구현 4. 언어별 Future 살펴보기 1. 그림으로 보는 동시성 은행에 창구가 하나입니다. 사람들은 줄을 서서 일을 처리합니다... hamait.tistory.com 위의 글에서 흐름을 보자면, CPU를 활용하는 THread들이 많아 질수록 처리능력이 좋아진다고 함. 쓰레드를 내부로 감춰놓고 외부에서 편하게 쓸 수 있는 도구가 필요함 ( Future , Promise , Async, Observerble ) 메인 쓰레드 (A)는 자기가 하는 일만 하고 B 에게는 알아서 B -> C -> Result 예를 들어 내가 지..
2019.08.11 -
[ Python ] thread 공부해보기-2
https://data-newbie.tistory.com/229 Python thread 공부해보기-1 최근에 머 하나를 병렬적으로 실행하고 싶은게 있었다. 그래서 멀티프로세싱으로 하려고 시도를 했는데, 동작하지 않아서 threading을 활용해서 thread 형식으로 했다. 하지만 내가 알기론 GIL? 이것 때문에 threa.. data-newbie.tistory.com 앞에서는 threading과 동기화에 대해서 써봤다. 이번에는 queue를 사용해서 스레드 간 데이터 전달 과정 먼가 이 producer와 consumer를 보면 kafka가 생각난다. 먼가 같은 방식인 것 같기도 한데... import threading from queue import Queue def creator(data, q):..
2019.08.11 -
[ Python ] thread 공부해보기-1
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 최근에 머 하나를 병렬적으로 실행하고 싶은 게 있었다. 그래서 멀티프로세싱으로 하려고 시도를 했는데, 동작하지 않아서 threading을 활용해서 thread 형식으로 했다. 하지만 내가 알기론 GIL? 이것 때문에 thread 방식은 안 좋다고 하는데, 왜 내가 했던 문제에서는 thread로만 작동하는 걸까?! 암튼 그래서 thread에 대해서 공부를 해보려고 한다. 일단 동기와 비동기에 대해 간다하게 설명된 예시 우체국이 있습니다. 저는 소포를 보내려는 손님이죠. 손님들 100명이 우체국에 일렬로 줄을 서있고, 한명씩 처리하는것이 -> 싱글스레드 / 동기 처리입니다. 손님들 100명이 우체국의 100명의 직원에게 각각 처리..
2019.08.11 -
[ Python ] combination 조합 만들기
가끔씩 어떤 조합의 경우의 수를 뽑고 싶은 경우가 있다. print(Seg) ['X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8', 'X9', 'X10', 'X11', 'X12', 'X13', 'X14', 'X15', 'X16', 'X17'] 여기서 17C2 또는 17C3을 구하고 싶다고 하자. 그러면 다음과 같은 코드면 된다. import itertools combination = [] for ii in range(2, 4 ): for subset in itertools.combinations(Seg , ii): combination.append(list(subset)) [['X1', 'X2'], ['X1', 'X3'], ['X1', 'X4'], ['X1', 'X5'],..
2019.07.24 -
[ Python ] Regex 유용한 팁들!
## [^aeiou] aeiou를 제외하고 한개 ## [0-9] 중에 한개만 있을 때 ## [0-9]+ 중에 한개이상 ## (\D\d)+ 이것이 반복적으로 있을 때 ( ) 사용 ## ^iteration_1(.*?).png$ 시작은 interation_1 로 시작하고 끝은 .png 이미 re.search(^iteration_1([^"]+).png$ , text) ## iteration_2 로 시작하고 .png로 끝나면서 앞에 숫자가 0-5이면서 뒤에는 아무 숫자가 오게 re.search( ^iteration_2[0-5][0-9]+.png$ , text) iteration_1 로 시작하고 .png로 끝나면서 중간에 숫자가 4개 re.search('^iteration_1\d{4}.png$' , text) 영어..
2019.07.20 -
[ Python ] 모델 예측 TOP N번까지 값 뽑고 N번까지 Accuracy 계산하기
예측 정확도를 뽑다보면, 추천도 그렇듯이 TOP1만 보는 것이 아니라 TOP N번까지 보는 경우가 많다. 이런 경우 TOP N 번까지 결과값과 TOP N번까지 고려했을 때 정확도를 궁금해하는 경우가 흔하다. Python으로는 다음과 같이 하면 된다! 예를 들어 이런 다중 클래스에서 예측을 한다고 하자. 아무리 모델이 좋아도 1개의 클래스를 예측하는 것에 성능을 왠만하면 기대하기 어려울 것이다. pd.DataFrame(pred).head() 방법은 다음과 같다 top_n 함수를 잘 보면 된다. 저 함수를 이용해서 N번째로 큰 값을 찾을 수 있다. import numpy as np def top_n(data , n ) : return list(map(lambda x: np.argpartition(x, -n)..
2019.07.16 -
[ Python ] 영어 Text 전처리 및 유용한 Re 설명 자료
아래에 가면 Medium 자료가 있다. 여러 가지 잘 정리한 블로그여서, 궁금하신 분들은 가서 보시면 될 것 같다! 일단 텍스트 전처리 초보자라서 Regular Expression에 굉장히 서툴러서, 여러 가지 많이 경험해보려고 자료를 찾다고 잘 정리되어 있는 것을 찾게 되었다. 한글 코드 범위 ㄱ ~ ㅎ: 0x3131 ~ 0x314e ㅏ ~ ㅣ: 0x314 f ~ 0x3163 가 ~ 힣: 0 xac00~ 0xd7a3 import re def test(): s='韓子는 싫고, 한글은 nice하다. English 쵝오 -_-ㅋㅑㅋㅑ ./?!' hangul = re.compile('[^ ㄱ-ㅣ가-힣]+') # 한글과 띄어쓰기를 제외한 모든 글자 # hangul = re.compile('[^ \u3131-\u..
2019.07.09 -
[ Python ] 메모리 누수 해결에 도움되는 패키지 소개
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 최근에 UI를 만들어야 하는 일을 하고 있었는데, 같은 것을 실행하는데 누적되는 문제가 발생하였다. gc.collect()를 해도 소용이 없어서, 여러 가지를 찾다가 다음과 같은 것이 나와서 공유한다. 실제 테스트를 하니, 같은 작업을 반복할 때는 그만큼 데이터가 계속해서 쌓이지는 않았다. 아직 문제는 할당된 메모리가 다시 돌아오지 않는 다는 점....... (어디로 간 거냐....) ## 190605 기준 최신 버전은 5.2입니다. # installing jemalloc wget https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz..
2019.06.05 -
[ Python ] Python에서도 R처럼 data.table을 사용할 수 있어요.
Python에서 대부분의 데이터를 읽을 때 주로 Pandas를 사용하지만, 작은 데이터를 읽을 때는 상관이 없다. 하지만 최근에 34GB짜리를 읽어보려고 했는데, 시간을 많이 잡아먹어서 스트레스를 너무 많이 받았다. 머 Spark나 이런 걸 사용하면 된다고 하지만, 전처리를 좀 하고 싶었던 게 있었는데, 아직 내가 Spark 같은 것을 잘 사용하지 못해서 결국 Pandas로 하였다. data.table은 알려진 바로는 단일 머신으로 했을 때 가장 빠르게 데이터 핸들링을 할 수 있는 도구다. 이 글에서는 100GB까지 된다고 하니, 잘 사용할 줄 알아야겠다. ## 리눅스 버전 # If you have Python 3.5 pip install https://s3.amazonaws.com/h2o-release..
2019.06.02 -
[ Python ] UMAP (Uniform Manifold Approximation and Projection)
이것의 관심을 가진 이유는 원래 기본적인 T-SNE은 Visualization 용으로만 쓰는데, 실제로 이 패키지에서는 그 Embedding 한 것을 변수로 사용할 수 있다고 합니다. 그래서 train을 학습시켜서 그걸 다시 test에 transform 하는 식으로 변형도 가능하다고 해서, 일반적으로 우리가 알고 있는 T-SNE와는 달리, 저차원으로 잘 축소해서 사용할 수 있을 것 같아서 포스팅합니다.. https://arxiv.org/abs/1802.03426 https://github.com/lmcinnes/umap https://umap-learn.readthedocs.io/en/latest/parameters.html 제가 한번 해본건데요! 지금 이게 결국 feature로 쓸 수 있다면 KNN C..
2019.05.22