728x90

Programming Language/Python 12

[Python] String type 한글 바이트 -> 한글 변환

유니코드를 변환하고 받아오는 과정에서 타입이 변환되는 경우가 생긴다. 나의 경우는 대략 이렇다. 아래와 같이 입력부터 한글로 들어왔다면 인코딩을 utf-8로 했다면 디코딩도 utf-8로 진행하면 되므로 문제가 되지 않는다. a = "파이썬" a = a.encode('utf-8') print(a, type(a)) b'\xed\x8c\x8c\xec\x9d\xb4\xec\x8d\xac' 문제는 아래와 같은 상황인데, 유니코드가 byte로 넘어왔는데 인식이 잘못되어 string으로 변환된 경우이다. a = "\\xed\\x8c\\x8c\\xec\\x9d\\xb4\\xec\\x8d\\xac" # 한글, utf-8로 파이썬 print(a, type(a)) # \xed\x8c\x8c\xec\x9d\xb4\xec\x8..

파이썬에서 쉘 스크립트 사용하기

파이썬에서 쉘 스크립트의 결과를 받아보는 경우가 필요해서 공부한 결과를 쓴다. 파이썬에서 OS 명령어를 사용하는 방법은 크게 2가지가 있다. 1. os 라이브러리 이용하기 2. subprocess 라이브러리 이용하기 검색해본 결과 두 개의 차이점은 os는 순차적으로 실행해서 해당 명령어가 끝날 때까지 기다린다는 점, subprocess는 새로운 프로세스로 생성해서 실행한다는 점이다. 순차적으로 실행한다면 os가 좋겠지만 나는 subprocess로 진행하기로 했다. subprocess는 다양한 메소드로 call, run, check_output 등이 존재하지만 나는 파이썬에서 쉘 스크립트의 결과를 받아보는 게 필요했기 때문에 check_output으로 진행하였다. (꼭 check_output이 아니여도 됨..

애플워치로 HRV 데이터 추출하기

HRV란 Heart Rate Variability의 약자로, 심박변이도라고 말하기도 한다. 쉽게 생각하면 심장은 항상 안정적으로 뛰기 때문에 변이가 적을수록 건강한 것이 아닌가 싶겠지만, 심장은 오히려 상황에 따라 변화하면서 불규칙하게 뛰기 때문에 건강할 사람일 수록 HRV가 더 높다고 한다. 검색해보던 중에 애플워치를 착용하고 있던 나에게 애플워치로도 HRV를 추출할 수 있다고 해서 검색해보고 시도해봤다. 1. 애플워치 데이터 추출하기 애플워치 공식홈페이지에 따라 행동하면 건강 데이터를 추출해낼 수 있다. https://support.apple.com/ko-kr/guide/iphone/iph27f6325b2/ios 애플워치에서 얻을 수 있는 생체 정보는 다음과 같다. 분당 심장박동수 휴식 시 심장박동수..

[python] joblib.load() 에러

sklearn.joblib 라이브러리가 아닌 pypi의 joblib 라이브러리에서 발생하는 문제 로컬 환경에서는 sklearn의 모델들을 joblib.dump() 명령어를 이용해 저장했었는데 EC2 인스턴스에서 실행하기 위해 설치한 sklearn 버전이 0.24여서 해결이 되지 않았었다. 해결방법 scikit-learn 라이브러리 버전을 변경하면 된다. pip install scikit-learn=0.22.1 pip install scikit-learn=0.19.1 출처 kangjik94.tistory.com/m/47 stackoverflow.com/questions/65758102/no-module-name-sklearn-forest-ensemble

[Python] 사전(dict)형 정렬하기

dict_info = { 'A' : 65, 'B' :176, 'C' : 30, 'D' :135, 'E' : 50, 'F' :153, 'G' : 90, 'H' :171 } 1. Key 값만 정렬해서 출력 #1. key값만 알파벳 순서대로 정렬 sorted(dict_info) #1-1 역순일 경우, dict_info = sorted(dict_info, reverse=True) 2.Value 값만 정렬해서 출력 # Value의 값을 정렬해서 출력 dict_info = sorted(dict_info.values()) # 역순일 경우 dict_info = sorted(dict_info.values(), reverse=True) 3. Key값을 기준으로 사전형 전체를 출력 #3. Key값을 기준으로 dict를 정렬..

[Python] Albumentations를 이용한 데이터 증강 및 실험

안녕하세요 오늘은 Albumentations 라이브러리를 이용한 Data Augmentation 실험을 해보겠습니다 저는 아래와 같은 설정으로 실험을 진행하였습니다. Object Detection Model : EfficientDet-D2 Epochs : 100 해당 모델은 github.com/rwightman/efficientdet-pytorch 깃허브를 참조해 fine-tuning을 적용시켰습니다. 먼저 데이터로 전투기 1000장을 크롤링하여, 1) 100장 / 900장 2) 10 / 990 장 으로 두개의 폴더를 준비하였습니다. (이미지 크기는 제각각이지만, 블로그 포스팅을 위하여 사이즈를 변경하였습니다) 그리고 데이터를 증강시켜봐야겠죠?? github.com/albumentations-team/a..

[Python] GIL 관련 OS, 컴퓨터구조가 중요한 이유

안녕하세요 오늘은 그동안 프로그래밍을 하는 입장에서 하나둘씩 공부해보다가 제가 배운 걸 도움이 될까하여 씁니다. 평소에 단순하게 소규모의 코딩만 하다가 어느 순간 많은 데이터를 다루게 되면 속도 이슈가 나오게 되고, 고민해서 검색해보면 멀티프로세싱, 멀티쓰레드 쓰면 속도가 향상된다는 이야기가 나옵니다. 왜 멀티프로세스, 멀티쓰레드가 빠를까요?? 어떨 때 써야할까요?? 이런 얘기를 하다보면 자연스럽게 운영체제, 컴퓨터구조에 관한 이야기로 빠지게 됩니다. 기본적으로 알아야 할 것은 프로세스와 쓰레드의 차이입니다. 용어 설명부터 들어가보면, 프로세스는 컴퓨터 입장에서 실행되어 돌아가는 프로그램입니다. 쓰레드는 무엇일까요? 쓰레드는 프로세스 내부에서 동작하는 실행하는 흐름의 단위입니다. 프로세스 내부엔 쓰레드가..

[Python] Multiprocessing으로 속도 개선해보기

TL;DR 3줄요약 파이썬은 GIL으로 인해 쓰레드를 사용하는 데 제약이 있다. Multiprocessing이냐 multi thread냐는 상황에 따라 다르다. 병렬처리에서는 for문 구조를 줄이는게 핵심이다. 데이터셋 전처리 작업으로 코딩하는 와중에, 시간이 너무 오래 걸려서 파이썬 병렬처리에 관하여 공부를 많이 했다. 새롭게 알게 된 점은 파이썬에서는 GIL(Global Interpreter Lock) 이라고 하여, 다른 언어들과 다르게 물리적으로는 1프로세스에 1개의 쓰레드만 사용할 수 있다. 이에 대해선 파이썬을 개발한 귀도 반 로섬이 의도적으로 설계한 것이라고 한다. I’d welcome a set of patches into Py3k only if the performance for a sin..

728x90