본문 바로가기
  • 조금 느려도, 꾸준히
반응형

분류 전체보기59

핸즈온 머신러닝(5) - 선형 회귀와 경사 하강법 2 이전 포스트에서 경사 하강법 알고리즘을 간단히 구현해 보았다. 코드를 다시 가져와보면 eta = 0.1 n_iterations = 1000 m = 100 theta = np.random.randn(2,1) for iteration in range(n_iterations): gradients = 2/m * X_b.T.dot(X_b.dot(theta) - y) theta = theta - eta * gradients 여기서 eta 변수, 즉 학습률 $\eta$ 을 나타내는 변수의 값이 0.1로 설정되어 있는데, 학습률 $\eta$ 를 바꿔보면 어떻게 될까? 임의로 다른 학습률을 사용하여 경사 하강법의 스텝 처음 10개를 그래프로 그려보면 다음과 같다. theta_path_bgd = [] def plot_gr.. 2020. 1. 23.
핸즈온 머신러닝(5) - 선형 회귀와 경사 하강법 1 이번 장에서는 신경망(neural network)을 이해하고 구축, 훈련시키는데 필수적인 기반 지식이 되는 알고리즘의 작동 원리에 대해서 다루기로 한다. 구현체가 어떻게 작동하는지 잘 이해하면 적절한 모델, 올바른 훈련 알고리즘, 작업에 맞는 좋은 하이퍼파라미터를 빠르게 찾을 수 있으며, 디버깅이나 에러를 효율적으로 분석하는 데 도움이 된다. # 선형 회귀 일반적으로 선형 모델은 입력 특성의 가중치 합과 편향(bias)라는 상수를 더해 예측을 만든다. (사진 참고) 사진에 나와있는 것 처럼 선형 모델의 방정식은 벡터 형태로 간단하게 쓸 수 있다. 모델을 훈련시킨다는 것은 모델이 훈련 세트에 가장 잘 맞도록 모델 파라미터를 설정하는 것이다. 이를 위해서는 먼저 모델의 훈련 데이터에 대한 성능을 측정해야 하.. 2020. 1. 23.
Google CoLab 사용하기 - 머신러닝 프로젝트 * 도움 : 안경잡이개발자 티스토리 블로그 Google CoLab으로 머신러닝 공부 편하게 시작하기 ※ Google Colaboratory란? ※ Google Colaboratory를 이용하게 되면, 기존에 주피터 노트북(Jupyter Notebook) 환경에서 인공지능을 공부하던 사람들은 이제 더욱 편하게 공부할 수 있게 됩니다. 자신의 컴퓨터.. ndb796.tistory.com # Google Colaboratory 핸즈온 머신러닝에 대한 포스트를 진행하면서 연습문제를 해결하는 도중, 필자의 Jupyter 환경에서 머신러닝 분류기를 학습시키고, 정확도를 추출하는데 상당히 오랜 시간이 걸리고 cpu 자원만을 이용해 진행하는데에 차질이 있었기 때문에 대안으로 Google 의 Colaboratory 를 .. 2020. 1. 22.
핸즈온 머신러닝(4) - 연습문제 1 # MNIST 데이터셋으로 분류기를 만들어 테스트 세트에서 97% 정확도를 달성하라 97%의 정확도를 달성하기 위해서는 먼저 적절한 분류기 모델을 설정해야 한다. MNIST 데이터셋은 숫자 손글씨를 분류하는 것이며, 각각의 데이터들은 유사성을 띈 군집 하에 동일한 레이블을 가지므로, 이번 연습문제 풀이에서는 K-최근접 이웃 알고리즘 (KNeighborsClassifier)을 사용하도록 한다. 프로젝트를 처음부터 다시 시작하므로 데이터셋을 내려받도록 한다. from sklearn.datasets import fetch_openml import numpy as np mnist = fetch_openml('mnist_784', version=1) X, y = mnist["data"], mnist["target.. 2020. 1. 22.
핸즈온 머신러닝(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.
반응형