python3(12)
-
python3) basemap install in ubuntu 18.04
sudo apt update sudo apt install python3-mpltoolkits.basemap ## python3.8 conda install basemap conda install proj4
2021.06.29 -
tqdm) print대신에 tqdm을 이용해서 logging 방법
간혹 먼가 로깅을 하고 싶은 경우에 print를 많이 쓴다. 하지만 print를 하다 보면, 계속 남기 때문에 메모리를 차지하거나 보기에 좋지가 않다. 그래서 이런 것을 해결할 수 있는 게 보통 tqdm이고 여기서 logging과 tqdm을 접목시켜 tqdm 방법을 이용해서 logging까지 하는 것을 공유한다. tqdm logging handler 라는 것을 구현해서 사용하면 되기 때문에 공유한다. tqdm handler import logging from tqdm import tqdm class TqdmLoggingHandler(logging.StreamHandler): """Avoid tqdm progress bar interruption by logger's output to console""" ..
2021.05.15 -
[TIP] Class에 사전(dict)으로 property 추가하는 법
아래 코드는 특정 값들을 바로 propert에 추가하는 코드다 kwargs에 config라는 것이 들어오면, 각각의 값들을 다 property를 해준다. import numpy as np def assign_config(self, kwargs): for key, value in kwargs.items(): setattr(self, key, value) if hasattr(self, 'config'): # print(self.env_config) for key, value in self.config.items(): # Check types based on default settings if hasattr(self, key): if type(getattr(self,key)) == np.ndarray: set..
2020.12.18 -
[ Python ] Scikit-Learn Pipeline + RandomizedSearchCV + shap,eli5
광고 한 번만 눌러주세요! 블로그 운영에 큰 힘이 됩니다 ( Click my ADs! ) 이번 글에서는 전체 모델링을 하고 나서 모델 해석을 위해 eli5 , shap을 사용하려고 한다. 핵심 포인트는 Pipeline과 Shap , Eli5를 보시면 될 것 같다. 모델 해석으로는 lime, shap, eli5가 있는데, 다 좋지만 개인적으로 shap가 선호하므로, 좀 더 잘 알기 위해서 추후에 정리해보려고 한다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import eli5 import shap import seaborn as sns plt.style.use('ggplot') # load the dataset from ..
2019.12.28 -
[ Python ] visualization 결과 객체값으로 저장하기
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 아 형이 Loop를 돌면서 그 결과에 대한 시각화를 어떻게 저장할 지에 대해서 물어봤다. 나도 처음에 그렇게 해본 적이 없어서 헤매고 있다가 다음과 같은 방법을 사용하니 작동하였다! 물론 원했던 것은 string 에다가 객체 값을 넣고 싶은 건데... 그 부분이 R에서는 되는데, 파이썬에서는 안되니... 아시는 분이 있다면 댓글을 남겨주시면 큰 도움이 될 것 같습니다 ㅠ dictionary를 사용하여 저장을 하였고 일반적으로는 되지 않았고 fig 값을 저장하여야 저장이 되었다. plot_msg= {} for name in list("abcd") : fig = plt.figure() ax1 = fig.add_subplot(2, ..
2019.11.26 -
(Windows) Sublime Text3 설치를 할 때 도움을 받은 블로그
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 먼가 에러가 발생해서 다시 설치를 하려고 한다. 여러가지 파이썬 코딩을 할 때 좋았던 패키지가 있었는데, 잘 알지 못해서 뒤적뒤적하니 이미 많이 잘 정리해준 사이트가 있어서 공유하려고 한다. 1. Python 설치 2. Sublime Text 3 설치 3. Sublime Text 3 기본 사용방법 4. Package Control 5. sublimeREPL 플러그인 설치 6. SublimeLinter 플러그인 설치 7. SublimeCodeIntel 플러그인 설치 8. 한글 관련 문제 해결 9. 외부 터미널에 실행 결과 보여주기 전반적인 파이썬 환경 구성에 도움을 준 블로그 https://webnautes.tistory.com..
2019.11.16 -
[ Python ] Gmail로 메일 보내기
먼가 돌아가는 것에 대해서 error 같은 것을 빨리 체크하기 위해서 logging 작업을 하긴 하지만, 다른 작업과 병행을 하다보면 확인하기가 어려울 때가 있어서, 시간을 낭비할 우려가 있다. 그래서 이런 문제를 해결 하기 위해 에러가 날 때 메일을 보내주면, 더 쉽게 파악할 수 있지 않을까 생각을 했다. 그래서 오늘에서야 자료를 찾고 시도해봤다! 역시 파이썬에서는 이미 구현이 되어 있어서 참 편하게 아래 방법을 잘 따라 하니 바로 되었다! 일단은 구글 메일로 보내는 것을 할 예정이고, 구글 아이디에서 해줘야하는 것이 있다. 네이버도 된다고 하니, 아래 medium url을 눌러서 해보시면 된다! 구글 계정 로그인 -> 보안 -> 보안 수준이 낮은 앱으로 엑세스를 사용 나의 보안을 주고 편리함을 얻자 ..
2019.10.26 -
[ Python ] 자신만의 예외 클래스 정의하기 - 슬기로운 파이썬 트릭 책 中
왼쪽과 오른쪽을 보면 왼쪽은 왜 틀린지는 아닌데, 머가 들어가서 틀린 지를 알 수가 없고, 오른쪽은 머가 들어가서 왜 틀린지 알 수도 있다. 그래서 명확히 이름을 부여하여 이름만 보고 예외를 처리할 수 있는 형태로 봐야 디버깅이 쉬워진다. class NameTooShort(ValueError) : pass def validate(name) : if len(name) < 10 : raise NameTooShort(name) validate("hi") 이렇게 하면 왜 에러가 걸린지를 명시해줘서 쉽게 디버깅이 된다. 이렇게 쓰는 것인지는 모르겠다... 으흠 맞겠지 현재 ValueError 부분을 세세하게 나눠서 처리를 하고 만약 다른 에러가 나올 떄는 KeyError는 KeyError로 다른 예외처리는 Exc..
2019.09.29 -
[ Python ] Decorator - 슬기로운 파이썬 트릭 책 中
간략하게 유용한 경우부터 로그 남기기 접근 제어와 인증 시행 계측 및 시각 측정 비율 제한 캐싱 및 기타 일단 파이썬 같은 경우에는 일급 함수 함수는 객체다 / 함수는 다른 함수 내부에서 정의될 수 있다. Decorator란? 다른 함수를 `장식`하거나 `포장`하고 감싼 함수가 실행되기 전과 후에 다른 코드를 실행할 수 있게 한다! 왼쪽) 이런 모양으로 기존 사용하려는 함수를 감싸는 꼴이다. / 오른쪽) decorator 사용 다중 Decorator 적용 순서는 아래에서 위로 쭉 wrapper 클로저의 정의에서 * 및 ** 연산자를 사용하여서 모든 위치 및 키워드 인자를 수집하고 변수에 저장한다. wrapper 클로저는 수집된 인자를 * 및 ** 인자 풀기 연산자를 사용하여서 입력 함수에 전달한다. 데코..
2019.09.29 -
[ Python ] 파이썬 객체에서 with 사용 - 슬기로운 파이썬 트릭 책 中
슬기로운 파이썬 트릭이라는 책에서 나오는 객체엇 with 사용 부분 일반적으로 먼가 쓰고 닫을 때 다음과 같이 진행을 한다. f = open("hello.txt", "w") f.write("text") f.close() 하지만 이런식으로 진행하다 보면, f.write 도중에 에러가 발생하면 파일이 닫히는 것을 보장하지 않아서 리소스 누수가 발생할 수 있다. 그래서 이것을 다음과 같이 해결할 수 있다. f = open("hello.txt", "w") try : f.write("text") finally : f.close() 하지만 이러면 코드가 굉장히 지저분해보일 수 있다. 그래서 책에서는 with를 사용해서 리소스를 적절하게 확보하고 반환하는 것을 하는 게 좋다고 한다. 책에서는 contextmanage..
2019.09.29 -
[ 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에서 RocCurve 시각화하기.
딱히 함수로 지정되어있지 않은 것 같아서 공유합니다. + 저도 나중에 찾아서 보기 편하게 보려고요 ㅎㅎㅎ def rocvis(true , prob , label ) : from sklearn.metrics import roc_curve if type(true[0]) == str : from sklearn.preprocessing import LabelEncoder le = LabelEncoder() true = le.fit_transform(true) else : pass fpr, tpr, thresholds = roc_curve(true, prob) plt.plot(fpr, tpr, marker='.', label = label ) fig , ax = plt.subplots(figsize= (20,10..
2019.05.18