빅데이터 모델링을 개발해야한다. 진짜 이제는 사업을 위해 시작해야했다. 학교 도서관에서 이 책을 바로 집어들었다. 이제는 시간이 많이 없다. 시작해야된다!
1장. 머신러닝과 머신러닝 애플리케이션의 기초 개념, 책에서 사용할 환경
2장. 지도학습 (실전에서 널리 이용하는 머신러닝 알고리즘, 각각의 장단점)
3장. 비지도 학습 (실전에서 널리 이용하는 머신러닝 알고리즘, 각각의 장단점)
4장. 머신러닝에서 데이터를 표현하는 방법이 왜 중요한지, 주의할 점이나 그런 것들
5장. 모델 평가와 매개변수 튜닝을 위한 고급 방법, 교차 검증, 그리드 서치
6장. 모델을 연결하고 워크플로를 캡슐화하는 파이프라인
7장. 텍스트데이터에 적용하는 방법, 텍스트에 특화된 처리 기법
8장. 개괄적인 정리를 하고, 좀 더 어려운 주제에 대한 참고 자료
머신러닝이 나오기 전에 모든 시스템들은 if-else을 활용한 규칙기반 시스템이었다. 이렇다보니 이미지 인식과 관련된 문제들을 해결할 수 없었다. 머신러닝은 이러한 이미지 인식 문제 같은 복잡한 문제들을 해결해준다.
머신러닝은 이미 알려진 사례들을 바탕으로 일반화된 모델을 만들어 의사결정프로세스를 자동화한다. 이 방식을 지도방식
이라고 한다.
일반화된 모델을 만들 때, 입력-출력 데이터를 계속 제공하고, 알고리즘은 주어진 입력에서 원하는 출력을 만드는 방법을 찾는다.
편지봉투에 손으로 쓴 우편번호 숫자판별 -> 제대로 된 숫자
의료 영상 이미지에 기반한 종양 판단 -> Yes / No
블로그 글의 주제 구분
고객들을 취향이 비슷한 그룹으로 묶기
비정상적인 웹사이트 접근 탐지
지도학습 vs 비지도학습 둘다 컴퓨터가 인식할 수 있는 형태로 입력 데이터를 준비하는 것이 중요하다
데이터는 엑셀테이블처럼 생각하면 편리
우리가 판별해야할 개개 데이터 (개개의 이메일, 고객, 거래) 는 행
데이터를 구성하는 각 속성(고객의 나이, 거래 가격, 지역
하나의 인스턴스를 샘플, 데이터 포인트라고 부른다. 좋은 입력 데이터를 만들어내는 특성 추출 및 특성 공학이라는 주제는 추후에!
(devstu에서 어떤 데이터들을 수집해야하는지도 나온다!)
머신러닝 프로세스에서 가장 중요한 것은 사용할 데이터에 대한 이해, 그 데이터가 해결해야할 문제와 어떤 관련이 있는지!
데이터를 통해 문제 해결을 해야한다. 데이터셋으로 무엇을 하는지 반드시 이해해야한다.
파이썬이다. 라이브러리 만세
Numpy 와 Scipy 를 활용한다. 그래프를 그리려면 matplotlibㅡ, 대화식을 그리려면 IPython과 주피터 노트북을
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS_HTML"></script>
<!-- MathJax configuration -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true,
processEnvironments: true
},
// Center justify equations in code and markdown cells. Elsewhere
// we use CSS to left justify single line equations in code cells.
displayAlign: 'center',
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 0}},
linebreaks: { automatic: true }
}
});
</script>
<!-- End of mathjax configuration --></head>
import numpy as np
x = np.array([[1,2,3], [4,5,6]])
print('x:')
print("{}".format(x))
</div>
<div class="prompt"></div>
Numpy오 과학 계산을 하기 위해서 반드시 필요한 패키지이다. 다차원 배열을 위한 기능, 선형 대수 연산, 푸리에 변환과 같은 고수준 함수
scikit-learn에서 Numpy 배열은 기본 데이터 구조. Numpy 배열 형태의 데이터를 입력으로 받는다. 그래서 우리가 사용할 데이터는 모두 Numpy 배열로 변환되어야 합니다. 그래서 우리가 사용할 데이터는 모두 Numpy qoduffh qusghksehldjdi gka
Numpy 핵심 기능은 다차원(n차원 배열)인 ndarray 클래스입니다.
from scipy import sparse
eye = np.eye(4)
print("Numpy 배열 : \n{}".format(eye))
</div>
<div class="prompt"></div>
sparse_matrix = sparse.csr_matrix(eye)
print("SciPy의 CSR 행렬 : \n{}".format(sparse_matrix))
</div>
<div class="prompt"></div>
과학 계산용 함수들을 모아둔 파이썬 패키지이다. Scipy
고성능 선형 대수, 함수 최적화, 신호 처리, 특수한 수학함수, 통계 분포 등 많은 기능을 제공.
sparse 는 희소행렬
을 제공한다.
data = np.ones(4)
row_indices = np.arange(4)
col_indices = np.arange(4)
eye_coo = sparse.coo_matrix((data, (row_indices, col_indices)))
print("C00 표현:\n{}".format(eye_coo))
</div>
<div class="prompt"></div>
메모리 부족으로 인해서 C00 표현을 해낼 수 있어야 한다!
? 왜 eye랑 data 다르게 처리를 하고 있는가?
%matplotlib inline
</div>
import matplotlib.pyplot as plt
# -10부터 10까지 간격이 100개인 배열을 생성한다
x = np.linspace(-10, 10, 100)
y = np.sin(x)
plt.plot(x, y, marker="x")
</div>
<div class="prompt output_prompt">Out[23]:</div>
<div class="prompt"></div>
Pandas는 데이터베이스랑 같은 것!
테이블을 수정하고 조작하는 것과 완전 같은 기능을 수행한다!
SQL처럼 테이블에 쿼리나 조인을 수행할 수 있다!
딕셔너리를 활용해서 Dataframe
을 만드는 방법 (책 35P)
import pandas as pd
data = {
"name" : ["John", "Anna", "Peter", "Linda"],
"location" : ["New York", "Paris", "Berlin", "London"],
"Age" : [24, 13, 53, 33]
}
data_pandas = pd.DataFrame(data)
display(data_pandas)
</div>
<div class="prompt"></div>
display(data_pandas[data_pandas.Age > 30])
</div>
<div class="prompt"></div>
import sys
print("Python 버전: {}".format(sys.version))
import pandas as pd
print("pandas 버전: {}".format(pd.version))
import matplotlib
print("matplotlib 버전: {}".format(matplotlib.version))
import numpy as np
print("NumPy 버전: {}".format(np.version))
import scipy as sp
print("SciPy 버전: {}".format(sp.version))
import IPython
print("IPython 버전: {}".format(IPython.version))
import sklearn
print("scikit-learn 버전: {}".format(sklearn.version))
</div>
<div class="prompt"></div>
</div>