기본 환경: IDE: VS code, Language: Python
Matplotlib을 활용한 데이터 시각화
기본적인 DNN 모델 구축 및 시각화를 통한 예측의 정확도 판별
# matplotlib_scatter_and_plot.py
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.model_selection import train_test_split
# 1. Data
x = np.array(range(1,21))
y = np.array([1,2,4,3,5,7,9,3,8,12,13,8,14,15,9,6,17,23,21,20])
x_train, x_test, y_train, y_test = train_test_split(
x,y,
train_size=0.7,
shuffle=True,
random_state=123
)
# 2. Model Construction
model = Sequential()
model.add(Dense(64, input_dim=1))
model.add(Dense(32))
model.add(Dense(16))
model.add(Dense(1))
# 3. compile and train
model.compile(loss='mae', optimizer='adam')
model.fit(x_train, y_train, epochs=128, batch_size=4)
# 4. Evalueate and Predict
loss = model.evaluate(x_test, y_test) # 예측 전 평가
y_predict = model.predict(x) # training dataset을 predict에 사용
print("Result: ", y_predict)
import matplotlib.pyplot as plt
plt.scatter(x, y) # Scatter: 실제 x, y 데이터
plt.plot(x, y_predict, color="red") # plot: 실제 x, 예측 y 데이터
plt.show() # Scatter와 plot을 통해 시각적으로 예측을 비교, 분석할 수 있음
'''
Result
Epoch 128/128
4/4 [==============================] - 0s 5ms/step - loss: 1.9357
1/1 [==============================] - 0s 313ms/step - loss: 3.1006
Result:
[[ 1.0797057]
[ 2.1201117]
[ 3.160518 ]
[ 4.2009234]
[ 5.2413287]
[ 6.2817335]
[ 7.32214 ]
[ 8.362547 ]
[ 9.402951 ]
[10.443358 ]
[11.483764 ]
[12.524168 ]
[13.564573 ]
[14.6049795]
[15.645383 ]
[16.685793 ]
[17.7262 ]
[18.766605 ]
[19.807007 ]
[20.847416 ]]
'''
plt.scatter(x, y): 파란색 점
plt.plot(x, y_predict, color="red"): 빨간색 실선
1. import matplotlib.pyplot as plt
matplotlib.pyplot library 함수를 사용하기 위해 import 후, 약칭 plt로 지정
2. plt.scatter(x, y)
실제 x, y 데이터를 scatter 함수에 대입하여, 산점도 반환
3. plt.plot(x, y_predict, color="red")
실제 x, 예측 y 데이터를 plot 함수에 대입하여, 예측 함수 반환
4. plt.show()
작성한 그래프 출력
➕ plot()
- plot(y): plot 함수에 하나의 숫자 리스트가 대입될 경우, 해당 값을 y값으로 가정하고 x값 0, 1, 2 ...를 임의로 생성
- plot(x,y): (x, y)에 대한 선형 함수 반환
- plot(x1, y1, 'r--', x2, y2, 'bs'): (x1, y1)에 대한 빨간색 실선 및 (x2, y2)에 대한 파란색 네모 그래프 반환
→ 예시: (x, y) dataset과 (x, y_predict) dataset에 대한 그래프
# matplotlib_plot2.py
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.model_selection import train_test_split
# 1. Data
x = np.array(range(1,21))
y = np.array([1,2,4,3,5,7,9,3,8,12,13,8,14,15,9,6,17,23,21,20])
x_train, x_test, y_train, y_test = train_test_split(
x,y,
train_size=0.7,
shuffle=True,
random_state=123
)
# 2. Model Construction
model = Sequential()
model.add(Dense(64, input_dim=1))
model.add(Dense(32))
model.add(Dense(16))
model.add(Dense(1))
# 3. compile and train
model.compile(loss='mae', optimizer='adam')
model.fit(x_train, y_train, epochs=128, batch_size=4)
# 4. Evalueate and Predict
loss = model.evaluate(x_test, y_test)
y_predict = model.predict(x)
import matplotlib.pyplot as plt
plt.plot(x, y, "r--", x, y_predict, "bs")
plt.show()
➕ load_digits를 활용한 이미지 반환
# matshow_load_digits.py
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
# 손글씨로 쓴 숫자를 분류하는 datasets
datasets = load_digits()
# print(datasets.shape) # numpy.shape, datasets=scikit learn
plt.gray() # 이미지의 기본색조: 회색조
plt.matshow(datasets.images[0]) # 훈련용 데이터 손글씨 0
plt.matshow(datasets.images[1]) # 훈련용 데이터 손글씨 1
# plt.matshow(): array -> image로 반환
plt.show()
소스 코드
참고 자료
📑 np.unique(y[Python] Python 20일차(예제로 배우는 파이썬 데이터 시각화)
📑 [Python] 10일차 - matplotlib, histogram 등
'Naver Clould with BitCamp > Aartificial Intelligence' 카테고리의 다른 글
Environment Settings for GPU usage (0) | 2023.01.21 |
---|---|
Model Performance Indicator (0) | 2023.01.21 |
Split training data and test data (0) | 2023.01.21 |
Scalar, Vector, Matirx, Tensor (0) | 2023.01.20 |
MultiLayer Perceptron (0) | 2023.01.20 |