AI/혼자공부하는머신러닝딥러닝 17

[DL] 07-3 신경망 모델 훈련

손실곡선 아래와 같이 패션 MNIST 데이터셋을 적재하고 훈련 세트와 검증 세트로 나눈다. from tensorflow import keras from sklearn.model_selection import train_test_split (train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data() train_scaled = train_input / 255.0 train_scaled, val_scaled, train_target, val_target = train_test_split(train_scaled, train_target, test_size = 0.2, random_state = 4..

[DL] 07-2 심층 신경망

2개의 층 아래와 같이 텐서플로의 케라스 패키지를 임포트하고 패션 MNIST를 불러온다. from tensorflow import keras (train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data() 이미지의 픽셀값을 0~255 범위에서 0~1 사이로 변환하고, 28 * 28 크기의 2차원 배열을 784 크기의 1차원 배열로 펼친다. 마지막으로 사이킷런의 train_test_split() 함수로 훈련 세트와 검증 세트로 나눈다. from sklearn.model_selection import train_test_split train_scaled = train_input / 255.0 tra..

[DL] 07-1 인공 신경망

패션 MNIST 아래와 같이 텐서플로의 케라스 패키지를 임포트하고 패션 MNIST를 불러온다. from tensorflow import keras (train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data() keras.datasets.fashion_mnist 모듈 아래 load_data()함수는 훈련 데이터와 테스트 데이터를 나누어 반환하며 이 데이터는 각각 입력과 타깃의 쌍으로 구성되어 있다. 전달받은 데이터를 출력하면 아래와 같은 결과를 확인할 수 있다. print(train_input.shape, train_target.shape) 훈련 데이터는 60,000개의 이미지로 이루어져 있으며..

[ML] 06-3 주성분 분석

차원 축소는 원본 데이터의 특성을 적은 수의 새로운 특성으로 변환하는 비지도 학습의 한 종류이다. 차원 축소는 저장 공간을 줄이고 시각화하기 쉽고 다른 알고리즘의 성능을 높일 수 있다는 장점을 갖는다. 주성분 분석은 차원 축소 알고리즘의 하나로 데이터에서 가장 분산이 큰 방향을 찾는 방법이다. 이러한 방향을 주성분이라고 부르며 주성분 분석은 원본 데이터를 주성분에 투영하여 새로운 특성을 만들 수 있다. 일반적으로 주성분은 원본 데이터에 있는 특성 개수보다 작다. PCA 클래스 PCA 클래스를 통해 과일 사진 데이터에서 주성분 분석을 수행해보자. !wget https://bit.ly/fruits_300_data -O fruits_300.npy import numpy as np fruits = np.load..

[ML] 06-2 k-평균

k-평균 알고리즘 소개 k-평균 알고리즘은 처음에 랜덤하게 클러스터 중심을 정하고 클러스터를 만든다. 그다음 클러스터의 중심을 이동하고 다시 클러스터를 만드는 식으로 반복해서 최적의 클러스터를 구성하는 알고리즘이다. 클러스터 중심은 k-평균 알고리즘이 만든 클러스터에 속한 샘플의 특성 평균값이다. 센트로이드라고 부르며 가장 가까운 클러스터 중심을 샘플의 또 다른 특성으로 사용하거나 새로운 샘플에 대한 예측으로 활용할 수 있다. 알고리즘의 작동 방식은 아래와 같다. 무작위로 k개의 클러스터 중심을 정한다. 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정한다. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다. 클러스터 중심에 변화가 없을 때까지 2번으로 돌아가 반복한다..

[ML] 06-1 군집 알고리즘

비지도 학습은 머신러닝의 한 종류로 훈련 데이터에 타깃이 없다. 타깃이 없기 때문에 외부의 도움 없이 스스로 유용한 무언가를 학습해야 한다. 대표적인 비지도 학습 작업으로 군집, 차원 축소 등이 있다. 과일 사진 데이터 준비 파일을 읽기 위해 코랩으로 다운로드한다. !wget https://bit.ly/fruits_300_data -O fruits_300_data.npy import numpy as np import matplotlib.pyplot as plt 넘파이에서 npy파일을 로드하기 위해 load()메서드에 파일 이름을 전달한다. fruits = np.load('fruits_300_data.npy') print(fruits.shape) 이 배열의 첫 번째 차원(300)은 샘플의 개수, 두 번째 ..

[ML] 05-3 트리의 앙상블

앙상블 학습은 더 좋은 예측 결과를 만들기 위해 여러 개의 모델을 훈련하는 머신러닝 알고리즘이다. 이는 정형 데이터를 다루는 데 가장 뛰어난 성과를 내는 알고리즘이다. 랜덤 포레스트 랜덤 포레스트는 대표적인 결정 트리 기반의 앙상블 학습 방법이다. 부트스트랩 샘플을 사용하고 랜덤하게 일부 특성을 선택하여 트리를 만드는 특징을 지닌다. 부트스트랩이란 데이터 세트에서 중복을 허용하여 데이터를 샘플링하는 방식을 말한다. 랜덤 포레스트는 위 특징들로 인해 훈련 세트에 과대적합되는 것을 막아주고 검증 세트와 테스트 세트에서 안정적인 성능을 얻을 수 있다. RandomForestClassifier 클래스를 활용한 와인 분류 문제에 적용해보자. 첫째로 와인 데이터셋을 판다스로 불러오고 훈련 세트와 테스트 세트로 분리..

[ML] 05-2 교차 검증과 그리드 서치

검증 세트 검증 세트 : 하이퍼파라미터 튜닝을 위해 모델을 평가할 때, 테스트 세트를 사용하지 않기 위해 훈련 세트에서 다시 떼어 낸 데이터 세트 훈련 세트에서 모델을 훈련하고 검증 세트로 모델을 평가한다. 테스트하고 싶은 매개변수를 바꿔가며 가장 좋은 모델을 고르고 매개변수를 사용해 훈련, 검증 세트를 합쳐 훈련 데이터에서 모델을 다시 훈련한다. import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') class 열을 타깃으로 사용하고 나머지는 특성 배열에 저장한다. data = wine[['alcohol','sugar','pH']].to_numpy() target = wine['class'].to_numpy() 훈련 세트와 테스트..

[ML] 05-1 결정 트리

로지스틱 회귀로 와인 분류하기 import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') 데이터셋을 판다스 데이터프레임으로 제대로 읽어 들였는지 head() 메서드를 통해 처음 5개의 샘플을 확인한다. wine.head() 판다스 데이터프레임의 info()메서드는 데이터프레임의 각 열의 데이터 타입과 누락된 데이터 확인에 유용하다. wine.info() describe()메서드는 열에 대한 간략한 통계를 출력한다. 이 메서드는 평균, 표준편차, 최소, 최대 등의 값을 보여준다. wine.describe() 위 통계를 통해 알코올 도수와 당도, pH값의 스케일이 다르다는 것을 확인할 수 있다. 표준화를 하기 전, 판다스 데이터 프레임을 넘..

[ML] 04-2 확률적 경사하강법

SGDClassifier import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv_data') Species 열을 제외한 나머지 5개는 입력 데이터로, Species 열은 타깃 데이터로 사용한다. fish_input = fish[['Weight', 'Length', 'Diagonal','Height','Width']].to_numpy() fish_target = fish['Species'].to_numpy() 훈련 세트와 테스트 세트로 나눈다. from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_tes..