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

전체 글59

핸즈온 머신러닝(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.
핸즈온 머신러닝(3) - 머신러닝 프로젝트 3 # 데이터 이해를 위한 탐색과 시각화 -이번 프로젝트에서는 훈련 세트에 대해서만 탐색, 훈련 세트가 매우 클 경우 탐색을 위한 세트를 별도로 샘플링 할 수도 있다. 예제에 나온 훈련 세트는 크기가 작으므로 훈련 세트 전체를 사용함. - 먼저 훈련세트의 손상 방지를 위해 복사본을 만들어두도록 한다. housing = strat_train_set.copy() -지리 정보(위도, 경도)가 있으므로 모든 구역을 산점도로 만들어 데이터를 시각화해 본다. ax = housing.plot(kind="scatter", x="longitude", y="latitude") ax.set(xlabel='longitude', ylabel='latitude') - 위 산점도만 보아서는 특별한 패턴을 딱히 찾을 수 없어 보인다. .. 2020. 1. 20.
핸즈온 머신러닝(3) - 머신러닝 프로젝트 2 Tutorial : 구역의 데이터들을 기반으로 중간 주택 가격을 예측하기. #데이터 다운로드: housing.csv 를 압축한 housing.tgz 파일 - 온라인에서 tgz 파일을 내려받고 csv 로 자동 압축 해제하는 스크립트 * 다운로드 url에 접근하기 위해 urllib, tgz파일 처리를 위해 tarfile 라이브러리를 이용했음 * 필자는 파일을 저장할 디렉토리를 기본 디렉토리 + datasets + housing으로 설정 import os import tarfile from six.moves import urllib DOWNLOAD_ROOT='https://raw.githubusercontent.com/ageron/handson-ml/master/' HOUSING_PATH = os.path.j.. 2020. 1. 20.
핸즈온 머신러닝(3) - 머신러닝 프로젝트 1 머신러닝 프로젝트의 주요 단계 1. 큰 그림 보기 2. 데이터 수집하기 3. 데이터로부터 insight 를 얻기 위해 탐색, 시각화하기 4. 머신러닝 알고리즘을 위한 데이터 준비하기 5. 모델을 선택하고 훈련시키기 6. 모델을 상세하게 조정하기 7. 솔루션 제시 8. 시스템 론칭, 모니터링하고 유지 보수하기 1. 실제 데이터로 작업하기 -데이터를 구하기 좋은 곳 1) 유명한 공개 데이터 저장소 - UC 얼바인 머신러닝 저장소 - Kaggle 데이터셋 - 아마존 AWS 데이터셋 2) 메타 포털(공개 데이터 저장소 나열) - dataportlas - opendatamonitor - quandl 3) 기타 - 위키백과 머신러닝 데이터셋 목록 - Quora.com 질문 - 데이터셋 서브레딧 #문제 정의: 머신러.. 2020. 1. 20.
핸즈온 머신러닝(2)- 머신러닝의 주요 도전 과제 요약 [나쁜 데이터의 사례] 1. 충분하지 않은 양의 훈련 데이터 - 2001 microsoft Michele Banko, Eric Brill: 머신러닝 알고리즘들에 충분한 데이터가 주어지면 복잡한 자연어 중의성 해소 문제를 거의 비슷하게 잘 처리한다는 것을 보임. '시간과 돈을 알고리즘 개발에 쓰는 것과 말뭉치(corpus) 개발에 쓰는 것 사이의 트레이드오프에 대해서 다시 생각해봐야 함' - 2009 Peter Norvig 'The Unreasonable Effectiveness of Data': 복잡한 문제에서 알고리즘보다 데이터가 더 중요함. but 작거나 중간 규모의 데이터셋이 여전히 매우 흔하고 훈련 데이터를 추가로 모으는 것이 쉽지 않으므로 알고리즘을 무시하지는 말아야 함. 2. 대표성 없는 훈련.. 2020. 1. 20.
핸즈온 머신러닝(1) - 머신러닝 시스템의 종류 1. 학습하는 동안의 감독 형태나 정보량에 따라 - 지도학습: 알고리즘에 주입하는 훈련 데이터에 label 이라는 원하는 답이 포함됨 예시: k-Nearest Neighbors, Linear Regression, Logistic Regression, SVM(support vector machines), Decision Tree, Random Forests, Neural networks - 비지도학습: 훈련 데이터에 레이블이 없음. 시스템이 스스로 학습해야 함 예시: 군집) k-Means, HCA(hierarchical cluster analysis), 기댓값 최대화 시각화와 차원축소) PCA(principal component analysis), Kernel PCA, LLE(locally-linear e.. 2020. 1. 20.
Numpy 모듈을 활용한 행렬의 대각화 [시행착오(1)] 이번 글에서는 Numpy모듈을 이용하여 행렬의 고윳값을 구한 후 그로 파생된 닮은 행렬을 이용하여 원래 행렬을 다시 구해보는 과정과, 그 과정에서 필자가 저지른 실수에 대해 다뤄보려 한다. import numpy as np pycharm 가상환경에서 numpy모듈을 불러온다. 불러온 numpy모듈로 임의의 3*3 행렬 x를 만들어 보자 x = np.array([[1, 2, 3], [2, 3, 4], [2, 3, 1]]) numpy에서 세부적인 선형대수적 연산을 위해 제공하는 linalg모듈 (linear algebra: 선형대수) 을 이용하여 간단하게 고윳값과 고유벡터를 구할 수 있다. xw, xv = np.linalg.eig(x) 이때 xw는 행렬 x의 고윳값, xv 는 행렬 x의 고유벡터를 열로 갖는.. 2019. 11. 26.
[컴맹의 눈높이]URL?? 기초부터 API적 관점까지 (1) ※이 글은 순수 '컴맹'의 눈높이에서 쓰여졌습니다. 따라서 상대적으로 전문성 보다는 친숙함, 흥미에 무게를 두었습니다. https://chana.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F ㄴ 요것이 뭘까? 지금 보고있는 이 웹사이트의 도메인 주소를 나타내는 URL 이다. (2편에서 말하겠지만 RPC 식 URL 이다. 지금은 몰라도 무방하다) 인터넷 브라우저를 열고, 어떤 사이트에 접속하든, 심지어 그것이 아주 꽁~꽁 숨겨진 것일지라도, 모든 웹사이트는 고유의 URL 이 존재한다. URL은 그 웹사이트의 주소와도 같다. "음 당연한거 아냐? " 그렇다. 필자도 URL을 입력할때 당연히 '주소니까 주소창에 치는것이군.' 이라고 .. 2019. 11. 22.
반응형