본문 바로가기

SMALL

머신러닝 공부

(16)
사이킷런 프레임워크(fit, predict) 와 K-Fold 사이킷런의 개발적인 부분에 대해서 공부를 해보고자 합니다. 사이킷런 기반 프레임워크 - Estimator와 fit(), predict() fit과 predict는 사이킷런의 핵심 메소드입니다. 특히 사이킷런의 지도학습인 경우에 분류와 회귀로 구성이 되어 있는데 이 분류 알고리즘을 구현한 다양한 클래스들이 있습니다. 또한 회귀 알고리즘을 구현한 다양한 클래스들도 여러 있습니다. 사진에서 보듯이 이런 분류,회귀 구현 클래스들을 모두 Estimator라고 부릅니다. 어떻게 보면 최상위 부모 클래스라고 보면 될 것 같습니다. 그리고 분류면 Classifier라는 이름이 주어지고 회귀는 Regressor라고 이름이 주어집니다. 이런 분류든 회귀든 모든 학습은 fit()로, 예측은 predict()로 진행이됩니다...
Scikit-Learn (사이킷런) 우리가 파이썬 기반으로 정형 데이터를 구현한다고하면 대부분 사이킷런 라이브러리 패키지를 씁니다. 사이킷런이 이렇게 가장 인기가 많은이유는 다음과 같습니다. 파이썬 기반의 다른 머신러닝 패키지도 사이킷런 스타일의 API를 지향할 정도로 쉽고 가장 파이썬스러운 API를 제공합니다. 머신러닝을 위한 다양한 알고리즘과 개발을 위한 편리한 프레임워크와 API를 제공합니다. 오랜 기간 실전 환경에서 검증됐으며, 매우 많은 환경에서 사용되는 성숙한 라이브러리입니다. 앞서 본 Numpy와 Scipy 기반 위에서 구축된 라이브러리입니다. 사이킷런을 이용하여 붓꽃(Iris) 데이터 분류(Classification) 머신러닝계의 Hello World같은 붓꽃 데이터 분류를 하겠습니다. 붓꽃 데이터 예측 모델을 만들건데, 붓..
Pandas (판다스) - Index 판다스를 구성하는 3가지 큰 요소라고 하면 DataFrame, Series, Index입니다. 판다스 Index 개요 판다스의 Index 객체는 RDBMS의 PK(Primary Key)와 유사하게 DataFrame, Series의 레코드를 고유하게 식별하는 객체입니다. (하지만 판다스 Index는 별도의 컬럼값이 아닙니다.) DataFrame/Series 객체는 Index 객체를 포함하긴 하지만, Series 객체에 연산 함수를 적용할 때 Index는 연산에서 제외됩니다. Index는 오직 식별용으로만 사용됩니다. DataFrame, Series에서 Index 객체만 추출하기 위해서는 DataFrame.index 또는 Series.index 속성을 통해 가능합니다. 판다스 Index는 반드시 숫자형 값이..
Pandas(판다스) - DataFrame DataFrame과 리스트, 딕셔너리, 넘파이 ndarray 상호 변환 ndarray하고 DataFrame하고의 가장 큰 차이는 바로 column명이 있는지 없는지입니다. 변환 형태 설명 리스트(list)를 DataFrame으로 변환 df_list1 = pd.DataFrame(list, columns=col_name1) 와 같이 DataFrame생성 인자로 리스트 객체와 매핑되는 컬럼명들을 입력 ndarray를 DataFrame으로 변환 df_array2 = pd.DataFrame(array2, columns = col_name2) 와 같이 DataFrame 생성 인자로 ndarray와 매핑되는 컬럼명들을 입력 딕셔너리(dict)를 DataFrame으로 변환 dict = {'col' : [1:11], '..
Pandas(판다스) - value_counts method value_counts() 동일한 개별 데이터 값이 몇 건 있는지 정보를 제공합니다. 즉, 개별 데이터값의 분포도를 제공합니다. value_counts()는 과거에는 Series객체에서만 호출 될 수 있었지만 현재에는 DataFrame에서도 호출가능합니다. value_counts() 메소드를 사용할 때는 Null 값을 무시하고 결과값을 내놓기 쉽습니다. value_counts()는 Null값을 포함하여 개별 데이터 값의 건수를 계산할지 여부를 dropna 인자로 판단 합니다. dropna는 디폴트로 True값을 가지며 이 경우에는 Null 값을 무시하고 개별 데이터 값의 건수를 계산하게됩니다. titanic_df에서 Pclass에 해당 series안에 value들이 count가 되어 나오게 됩니다. 위와..
판다스(pandas) - 기본 API (2) head()와 tail() head()는 DataFrame의 맨 앞부터 일부 데이터만 추출합니다. tail()은 DataFrame의 맨 뒤부터 일부 데이터만 추출합니다. 원래는 DataFrame의 기본 플롯 형태가 나오는 것이 jupyter에서만 위와 같은 형태로 나오는 것이고 실제 print를 해서 dataframe을 보면 출력값이 다르게 나옵니다. 따라서 dataframe을 가시성있게 보기위해서는 직접적으로 dataframe을 df와 같이 지정해서 쓰거나 display함수를 이용해서 나타내야합니다. DataFrame 출력 시 option 중에서는 tail,header를 기준으로 dataframe을 얼마나 추출하는지에 대한 옵션도 있고, set_option일 경우에는 display함수를 이용하여서 최대..
판다스(Pandas)와 기본 API (1) 판다스는 파이썬에서 데이터 처리를 위해 존재하는 가장 인기있는 라이브러리입니다. 일반적으로 정형 데이터는 대부분 2차원 데이터입니다. 즉, Row(행),Column(열)로 구성되어 있습니다. (판다스는 정형데이터이기 때문에 3차원은 호환하지 않습니다.) 행과 열의 2차원 데이터가 인기있는 이유는 사람이 가장 이해하기 쉬운 데이터 구조이면서도 효과적으로 데이터를 담을 수 있는 구조입니다. 판다스는 이처럼 행과 열로 이뤄진 2차원 데이터를 효율적으로 가공/처리할 수 있는 다양하고 훌륭한 기능을 제공합니다. (판다스에서는 시계열성이 많다는 것입니다. 판다스는 시계열성 구성하는 것을 되게 쉽게 구현하게 되어있습니다. 그 외에도 집계성, 시각화와 효율적인 연계, 빠른 데이터처리 등과 같은 장점들을 numpy를 기..
numpy ndarray의 sort & argsort 배열의 정렬 넘파이 sort() 유형 우선 sort는 이름에서 유추할 수 있듯이 넘파이 ndarray의 값을 정렬하는 방식입니다. 이 방식은 2개로 나눌 수 있습니다. np.sort(ndarray) : 인자로 들어온 원 행렬은 그대로 유지한 채 원 행렬의 정렬된 행렬을 반환 ndarray.sort() : 원 행렬 자체를 정렬한 형태로 변환하면서 반환 값은 None ※ np.sort() , ndarray.sort() 모두 기본적으로 오름차순으로 행렬 내 원소를 정렬합니다. 만약, 내림차순으로 정렬하기 위해선 [::-1]을 적용시킵니다. ex) np.sort()[::-1] 2차원 배열에서 axis 기반의 sort() 다음그림을 보자면 A라는 2차원 배열을 가지는 ndarray가 있는데 이를 axis를 기준으..