728x90

프로그래밍 /Python 8

[matplotlib] plot 글씨체 변경 및 글씨 선명하게 하기

plot에 나오는 글씨체를 Times New Roman으로 변경하는 방법 plt.rcParams['font.family'] = 'Times New Roman' Times New Roman 이외에도 기본 폰트의 경우에는 별도 폰트 파일 다운로드 받을 필요 없이 위와 같이 해결이 될 것. 글씨 선명하게 하기 jupyter 기본 plot의 경우에는 plot 내부의 글씨가 조금 흐린 경우가 있음. 따라서, 아래와 같이 config를 설정해주면 글씨를 선명히 할 수 있음. %config InlineBackend.figure_format = 'retina'

[Python] 클래스 선언 시 object 상속을 하는 이유

파이토치 learning rate scheduler 소스 코드를 뜯어보다가 베이스 클래스인 _LRScheduler가 object를 상속받는 것을 알 수 있었다. 클래스 __init__과정에서 super().__init__()도 수행하지 않는데, 즉 어떤 속성도 상속받지 않는데 대체 그럼 object를 상속받는 건 무슨 역할을 하는 것일까 하는 궁금증에 찾아본 내용을 정리한다. old-style class vs. new-style class [문제의 코드] class _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1, verbose=False): # Attach optimizer if not isinstance(optimizer, Opti..

[python] install error (disutil 관련)

ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. pip -r requirements.txt를 수행하다가 맞닥뜨린 에러. 기존의 패키지를 uninstall하고 다시 새로운 버전을 설치하는 과정에서 어떤 파일을 지워야할지 결정할 수 없기 때문에 발생하는 installation 에러이다. 나같은 경우엔 PyYAML과 Cython 등을 설치하면서 발생했다. 기존 설치되어있던 라이브러리가 있다면 충돌하면서 발생할 확률이 높다 (나같은 경우엔 ..

[python] Counter

카운터에 대한 새로운 지식을 알게 되어 글을 적는다. 파이썬 Counter는 collections 라이브러리에 정의되어 있으며, iterator에서 각 요소 별로 몇 번 등장하는지 count해주는 딕셔너리의 서브클래스이다. (엄밀한 표현은, A Counter is a dict subclass for counting hashable objects ) cf.) Counter는 딕셔너리이다. Counter도 딕셔너리이기 때문에 Counter에서 바로 iteration을 수행하면 key값만을 반환한다. 따라서 key, value 쌍이 필요하다면 Counter객체.items() 의 메소드를 활용해서 key, value 쌍을 얻어내야 한다. 실제로 많이 사용해보지는 않았는데, Counter 간의 연산이 된다는 사실..

[Python] for ~ else

프로그래머스에서 알고리즘 스터디를 진행 중인데 오늘 처음으로!!! for ~ else 문을 알게 되었다. 간단하게 말하자면, for loop이 break 없이 끝날 경우에 else문을 실행하는 것. break든 아니면 break 없이 모든 loop을 다 돌았든 for loop을 탈출했을 때 무조건 그 아래에 statement가 있으면 수행을 해야 한다. 하지만, 어떤 경우에는 loop을 정상적으로 탈출한 경우에만 statement를 수행하고 싶을 경우가 있을 것이다. 이럴 경우 flag를 달아주든지 해야하는데 for ~ else문을 사용하게 되면 이런 flag의 사용을 막을 수 있다. 프로그래머스 스킬 트리 문제(https://programmers.co.kr/learn/courses/30/lessons/..

[python] getter, setter, property, decorator 정리

_로 시작하는 변수 (getter, setter) (참고: https://www.daleseo.com/python-property/) : 외부에서 직접 접근이 어려운 변수 (클래스 인스턴스의 내부 데이터를 보호하기 위함) class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.set_age(age) def get_age(self): ## getter return self._age # 외부에서 직접 접근을 하지 못하고, getter를 통해서만 가능 def set_age(self, age): ## setter if age < 0: raise Va..

[파이썬 머신러닝 완벽가이드] Chap2. 사이킷런으로 시작하는 머신러닝

본 포스트는 "파이썬 머신러닝 완벽가이드" 책을 공부하고 정리한 글입니다. 아나콘다 환경을 설치한다면 사이킷런은 별도로 설치할 필요가 없기 때문에 colab 환경에서 실습을 진행하는 본 포스트에서는 별도의 패키지 설치는 하지 않겠습니다. 실습 colab notebook: colab.research.google.com/drive/1fDmXFwxTpDEGEbBA6Cu4T6QFbXz4UfSC?usp=sharing 1. 사이킷런 기본 모듈 설명 - sklearn.datasets: 사이킷런에서 자체적으로 제공하는 데이터셋을 생성하는 모듈 → 솔직히 실습용 데이터셋 수준이기 때문에 많이 쓰이지는 않습니다. iris 등의 데이터셋이 있습니다. - sklearn.tree: 트리 기반의 ML 알고리즘을 구현한 클래스를 ..

Hyper parameter tuning

내가 발견한 그리드 서치의 문제점 1. 많은 범위를 지정할 경우, 연산 시간이 너무 오래 걸림. --> 다양한 range의 하이퍼 파라미터 값 assign이 불가능함. 2. 1이 불가능하기 때문에, 내가 알아서 값을 정해서 param에 넣어줘야 하는데 이게 많이 힘들다. 내가 하는 방식은 범위가 넓게 그리드 서치를 하면서 그때 마다 도출된 최적값을 기준으로 해서 그 안에서 범위를 줄여나가는 방식으로 그리드 서치를 반복하는 방법인데, 마찬가지로 연산 시간이 너무 오래 걸리고, 일단 내가 찾은 최적값이 global optimum이라는 보장이 없다. 3. 여러 개 변수가 있을 경우 여러 번 돌릴 때 탐색된 최적값이 계속 변한다는 단점(?)이 있었다. --> 근데 이건 내가 코딩 잘못했을 수도 있다고 봄. 좀 ..

728x90