현재 인공지능을 공부하고 파이썬으로 모델링하면서 많이 쓰는 라이브러리 중 하나가 Matplotlib이다. Matplotlib 라이브러리가 무엇이며 무슨 함수가 있는지 포스팅해보려 한다.
1. Matplotlib이란?
Matplotlib 라이브러리는 그래프를 그리거나 데이터를 시각화하는데 쓰인다. 이 라이브러리가 어디서 쓰일까?
SVM 코드를 예시로 들자면,
model = SVC(
C = 1e0,
kernel = 'linear',
tol=1e-3,
max_iter=-1,
decision_function_shape='ovr',
random_state=0, # 시드는 0으로 고정
)
model.fit(X_train,y_train)
pred_train = model.predict(X_train)
print("n iter:", model.n_iter_)
print("n support:", model.n_support_)
DecisionBoundaryDisplay.from_estimator(
model, X_train, grid_resolution=100, response_method="predict", cmap=plt.cm.coolwarm, alpha=0.8, eps=0.5
)
plt.scatter(X_train[model.support_,0], X_train[model.support_,1], s=180, edgecolor='g')
plt.scatter(X_train[:,0], X_train[:,1], c=y_train, cmap=plt.cm.bwr, s=80, edgecolor='k')
plt.scatter(X_train[:,0], X_train[:,1], c=pred_train, cmap=plt.cm.bwr, s=10)
plt.show()
print("train acc:", np.sum(pred_train==y_train) / len(y_train) )
데이터의 분포도에 따라, 구역을 나눠주는 인공지능 모델이 SVM이다. 이 데이터가 잘 학습이 됐는지 확인하는 지표로 Matplotlib을 쓰는데 이 라이브러리를 활용하면 다음과 같은 그림을 볼 수 있다.
인공지능이 학습이 잘 됐는지 시각화하여 볼 수 있게하려고 Matplotlib 라이브러리를 많이 쓰는 편이다.
2. Matplotlib으로 그래프 만들기
1) 모듈 Import
import matplotlib.pyplot as plt
2) plot() 함수
: 2차원 그래프를 표현하기 위한 함수이다.
import matplotlib.pyplot as plt
# 기본적인 선 그래프 그리기
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y)
plt.show()
다음을 실행하면 (1, 2), (2, 3), (3, 5)... 을 지나는 직선을 그린다.
2-1) xlabel, ylabel, title
xlabel, ylabel, title은 x축과 y축이 나타내는 데이터를 정의할 수 있고, title은 제목을 정의한다.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1)
plt.plot(x, y2)
plt.xlabel('X Axis')
plt.ylabel('Y Axis') # 라벨링 함수
plt.title('Example Plot') # 그래프의 제목
plt.show()
2-2) 선의 옵션 지정
여기서 선의 옵션은 다음과 같이 지정 가능하다. 다음은 예시이다.
- 'b-': 파란색 실선
- 'ro': 빨간색 원형 마커
- 'g--': 녹색 점선
- 'k^': 검은색 삼각형 마커
-> 여기서 { '-' : 실선 }, { '--' : 점선 }, { '^' : 삼각형 }, { 'o' : 원형 } 이다.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 9, 16, 25]
plt.plot(x, y1, 'b-', label='Prime Numbers') # 파란색 실선
plt.plot(x, y2, 'ro--', label='Square Numbers') # 빨간색 원형 마커와 점선
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.title('Example Plot')
plt.show()
어떠한 선을 그릴 수 있을까?
- 선 옵션
- '-' : 실선
- '--' : 점선
- ':' : 완전 점선
- '-.' : 실선 + 점선
- 색상 옵션
: 음.. 색깔 영어 앞 자리 입력하면 되는데... 엄청 많다..!
2-3) axis
axis는 영어로 축이라는 말인데, 축의 옵션을 정하는 함수이다. 다음은 축의 최솟값, 최댓값을 지정한 함수이다.
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()
1. axis('on') or axis('off)
on, off 키워드를 통해 축을 보이게 할 수 있고 없게 할 수 있다.
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis('off')
plt.show()
2. axis('equal')
x, y축의 길이가 동일하다.
3. axis('scaled')
x, y축의 길이의 비율을 맞춘다.
4. axis('image')
이미지 데이터에 맞춘 것이다. 궁금해서 쳐봤다.
import matplotlib.pyplot as plt
import numpy as np
image_data = np.random.rand(10, 10)
plt.imshow(image_data)
plt.axis('image') # 축 비율 유지하고 데이터 범위에 맞춤
plt.title('Image Axis')
plt.show()