딥러닝에 필요한 파이썬 기본 문법 | numpy & matplotlib
이제 마지막 관문 파이썬으로 딥러닝하기!입니다.
우선, 딥러닝이란 무엇일까요?
딥러닝이란,
간단히 말하자면, 머신러닝의 신경망 알고리즘보다 더 deep하고 더 wide한 신경망으로
보다 느리지만 보다 정확한 결과를 얻을 수 있는 알고리즘입니다!
머신러닝이 궁금하신분은 아래의 링크를 타고 가시면 됩니다!
본격적인 딥러닝에 앞서,
딥러닝을 하기위해 필요한 numpy, matplotlib 패키지에 대해 알아보겠습니다.
[numpy 패키지란?]
1. 숫자배열 연산을 위한 라이브러리입니다.
2. numpy array는 파이썬 리스트보다 속도가 빠르며 리스트간 연산에 편의성을 제공합니다.
3. sorting이나 indexing, intersection을 찾는 경우에도 속도가 빠릅니다.
4. 평균, 중앙값, 최빈값, 사분위수, 분산, 표준편차를 찾는 경우에도
리스트보다 훨씬 코드가 간단하고 속도가 빠릅니다.
문제1. 아래의 행렬을 numpy로 만드시오
1 2
3 4
import numpy as np
print(np.array([[1,2],[3,4]]))
문제2. 아래의 행렬연산을 numpy로 수행하시오.
1 3 7 0 0 5
+
1 0 0 7 5 0
import numpy as np
a = np.array([[1,3,7],[1,0,0]])
b = np.array([[0,0,5],[7,5,0]])
print(a+b)
만약, 위의 문제와 달리,
행렬의 shape(차원, 원소개수)가 다르면 어떻게 연산을 해야할까요?
numpy 패키지에는 broadcasting라는 특징이 있습니다.
The term broadcasting describes how numpy treats arrays with different shapes during arithmetic operations.
Subject to certain constraints, the smaller array is “broadcast” across the larger array so that they have compatible shapes.
출처ㅣ SciPy.org
broadcasting이란 산술 연산시 다른 shape의 배열을 처리하는 방법으로
특정 제약 조건에 따라, 작은 배열을 큰 배열 와 서로 호환되도록
아래와 같이 작은 배열이 큰 배열에 크기를 맞추는 것을 브로드캐스트라고 합니다.
[broadcasting]
문제3. 위의 braodcasting 그림을 파이썬으로 구현하시오
import numpy as np
a = np.array([[1,2],[3,4]])
print(a * 10)
문제4. 아래의 배열의 원소들의 평균값을 구하시오
import numpy as np
a = np.array([1,2,4,5,5,7,10,13,18,21])
print(np.mean(a))
※ 참고:
중앙값: np.median(a)
최대값: np.max(a)
최소값: np.min(a)
표준편차: np.std(a)
분산: np.var(a)
문제5. 아래의 행렬식을 numpy로 구현하고 아래의 요소에서 15 이상인것만 출력하시오
51 55
14 19
0 4
a = np.array([[51,55],[14,19],[0,4]])
print(a[a>=15])
[ matplotlib 패키지란? ]
딥러닝 실험에서는 그래프 그리기와 데이터 시각화가 중요합니다.
matplolib은 파이썬으로 그래프를 그릴 때 유용한 라이브러리 입니다.
"백문이 불여일타"
우선 그래프를 그려볼까요?
import numpy as np
import matplotlib.pyplot as plt
a = np.array([1,2,4,5,5,7,10,13,18,21])
plt.plot(a)
plt.show()
다음으로
제목, x 라벨, y 라벨을 추가해볼까요?
단, matplotlib 라이브러리의 경우 한글 폰트를 지원하지 않습니다.
한글 폰트를 넣어주어야합니다.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc # 한글 폰트 설정font_name = font_manager.FontProperties(fname="C:/Windows/Fonts/H2PORM.TTF").get_name()rc('font', family=font_name)
x = np.array([0,1,2,3,4,5,6,7,8,9])
y = np.array([1,2,4,5,5,7,10,13,18,21])
plt.plot(x,y)
plt.title('으니's 소득증가추이')
plt.xlabel('년')
plt.ylabel('연평균 소득(단위:천만)')
plt.show()
하나의 화면에 여러개의 그래프를 중첩해서 그리고 싶을 때는 어떻게 할까요?
import matplotlib.pyplot as plt
from matplotlib import font_manager, rcimport pandas as pd
chi = pd.read_csv("창업건수.csv", engine='python')
pae = pd.read_csv("폐업건수.csv", engine='python')
chi = chi.T
y = chi.loc['치킨집']
x = chi.iloc[0]
pae['년도'] = pae['Unnamed: 0']
px = pae['년도']
py = pae['치킨집']
plt.figure(figsize=(6,4))
# 하나의 화면에 여러개의 그래프를 중첩해서 그릴 때
plt.plot(x,y)
plt.plot(px,py, color = "Hotpink")
plt.xlabel('년도')
plt.ylabel('치킨집 창업 건수')
plt.title('"치킨집 년도별 현황"')
plt.show()
참고 데이터: