분석 Python/구현 및 자료(105)
-
[ 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 -
[ Python ] 현재 돌아가는 Python Script 선택해서 끄기
python 실행한 script를 전체 삭제하는 방법 만약 실행된 script가 규칙이 있다면 다음 코드 사용하면 주피터 노트북에서 쉽게 삭제 가능! def check_kill_process(pstring): import os, signal for line in os.popen(f"ps ax | grep {pstring} | grep -v grep"): fields = line.split() pid = fields[0] os.kill(int(pid),signal.SIGKILL) 만약 1_a.py , 2_a.py , 3_a.py와 같은 스크립트가 있을 때를 가정 ## check_kill_process("a.py") check_kill_process('"train.py --case_idx 4 --versio..
2020.02.06 -
[ Python ] decorator로 Error 정리해서 출력하기
광고 한번만 눌러주세요. 블로그 운영에 큰 힘이 됩니다! 파이썬 코드를 돌리다 에러가 나게 되면 다음과 같이 에러가 보일 것이다. 이런 식으로 Traceback 코드로 나오게 된다. 의미는 error_test.py에서 module 안에 ho라는 def에 있는 sub라는 def에서 TypeError가 났다고 할 수 있다. 만약에 더 복잡하게 된다면, 에러를 확인할 수는 있지만, 보기 쉽지 않을 것이다. 그래서 이러한 점을 해결하기 위해 decorator를 활용해서 에러메시지를 좀 더 보기 쉽게 만들어봤다. from functools import wraps import datetime import time def errorcheck(original_function): import logging import ..
2020.01.31 -
[ Python ] Install all dependency packages
한 번만 실수로 광고를 눌러주세요! 블로그 운영에 큰 힘이 됩니다. :) 인터넷이 안 되는 환경에 패키지를 설치해야 할 일이 있다. 이런 일이 있을 때, 만약 도커 같은 것을 굉장히 편리하게 할 수 있지만, 아직 안 쓰는 곳도 있을 때는 의존성을 다 확인해서 가져가야 한다. R에서는 이러한 것을 고려해서 한번 설치하면 모든 dependency를 설치해주는 miniCRAN이라는 방법이 있지만, 아쉽게도 파이썬에서는 모든 dependency까지는 고려해주는 것을 아직까진 본 적이 없다. pip download 를 사용하면, 해당 패키지에 대한 Dependency까지는 고려해주지만, 그 Dependency의 Dependency 패키지는 설치를 안 해주는 것 같다. https://pip.pypa.io/en/st..
2020.01.25 -
[ Python ] Optuna Sampler 비교 (TPESampler VS SkoptSampler)
하이퍼파라미터를 튜닝하는 방법에는 여러 가지가 있다. 일단 기본적으로 GridSearch 나 RandomSearch 같은 방법이 있다. 하지만 이 방법론은 각 파라미터를 돌릴 뿐이지, 최적의 파라미터를 찾아주지는 못한다. 이런 것을 활용하기 위해서 Bayesian Optimization 방법론을 사용하여야 한다. 아래 그림 중에서 밑에 실제 결과라는 부분은 learning rate에 따른 일반화 성능 함수를 나타낸다. 그러나 우리는 저기에서 어떤 learning rate가 최적의 값인지를 알지 못한다. 그렇지만 실제로 딥러닝을 할 때는 저것을 순차적으로 한다면, 원하는 성능을 얻을 수 있다는 확신도 없이 계속 돌려야 한다. 그래서 많은 연구자들이 이러한 문제점을 해결하기 위해 병렬로 돌리는 것을 연구하였..
2020.01.24 -
[ Python ] numba 사용 예시
더 빠르게 돌리는 방법 중 하나인 numba에 대한 글에 있는 코드 https://towardsdatascience.com/numba-weapon-of-mass-optimization-43cdeb76c7da Numba: “weapon of mass optimization” Numba is a Python compiler, specifically for numerical functions and allows you to accelerate your applications with high performance… towardsdatascience.com What is Numba? Numba is a compiler that allows you to accelerate Python code (numerical..
2020.01.15 -
[ Python ] smtplib을 활용한 메일 보내기 (이미지 , 텍스트 , gif)
도움이 되셨다면, 광고 한 번만 눌러주세요! 블로그 운영에 큰 힘이 됩니다! :) 학습이 완료되고 나서 log 같은 것을 확인하고 그래야 하는데, 이러면 역시 귀찮을 수 있기 때문에 완료되면 메일로 보내기로 만들어 봤다. 그래서 결과물로 저장하는 image와 log file을 gmail로 보내는 것을 구현해봤다. 파이썬에서 메일로 보낼 때 참고하시면 될 것 같다! import os , re import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart import codecs ### Login Information logi..
2020.01.05 -
[ Python ] 동적 변수 할당 및 불러들이기
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ R에서는 string 객체에 값을 넣은 다음에 할당할 수 있는 방법이 있다. assign 함수와 mget의 함수를 사용하면 된다. ##R ## string 객체에 값 할당하기 asssing("object1" , 5 ) ## 불러들이기 mget("object1") ### 5 이제까지 파이썬을 사용할 때 이러한 것에 대해서 몰라서 굉장히 불편하게 dict에 담아둬서 key값으로 불러내는 방법을 사용했다. 하지만 아직 더 나아가서 함수든 지 객체던지 모두 저장하는 방법에 대해서도 알고 싶다. R에는 save 함수가 있는데, 이러한 기능이 파이썬에서도 있는지 궁금하다. 파이썬에서는 sys 함수를 사용하면 동적 변수 할당이 가능하다는 ..
2019.12.15 -
[ Python ] H2O XGBOOST Practice
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ R에서는 모델링을 하겠다고 하면 주로 H2O로 하였고, Python에서는 딥러닝 프레임워크나 scikit learn을 주로 사용했는데, H2O는 모델 결과값도 아주 잘 정리해주는 좋은 패키지이기도 하고, 다양한 모델을 거의 비슷한 문법으로 사용할 수 있는 장점이 있는 것 같다. 그래서 여러개의 모델 중 XGBOOST로 실습해봤다. 아래 URL 참고! # http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/_modules/h2o/estimators/xgboost.html # https://github.com/h2oai/h2o-tutorials/blob/master/best-practices/c..
2019.12.15 -
[ Python ] logging 결과물 폴더 생성 후 압축 파일로 저장하기
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 파이썬에서 Logging을 하고 싶을 때가 있다. 그냥 저장하는 것은 쉽지만, 그러다 보면, 용량을 과하게 차지하니 압축을 해서 저장을 하고 싶어 진다. 그리고 이것을 언제 저장했는지 구별하고 싶어서 압축 시점 날짜 폴더를 생성 후 그 안에 압축 파일을 넣어야 했다. 기존 방식으로는 안됬기 때문에 먼가 수정이 필요했다. 그리고 정답까지는 아니겠지만, 이런 식으로 하니 문제를 해결할 수 있었다 여기서는 분 단위로 저장하게 했다. import logging import gzip, zlib import os from datetime import datetime as dt def namer(name) : return name + "...
2019.12.09 -
[ Python ] smtplib를 이용해서 html 메일로 보내기
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 가끔 이쁘게 결과를 만들어서 메일로 보내고 싶을 때가 있다. 이때 활용할 수 있는 패키지가 기본으로 제공하는 smtplib 라는 패키지가 있고, 이번에는 단순히 메세지만 보내는 것 아니라 html을 보내보고자 한다. 필자는 html을 따로 배우지 않고 기초정도만 아는 정도라 꾸미는 능력이 부족하지만, html에 대해 지식이 있으신 분은 그대로 사용할 수 있기 때문에 굉장히 편리하게 할 수 있을 것 같다. 일단 지메일로 이메일 보내는 것 자체는 https://data-newbie.tistory.com/309 블로그를 참고하시면 될 것 같다. 개인적으로 아직 로그인 없이 보내는 법을 알고 싶은데, 혹시 이 글을 읽고 있는 분 중에..
2019.11.24 -
[ Python ] Thread 간에 결과값 Queue로 전달
도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 파이썬 Thread 같에 Queue를 활용해서 처리 결과 전달하는 방법!! 지금 상황에서 중요한 힌트가 된 자료 https://brownbears.tistory.com/217 [Python] Tip - 스레드 간 작업을 조율하려면 Queue를 사용 많은 작업을 동시에 실행하는 파이썬 프로그램에서는 종종 작업들을 조율해 줘야합니다. 가장 유용한 병행 작업 방식 중 하나는 함수의 파이프라인입니다. 파이프라인은 제조 공장에서 사용하는 조립 라인처럼 작.. brownbears.tistory.com
2019.11.22