AI 30

[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..

[ML] 04-1 로지스틱 회귀

럭키백의 확률럭키백에 생선이 7개 들어있고, 럭키백에 들어간 생선의 크기, 무게 등이 주어졌을 때 7개의 생선에 대한 확률을 출력해아한다. 데이터 준비import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv_data') fish.head() 판다스의 unique()함수를 사용하여 Species 열에서의 고유한 값들을 출력할 수 있다.print(pd.unique(fish['Species'])) species를 제외한 나머지 5개의 열을 입력 데이터로 사용한다.fish_input = fish[['Weight','Length','Diagonal','Height','Width']].to_numpy() print(fish_input[:5]) species는..

[ML] 03-3 특성 공학과 규제

다중 회귀 다중 회귀(multiple regression) : 여러 개의 특성을 사용한 선형 회귀 특성 공학(feature engineering) : 기존 특성을 사용해 새로운 특성을 뽑아내는 작업 데이터 준비 판다스의 read_csv()함수에 주소를 넣은 후 to_numpy()메서드를 사용해 넘파이 배열로 변경한다. import pandas as pd df = pd.read_csv('https://bit.ly/perch_csv_data') perch_full = df.to_numpy() print(perch_full) 타깃 데이터는 이전과 동일한 방식으로 준비한다. import numpy as np perch_weight = np.array([5.9, 32.0, 40.0, 51.5, 70.0, 100..

[ML] 03-2 선형 회귀

k-최근접 이웃의 한계 k-최근접 이웃의 한계를 파악하기 위해 데이터와 모델을 준비한다. import numpy as np perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27.5, 27.5, 27.5, 28.0, 28.7, 30.0, 32.8, 34.5, 35.0, 36.5, 36.0, 37.0, 37.0, 39.0, 39.0, 39.0, 40.0, 40.0, 40.0, 40.0..

[ML] 03-1 k-최근접 이웃 회귀

k-최근접 이웃 회귀 지도 학습 알고리즘은 분류와 회귀로 나뉜다. k-최근접 이웃 회귀는 k-최근접 이웃 분류와 동일하게 예측하려는 샘플에 가장 가까운 샘플 k개를 선택한다. 이 때 둘의 차이점은 회귀 알고리즘은 이웃한 샘플의 타깃이 어떠한 클래스가 아니라 임의의 수치라는 점이다. 데이터 준비 import numpy as np perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27...

[ML] 02-2 데이터 전처리

넘파이로 데이터 준비하기 1. 데이터 준비 bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0] bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0,..