Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

배우고 느낀 것들

과제#15 Visualizing Mnist 본문

머신러닝

과제#15 Visualizing Mnist

낑깡H 2022. 12. 22. 18:43

Mnist 라는 데이터셋을 사이킥런을 통해 불러옴

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt 
from sklearn.datasets import fetch_openml #데이터셋 불러오는 기능인듯?

mnist = fetch_openml('mnist_784', cache = False)  

X = mnist.data.astype('float32').to_numpy()
y = mnist.target.astype('int64').to_numpy()

평면 상에 이미지를 불러옴

plt.figure(figsize=(5,5))
idx = 5 #5번째 값 불러오기?

grid_data = X[idx].reshape(28,28) #784개짜리를 28*28로 변환
plt.imshow(grid_data, interpolation = "none") #interpolation : 이미지 보정
plt.show()

 

 

다른 이미지도 불러서 확인해보고, 숫자나 모양을 갖춘건 드물다는 것을 확인!

plt.clf() # 좌표평면상의 내용 지움
plt.figure(figsize = (5,5))

rand_img = np.random.rand(28,28)
plt.imshow(rand_img)
plt.show()

 

데이터 전체 42000개를 다루는 대신, 15000개 정도만 추리고, 15000개도 많기 때문에 정규화 진행

# 42000개의 데이터 15000개로 줄이기 -> (15000,784)의 모양
labels = y[:15000]
data = X[:15000]

# 15000은 큰 값이기 때문에 z-score 정규화 진행
from sklearn.preprocessing import StandardScaler
standardized_data = StandardScaler().fit_transform(data)

sample_data = standardized_data

PCA를 통해 모양을 갖춘 이미지들을 좀 더 낮은 차원으로 끌어내림

: 데이터가 가장 흩어져있는(분산이 높은) 축으로 옮겨 원하는 차원 개수만큼 줄이는 방법

 

#784 차원을 2차원으로 축소  -> 변경된 모양 : (15000,2)
pca.n_components = 2
pca_data = pca.fit_transform(sample_data)

pca_data = np.vstack((pca_data.T, labels)).T   
#.T : 행렬의 전치 
#vstack : 행렬을 세로로 합침 
#-> pca_data를 뒤집고 labels와 합친 뒤, 다시 뒤집음 


import seaborn as sn 
pca_df = pd.DataFrame(data=pca_data, columns=("1st_principal", "2nd_principal", "label"))
sn.FacetGrid(pca_df, hue="label", size=6).map(plt.scatter, '1st_principal', '2nd_principal').add_legend()
plt.show()

참고: 

MNIST의 이진 분류 : https://junsik-hwang.tistory.com/47

 

머신러닝 - MNIST 알아보기 (분류) - Python

머신러닝을 공부하는 사람이라면 한 번쯤 경험해봤거나 들어봤을 데이터셋이다. MNIST! 이 데이터 셋은 미국 고등학생들과 인구조사국 직원분들이 손으로 직접 쓴 숫자 데이터셋이다. 시작해보

junsik-hwang.tistory.com

https://yganalyst.github.io/ml/ML_chap2/

'머신러닝' 카테고리의 다른 글

과제 #16 K-means Clustering  (0) 2023.01.03
과제 # 12 Logistic Regression  (0) 2022.11.29
[혼자공부하는머신러닝] 2장  (0) 2022.11.18
가공에 필요한 함수들  (0) 2022.10.29
명목형 변수를 이진형 변수로 바꾸기  (0) 2022.10.23
Comments