Python(215)
-
subplotting을 위한 plot 함수 만들어서 코드 간단하게 하기
광고 한번만 눌러주세요 ㅎㅎ 블로그 운영에 큰 힘이 됩니다. 여러가지 그림을 한꺼번에 표현하고 싶을 때, 각각의 그림에 대해서 그림을 그리고, 이름을 부여고하고, y축 x축 변경해줘야 할 것이 많다. 하지만 이런 것을 반복하다보면, 코드가 너무 장황해지고 길어지는 것을 경험하였다. 그래서 이런 것을 보다 그림을 표현할 때는 간단하게 하고 싶기 때문에, 만들어봤다. 유용하다 생각하시면, 더 업그레이드 하셔서 블로그나 깃헙 같은 곳에 공유해주세요 :) import numpy as np , pickle import matplotlib.pyplot as plt with open("./../02/resut.pkl", "rb") as rb : result = pickle.load(rb) def subplotting..
2020.03.29 -
파이썬 subplots 좀 더 잘 사용해보기
광고 한번만 눌러주세요 ㅎㅎ 블로그 운영에 큰 힘이 됩니다. 파이썬에서 한 Figure에서 여러 개로 쪼개서 다양한 그림을 넣고 싶은 경우가 많다. 보통 그래서 필자는 주로 격자 방식으로 한 그림에는 한 주제만 나오게 한다. 그래서 필자가 좋아하는 방법은 평평하게 해 놓고 격자마다 하나씩 나오게 하는 것이다. import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec import numpy as np import pickle with open("./../02/resut.pkl", "rb") as rb : result = pickle.load(rb) 하지만 위에 그림에서 왼쪽을 보게 되면, 스케일 자체가 차이가 나서, 실제로 제대로 된..
2020.03.29 -
[변수 선택] Chi-Square 독립성 검정으로 범주형 변수 선택하기
광고 한번만 눌러주세요 ㅎㅎ 블로그 운영에 큰 힘이 됩니다. 실제 분석 시에 정형 데이터의 범주형 데이터 처리가 골치가 아픕니다. 범주형 데이터는 보통 one-hot을 통해, 데이터를 굉장히 희소하게(sparse)하게 만들기 때문입니다. 보통 이렇게 차원이 커지게 되면, 차원의 저주에 빠질 수 있으면서, 학습도 굉장히 잘 안됩니다. 그래서 저는 보통 차원이 커질 경우 보통 embedding을 시키거나, 아니면 요즘은 catboost encoder나, target encoder 같은 방법을 써보려고 합니다. 이번에는 좀 더 변수 선택 차원으로 이야기해보고자 Chi-square 독립 검정을 통해 변수 선택을 하는 것을 보게 되어, 해보면서 공유합니다. Chi-Square Test of Independence..
2020.03.28 -
Permutation importance 을 사용하여 딥러닝 모델 해석하기 (정형 데이터)
광고 한번만 눌러주세요 ㅎㅎ 블로그 운영에 큰 힘이 됩니다. 모델을 해석하는 방법에는 다양한 방법이 있고, 그중에 많은 패키지는 model-agnostic 한 방법으로 학습된 모델을 사후 해석하는 방향으로 해석을 합니다. 그래서 이번 글에서는 그러한 방법론 중 Permutation을 이용하여 변수 중요도를 구하는 방법을 소개하겠습니다. 여기서 사용하고 있는 많이들 알고 있는 Tensorflow를 사용하여 Neural Network를 기반 아키텍처에 대한 변수에 대한 중요도를 보이고자 합니다. 아래 그림 처름 주어진 데이터에 각 변수마다 Permutation을 통해 다양하게 섞습니다. 그리고 Permutation을 하였을 때, 결괏값의 Loss가 커질 경우, 그 변수는 중요한 변수라는 것을 의미합니다. 일..
2020.03.26 -
[Python] Jupyter 사용자 유용 팁 정리
도움이 되셨다면, 광고 한 번만 눌러주세요 ㅎㅎㅎ 아래 블로그에 주피터 사용자를 위한 팁들을 정리한 것을 해보려고 합니다. 개발을 하기 위해서는 다른 파이참 같은 것이 편하지만, 아직은 주피터 노트북이나 랩이 편하더라구요 암튼 팁들을 정리해보고자 합니다. Startup files 분석을 하다 보면 알 듯이 항상 사용하는 패키지가 있을 것입니다. 해보신 분들은 아시겠지만, 항상 아래 패키지를 똑같이 임포트할 것입니다. import numpy as np import pandas as pd ... import matplotlib.pyplot as plt 이러한 것을 줄여줄 수 있는 방법을 소개합니다. 일단 startup 파일을 찾아야 합니다. /Users//.ipython/profile_default/star..
2020.03.25 -
파이썬에서 정규성 검정하기
## shapiro , normaltest shapiro가 노말 분포 검정할 때 가장 엄격하게 한다고 함. from scipy.stats import shapiro , normaltest , anderson , kstest normal = [] notnormal = [] for var in num_var : stat, p = shapiro(train[var].dropna().values) stat, p = normaltest(train[var].dropna().values) alpha = 0.05 if p > alpha : normal.append(var) else : notnormal.append(var) ## kstest 분포 2개를 비교하는 것이므로, 어떤 분포에서도 사용 가능하므로, 노말에서도 사..
2020.03.22 -
[변수 선택] Python에서 변수 전처리 및 변형 해주는 Xverse 패키지 소개
광고 한번만 눌러주세요 ㅎㅎ 블로그 운영에 큰 힘이 됩니다. Xverse는 X Universe를 줄인 말로, 특징 변환과 특징 선택을 통해 데이터 과학자를 지원하기 위한 기계 학습을 위한 Python 패키지입니다. 일단 필요성에 대해서 말하고자 한다고 합니다. Background 대부분의 데이터 분석가는 80%는 분석 전처리에 쓰고 있다고 한다. Earlier works for this package https://medium.com/@sundarstyles89/weight-of-evidence-and-information-value-using-python-6f05072e83eb Weight of evidence and Information Value using Python Weight of eviden..
2020.03.22 -
[실험] 정형데이터에서 연속형 변수 전처리에 따른 Network 성능 차이는 얼마나 날까?
개인적으로 분석을 하면서, 항상 궁금한 점이 있었다. 과연 전처리에 따른 성능 차이는 얼마나 날까? 개인적으로는 많이 날 것이라고 생각하면서도 기본적으로 Neural Network은 결국 내부에서 알아서 Representation이 된다고 생각하기 때문에 크게 나지 않는다는 2가지 생각이 공존했다. 그래서 개인적으로는 차이가 나는 것을 기대하면서, 더 나은 방법을 찾기 위해서 아주 간단한 실험을 진행했다. 물론 이 실험은 한 데이터셋에서만 실험을 하고, 많은 실험을 하지는 않았을 뿐만 아니라, 각 데이터 변수마다 동일한 처리 기법을 사용해서 정확하지 않을 수 있다. 일단 결론부터 말하자면, 전처리 기법들에 따른 모델 성능은 큰 차이가 나지 없었다. 필자는 동일한 후보들(10가지)를 한 5번 돌려본 것 같..
2020.03.21 -
텐서플로우 버전 1에서 LIME 과 SHAP 을 사용하여 모델 해석하기 (정형 데이터)
딥러닝 모델들이 black-box 형태의 모델이기 때문에 해석을 하는 데 있어서 사람들의 많은 요구사항들이 있다. 그중에서 유명한 것은 eli5, shap, lime, skater와 같은 알고리즘들을 사용하고, 만약 이러한 알고리즘을 적용하기 어렵다면, surrogate model을 통해 해당 모델에 대한 설명 가능한 모델을 새로 만들어서 모델을 해석하는 방법도 있다. 아래 블로그는 XAI에 대해서 정리한 글이라서 참고하시면 될 것 같다. 해당 글에서는 ELI5 /Skater / SHAP에 대한 설명을 해주고 있다. 대한 예제는 해당 블로그에도 있으니 참고하길 바란다. 여기선 skater라는 것을 보게 됐는데, 이것도 적용을 해봐야겠다. https://towardsdatascience.com/explai..
2020.02.25 -
[ Python ] Fire 패키지
우연히 알게된 fire 패키지 모든 객체를 command line interface로 만들어 주는 fire 패키지라고 함. 원래의 파이썬 함수들을 command line interface로 만들어서 터미널과 통합된 환경을 만들 수 있다고 함. https://minwook-shin.github.io/python-cli-program-using-fire/ Python fire 패키지를 사용하여 cli 프로그램 만들기 오늘은 Python에서의 모든 객체를 command line interface로 만들어 주는 fire 패키지에 대하여 알아보려 합니다. minwook-shin.github.io
2020.02.21 -
[ Ray ] 10x Faster Parallel Python Without Python Multiprocessing -리뷰
광고 한 번씩 눌러주세요 블로그 운영에 큰 힘이 됩니다. : ) 파이썬 실력은 부족하지만, 빠르게 돌리기 위해서 병렬 처리에 대해서 관심이 있다. 기존에는 주로 multiprocessing을 많이 해결했는데, 웬만한 거는 쉽게 할 수 있어서 좋았지만, 모델링을 하였을 때, 일단 데이터를 각 프로세스마다 복제해서 커지는 것도 문제고, 데이터의 크기가 크면 안 된다라는 단점을 확인했다. 그러던 중에 ray라는 존재에 대해서는 알게 되었지만, 이러한 문제를 해결해줄 수 있을 것 같아서(추측) 읽어보기로 한다. 개인적으로 쭉 읽고 나서 기존 multiprocessing 보다 많은 장점이 있는 것을 확인하였고, 익숙해지기 위해 노력해야겠다 파이썬 라이브러리 중에서 multiprocessing 가 많은 영역에서 사..
2020.02.20 -
[ Python ] 파이썬 함수 argument 정보 가져오기
파이썬 내부에서 argument를 어떤 것을 넣는지 다 가져오고 싶을 때가 있다. 그래서 이러한 문제를 inspect 함수로 해결하는 것을 알 수 있었다. import inspect def a(a=5,b=5) : frame = inspect.currentframe() args, _, _, values = inspect.getargvalues(frame) del values["frame"] print(args , values) a(5,2) import inspect class Argument(object) : def __init__(self,name) : self.name= "go" def test(self, a=5,b=5, **kwargs) : frame = inspect.currentframe() ar..
2020.02.08