□ 비지도학습 : 타깃이 없을때 사용하는 머신러닝 알고리즘임.
□ 예제
#라이브러리
import numpy as np
import matplotlib.pyplot as plt
#데이터 로드
fruits = np.load("../jupyterNotebook/data/fruits_300.npy")
print(f"차원 : {fruits.ndim}")
print(f"형태 : {fruits.shape}")
print("첫번째 차원은 샘플개수 300, 두번째 차원은 높이 100, 세번째 차원은 너비 100")
print("\n")
print(fruits[:3])
#첫번째 행 데이터 출력
print(fruits[0,0,:])
#이미지화 : imshow
plt.imshow(fruits[0], cmap="gray")
plt.show()
#이미지화 : imshow 반전
plt.imshow(fruits[0], cmap="gray_r")
plt.show()
#이미지화 : imshow
fig, axs = plt.subplots(1,3)
axs[0].imshow(fruits[0], cmap="gray_r") #사과
axs[1].imshow(fruits[100], cmap="gray_r") #파인에플
axs[2].imshow(fruits[200], cmap="gray_r") #바나나
plt.show()
#픽셀값 분석
#픽셀값 분석을위해 2차원으로 차원축소 및 기존 100행 100열을 100*100으로 한행으로 펼침.
apple=fruits[0:100].reshape(-1,100*100)
pineapple=fruits[100:200].reshape(-1,100*100)
banana=fruits[200:300].reshape(-1,100*100)
print(f"축소 전 : {fruits[0:100][:1].shape}")
print(f"축소 후 : {apple.shape}")
print(apple[0:2])
※ axis = 0 은 과일 자체의 전체 픽셀의 평균을 의미함.
※ axis = 1 은 과일 개당 픽셀의 평균을 의미함.
plt.hist(apple.mean(axis=1))
plt.hist(pineapple.mean(axis=1))
plt.hist(banana.mean(axis=1))
plt.legend(["apple","pineapple","banana"])
fig,axs = plt.subplots(1,3, figsize=(20,5))
axs[0].bar(range(10000), np.mean(apple, axis=0))
axs[1].bar(range(10000), np.mean(pineapple, axis=0))
axs[2].bar(range(10000), np.mean(banana, axis=0))
plt.show()
apple_mean = np.mean(apple, axis=0).reshape(100,100)
pineapple_mean = np.mean(pineapple, axis=0).reshape(100,100)
banana_mean = np.mean(banana, axis=0).reshape(100,100)
fig, axs = plt.subplots(1,3, figsize=(20,5))
axs[0].imshow(apple_mean, cmap="gray_r")
axs[1].imshow(pineapple_mean, cmap="gray_r")
axs[2].imshow(banana_mean, cmap="gray_r")
plt.show()
abs_diff = np.abs(fruits - apple_mean) # 과일3종 자체의 픽셀 - 사과 자체의 픽셀 평균 [3차원 (300,100,100) - (100,100)]
print(abs_diff.shape)
abs_mean = np.mean(abs_diff, axis=(1,2)) # 위 차이의 개당 픽셀평균
print(abs_mean.shape)
apple_index = np.argsort(abs_mean)[:100]
fig, axs = plt.subplots(10,10, figsize=(10,10))
for i in range(10):
for j in range(10):
axs[i,j].imshow(fruits[apple_index[i*10 + j]], cmap = "gray_r")
axs[i,j].axis("off")
plt.show()
'Python > 머신러닝+딥러닝 Ⅰ' 카테고리의 다른 글
비지도학습 : K-means(평균) 알고리즘 (0) | 2024.04.06 |
---|---|
Ensemble Model (0) | 2024.03.25 |
교차검증 (1) | 2024.03.22 |
Decision Tree(결정트리 알고리즘) (0) | 2024.03.22 |
확률적경사하강법 (1) | 2024.03.22 |