반응형 Artificial Intelligence29 핸즈온 머신러닝(4) - 분류 2 # 다중 분류 다중 분류기를 구현하는 기법으로는 랜덤 포레스트 분류기나 나이브 베이즈(naive Bayes)분류기 같은 알고리즘으로 여러 개의 클래스를 직접 처리하거나, 이진 분류기를 여러 개 사용해 다중 클래스를 분류하는 방법이 있다. 이진 분류기를 여러 개 사용하여 다중 클래스를 분류할 때에는 각 분류기의 결정 점수 중에서 가장 높은 것을 클래스로 선택하게 되는데, 이를 일대다(one-versus-all, OvA)전략 이라고 한다. 혹은 숫자를 분류할 때 0과 1 구별, 0과 2 구별, 1과 2 구별 등과 같이 각 클래스의 조합마다 이진 분류기를 훈련시키는 방법이 있는데, 이를 일대일(one-versus-one, OvO)전략이라고 한다. 이때 클래스가 N 개라면 분류기는 N(N-1)/2 개가 필요하다.. 2020. 1. 21. 핸즈온 머신러닝(4) - 분류 1 # MNIST 이번 포스트에서는 너무나도 유명한 MNIST 손글씨 데이터셋을 사용하여 분류 시스템에 대해 다뤄보려고 한다. 사이킷런에서 제공하는 여러 헬퍼 함수를 사용해 잘 알려진 데이터셋을 내려받을 수 있다. 다음은 MNIST 데이터셋을 내려받는 코드이다. from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784', version=1) 데이터셋에서 이미지 하나를 확인해보기 위해 샘플의 특성 벡터를 추출하여 28*28 배열로 크기를 바꾸고 matplotlib의 imshow() 함수를 사용해 그릴 수 있다. %matplotlib inline import matplotlib import matplotlib.pyplot as plt s.. 2020. 1. 21. 핸즈온 머신러닝(3) - 머신러닝 프로젝트 6[마무리] # 모델 선택과 훈련 지금까지 문제를 정의한 후 데이터를 읽어 들이고 탐색하였으며, 훈련 세트와 테스트 세트로 나누고 머신러닝 알고리즘에 주입할 데이터를 자동으로 정제하고 준비하기 위해 변환 파이프라인을 작성하였다. 이번 포스트에서는 머신러닝 모델을 선택하고 훈련시키는 과정에 대해 다룰 것이다. # 훈련 세트에서 훈련하고 평가하기 이전 포스트에서 했던 것처럼 선형 회귀 모델(Linear Regression)을 훈련시켜 본다. from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() lin_reg.fit(housing_prepared, housing_labels) # LinearRegression(copy_X=True, f.. 2020. 1. 21. 핸즈온 머신러닝(3) - 머신러닝 프로젝트 5 # 텍스트와 범주형 특성 다루기 앞서 다룬 ocean_proximity 가 텍스트 데이터타입이라 중간값을 계산하지 않고 남겨 두었다. housing_cat = housing['ocean_proximity'] housing_cat.head(10) 머신러닝 알고리즘이 다루기 쉽게 ocean_proximity의 카테고리를 텍스트에서 숫자로 바꿔줄 필요가 있다. 이를 위해 각 카테고리를 다른 정숫값으로 매핑해주는 pandas의 factorize() 메서드를 사용한다. housing_cat_encoded, housing_categories = housing_cat.factorize() housing_cat_encoded[:10] housing_categories # array([0, 0, 1, 2, 0, 2, 0.. 2020. 1. 21. 핸즈온 머신러닝(3) - 사이킷런 설계철학[참고] #사이킷런 설계 철학 - 사이킷런의 API 는 잘 설계되어 있으며 몇가지 설계 원칙에 따라 만들어져 있다. - 자세한 내용은 API design for machine learning software: experiences from the scikit-learn project 에서 확인 할 수 있다. 1. 일관성 - 추정기(estimator): 데이터셋을 기반으로 일련의 모델 파라미터들을 추정하는 객체를 추정기라고 한다. (imputer 객체도 추정기이다) 추정 자체는 fit() 메서드에 의해 수행되고 하나의 매개변수로 하나의 데이터셋만 전달한다(지도 학습 알고리즘에서는 매개변수가 두 개로, 두 번째 데이터셋은 레이블을 담고 있다). 추정 과정에서 필요한 다른 매개변수들은 모두 하이퍼파라미터로 간주되고( .. 2020. 1. 21. 핸즈온 머신러닝(3) - 머신러닝 프로젝트 4 # 머신러닝 알고리즘을 위한 데이터 준비 - 머신러닝 알고리즘을 위해 데이터를 준비할 때, 수동으로 작업하는 대신 함수를 만들어 자동화 해야 하는 이유가 있다. 1) 어떤 데이터셋에 대해서도 데이터 변환을 손쉽게 반복할 수 있음 2) 향후 프로젝트에 사용할 수 있는 변환 라이브러리를 점진적으로 구축할 수 있음 3) 실제 시스템에서 알고리즘에 새 데이터를 주입하기 전에 변환시키는 데 이 함수를 사용할 수 있음 4) 여러가지 데이터 변환을 쉽게 시도해볼 수 있고 어떤 조합이 가장 좋은지 확인하는데 편리 - 예측 변수와 타깃 값에 같은 변형을 적용하지 않기 위해서 예측 변수와 레이블을 분리한다. drop() 함수는 데이터 복사본을 만들며, strat_train_set에는 영향을 주지 않는다. housing =.. 2020. 1. 21. 이전 1 2 3 4 5 다음 반응형