딥러닝을 위한 도구들
* 여기서는 구글의 코랩을 사용하여 실습하며 코랩의 사용법은 따로 설명하지 않는다.
넘파이(NumPy)
넘파이는 파이썬의 핵심 과학 패키지 중 하나이다. 많은 머신러닝과 딥러닝 패키지가 넘파이를 기반으로 구현되었고 넘파이 인터페이스를 계승하고 있기 때문에 넘파이는 꼭 익혀야 하는 파이썬 패키지 중 하나이다. 여기서는 기본적인 기능만 설명한다.
다차원 배열은 파이썬 리스트로 만들어 사용해도 되지만 파이썬 리스트로 만든 배열은 배열의 크기가 커질수록 성능이 떨어진다는 단점이 있다. 바로 이런 경우에 넘파이를 사용한다. 넘파이는 저수준 언어로 다차원 배열을 구현했기 때문에 배열의 크기가 커져도 높은 성능을 보장한다. 또 배열을 이용한 다양한 통계, 수학 함수도 제공한다.
위의 코드를 보면 파이썬의 import 명령으로 넘파이를 임포트할 때 as 키워드를 이용하여 np라는 이름으로 별칭을 만든 것을 볼 수 있다. 파이썬 프로그래머들은 이름이 조금이라도 길면 줄여서 쓰려고 하기 때문이다. np는 넘파이를 줄여서 쓰는 오랜 전통이 있는 별칭이다.
위 코드는 넘파이의 array() 함수로 만든 2차원 배열을 만들고 출력한 것이다. 넘파이 배열은 파이썬의 리스트 자료형처럼 숫자와 문자열을 함께 담을 수 없다. 그리고 넘파이 배열의 요소를 선택하는 방법은 파이썬 리스트에서 요소를 선택하는 방법과 동일하다.
위 코드는 넘파이의 sum함수를 사용하여 넘파이 배열의 모든 요소들의 합을 출력한 것이다. 넘파이에서는 이렇게 넘파이 배열에 대한 여러 수학 함수를 제공하기 때문에 편리하다.
맷플롯립(matplotlib)
맷플롯립은 파이썬 과학 생태계의 표준 그래프 패키지이다. 물론 맷플롯립 이외에도 좋은 그래프 도구들이 많이 있다.
위 코드는 맷플롯립을 임포트한 코드이다. 맷플롯립도 넘파이처럼 관례에 따라 별칭 plt를 사용한다.
맷플롯립으로 선 그래프와 산점도를 그려보겠다. 두 그래프는 x축을 기준으로 y축의 변화 추이를 살펴보기 편리해 데이터를 분석할 때 자주 사용한다.
선 그래프를 그리려면 x축의 값과 y축의 값을 맷플롯립의 plot()함수에 전달해야 한다. 그런 다음 show()함수를 이용하여 화면에 그래프를 출력하면 된다.
위 코드를 코랩에 입력하면 다음과 같은 그래프가 그려진다.
자주 사용하는 또 하나의 그래프는 산점도(scatter plot)이다. 산점도는 데이터의 x축, y축 값을 이용하여 점으로 그래프를 그린 것이다.
위 처럼 코드를 입력하면 그래프가 그려진다.
이번에는 넘파이 배열을 사용하여 산점도를 그려보겠다. 파이썬의 과학 패키지들은 예외 없이 넘파이 배열로 데이터를 주고받을 수 있도록 만들어져 있다. 여기에서는 넘파이의 random.randn()함수를 사용하여 표준 정규 분포를 따르는 난수(random number)를 만들고 그 값을 이용하여 산점도를 그리겠다. 아래와 같이 입력하면 1,000개의 난수를 만들어 산점도를 그릴 수 있다.
데이터 분석과 그래프 도구는 뗄래야 뗄 수 없는 사이이다. 위와 같은 방법으로 데이터를 시각화하면 데이터에서 직관을 얻기가 쉽다. 딥러닝에서도 데이터 시각화는 필수이기 때문에 맷플롯립도 자주 사용할 것이다.