
데이터 전처리(Preprocessing)은 머신러닝 알고리즘만큼 중요합니다. 사실 더 중요하다고 할 수 있습니다. 알고리즘이 아무리 뛰어나도 Garbage In, Garbage Out은 불변의 법칙이기 때문입니다. 무작정 머신러닝 알고리즘을 이용하기 전에, 데이터에 대해 미리 처리해야 할 기본 사항이 있습니다. 첫 번째로, 결손값(NaN, Null)은 허용되지 않습니다. 어떤 피처에 Null 개수가 얼마 없다면 피처의 평균값 등으로 Null을 간단히 대체해도 되지만, Null이 대부분이라면 오히려 해당 피처를 드랍하는 것이 좋습니다. Null의 개수가 애매모호하다면 해당 피처의 중요도 등을 고려하여 더 정밀한 대체값을 선정해야 합니다. 두 번째로, 사이킷런 알고리즘 모델은 문자열을 입력값으로 허용하지 않..

사이킷런의 model_selection 모듈은 학습/테스트 데이터 세트를 분리하거나 교차 검증 분할 및 평가, Estimator의 하이퍼 파라미터를 튜닝하는 다양한 API를 제공합니다. model_selection이 제공하는 API를 알아봅시다. 이전에도 설명했듯이, train_test_split() 메서드는 학습/테스트 데이터를 분리합니다. shuffle 파라미터가 있는데, 이는 데이터를 분리하기 전에 데이터를 미리 섞을지에 대한 파라미터입니다. 디폴트는 True이며, 데이터를 분산시켜 효율적인 분리를 위해 사용됩니다. iris 데이터 세트의 테스트 데이터는 총 45개입니다. 이러한 적은 수의 테스트 데이터로 모델의 예측 성능을 판단하는 것은 적절하지 않습니다. 학습 데이터의 양을 보장하는 것도 중요하..

사이킷런은 API 일관성이 매우 뛰어난 패키지입니다. 모델 학습을 위해 fit(), 예측을 위해 predict() 메서드를 제공합니다. 지도학습의 대표적인 두 축인 분류와 회귀의 다양한 알고리즘을 구현한 모든 사이킷런 클래스는 두 메서드만 가지고 학습 및 예측을 수행합니다. 분류 알고리즘을 구현한 클래스는 Classifier, 회귀 알고리즘을 구현한 클래스는 Regressor로 지칭합니다. 두 클래스를 합쳐서 Estimator 클래스라고 합니다. cross_val_score()와 같은 evaluation 함수 및 GridSearchCV와 같은 하이퍼 파라미터 튜닝 클래스의 경우 Estimator를 인자로 받아 API 내부에서 fit()과 predict()를 호출하여 평가 및 튜닝을 진행합니다. 비지도 학..

사이킷런(scikit-learn)은 파이썬 머신러닝 라이브러리입니다. 사이킷런을 이용하여 붓꽃의 품종을 분류(classification)하는 머신러닝 모델을 만들어봅시다. 붓꽃 데이터 세트는 꽃잎의 길이, 너비, 꽃받침의 길이, 너비 등의 피처를 갖습니다. 사이킷런 패키지 모듈명은 sklearn으로 시작합니다. 예를들어, sklearn.datasets 내의 모듈은 사이킷런에서 자체적으로 제공하는 데이터 세트 생성 모듈의 집합입니다. sklearn.tree 내의 모듈은 트리 기반 머신러닝 알고리즘을 구현한 클래스의 집합입니다. sklearn.model_selection은 학습/검증/예측 데이터로 데이터를 나누거나 최적 하이퍼 파라미터로 평가하기 위한 다양한 모듈의 집합입니다. 붓꽃 데이터 세트, 분류 알고..

판다스의 정렬, Aggregation 함수, GroupBy 메서드에 대해 알아봅시다. DataFrame, Series를 정렬하기 위해 sort_values() 메서드를 이용합니다. 핵심 파라미터로는 by, ascending, inplace가 있으며, by를 통해 정렬의 기준이 되는 칼럼을 지정합니다.ascending은 디폴트로 True(오름차순)입니다. DataFrame에서 min(), max(), sum(), count()와 같은 aggregation 메서드를 적용할 수 있습니다. DataFrame에서 이러한 메서드를 바로 호출할 경우 모든 칼럼에 대해 해당 연산을 수행합니다. 특히 count() 연산은 Null인 데이터를 연산에 포함시키지 않습니다. 특정 칼럼에만 연산을 적용시키기 위해서는 DataF..

판다스는 DataFrame과 Series끼리 데이터 셀렉션 기능이 달라지는 부분이 있어 주의가 필요합니다. 넘파이의 경우 [] 연산자 내 단일 값 추출, 슬라이싱, 팬시 인덱싱, 불린 인덱싱을 통해 데이터를 추출합니다. 판다스는 iloc[], loc[] 연산자가 이와 같은 작업을 수행합니다. 먼저 판다스의 [] 연산자가 넘파이의 [] 연산자와 어떤 차이가 있는지를 알아보겠습니다. DataFrame의 []연산자 안에 들어갈 수 있는 것은 칼럼명 문자(또는 리스트 객체), 또는 인덱스로 변환 가능한 표현식입니다. 인덱스로 변환 가능한 표현식이라는 의미는 추후에 다룰텐데, 현재 수준에서는 DataFrame의 [] 연산자는 칼럼만 지정할 수 있는 '칼럼 지정 연산자'로 이해하는 게 혼돈을 막는 가장 좋은 방법입..

Pandas는 파이썬에서 데이터 처리를 위해 사용되는 인기있는 라이브러리 입니다. 판다스는 2차원 데이터 처리를 위한 많은 기능을 제공합니다. 판다스는 많은 부분이 넘파이 기반으로 작성됐습니다. 판다스의 핵심 개체는 DataFrame이며, 중요 객체로 Index와 Series가 있습니다. Index는 개별 데이터를 고유하게 식별하는 Key 값이며, Series와 DataFrame은 Index를 키값으로 가집니다. Series는 칼럼이 하나 뿐인 DataFrame이라고 생각하면 됩니다. 판다스는 다양한 포맷의 파일을 DataFrame으로 로딩할 수 있는 편리한 API를 제공합니다. 대표적으로 csv 파일이 있는데, 이는 칼럼을 콤마로 구분하는 파일 포맷입니다. 만약 다른 지정자로 필드를 구분한다면, rea..

Numpy는 다차원 행렬을 다루기 위한 파이썬 라이브러리입니다. 머신러닝 및 딥러닝 코드를 분석하거나 작성하려면 어느 정도는 반드시 잘 숙지하고 있어야 합니다. 본 책에선 Numpy의 수많은 기능 중 기초이자 핵심적인 부분만을 다룹니다. np.array() : 파이썬 리스트 같은 다양한 인자를 ndarray 타입으로 변환합니다.ndarray.shape, nidm 변수로 크기와 차원을 알 수 있습니다. shape의 반환값은 튜플입니다.ndarray 내의 모든 원소의 데이터 타입은 같습니다. 예를들어, int와 float를 같이 담을 수 없습니다. ndarray는 tolist() 메서드를 통해 파이썬 리스트로 캐스팅할 수 있습니다. 만약 서로 다른 데이터 타입이 들어있는 리스트를 ndarray 객체로..