캐글은 세계적인 ML 기반 분석 대회이다. 그 중에서도 타이타닉 생존자 예측은 처음 입문하는 사람들이 하는 튜토리얼이다. 캐글 사이트에서 Titanic을 검색하거나, https://www.kaggle.com/c/titanic에 들어가면 Data 카테고리에서 학습 데이터(train.csv)와 테스트 데이터(test.csv)를 다운 받을 수 있다. 다운받기 전에 로그인을 해야하니 회원가입을 먼저하고 데이터를 다운받으면 된다. 오른쪽에는 해당 데이터에 관한 간략한 정보들이 나와있는 것을 확인할 수 있다. 다운받은 파일은 파이썬 코드 파일( 주피터 노트북일 경우, 해당 .ipynb파일)이 있는 디렉토리에 csv 파일을 저장한다. 이후에 다른 파일들도 train.csv 파일들이 많이 존재하기 때문에, 구별할 수 ..
scikit-learn 검색 결과
스태킹 스태킹(Stacking)이라는 기법은 전체적인 면에서는 앙상블 러닝과 같은 원리이지만, 기존의 앙상블 러닝과 조금 다른 면을 가지고 있다. 스태킹은 복수 개의 기반 학습기들이 학습 - 예측을 진행하고, 예측 데이터들을 학습 데이터로 입력 받는 메타 모델(최종 학습기라고 생각하면 이해하기 쉽다.)이 한번 더 학습 - 예측하는 방식이다. 아주 많이 사용되는 기법은 아니지만, 성능을 최대한으로 향상시키기 위해서 쓰이는 기법이다. 교차 검증 기반의 스태킹 일반 스태킹의 경우, 최종 메타 모델이 학습하는 데이터가 학습 데이터가 아닌, 테스트 데이터를 예측한 값들을 학습하기 때문에, 과적합의 문제가 발생한다. 과적합을 완화시키기 위해서 스태킹 기법과 교차검증 기법을 동시에 적용한다. CV 교차 검증에서는 여..
이전 포스팅에서 정밀도와 재현율에 대해서 알아보았다. 또한, 각 경우마다 재현율이나, 정밀도의 상대적 중요성이 다르다는 것 또한 알 수 있었다. 하지만, 정밀도와 재현율만으로 완벽하게 머신러닝 분류 알고리즘을 평가할 수 있을까? 이전 포스팅의 마지막 부분에서 다루었듯이, 정밀도 혹은 재현율 중 하나를 극단적으로 증가시키는 경우, 정밀도-재현율 트레이드오프로 인해 다른 하나의 수치가 급격하게 감소하게 된다. 따라서, 이들 중 하나만 가지고 성능을 측정하는 것은 성능의 전체를 대변할 수 없다. 이런 문제점을 해결하기 위해서 나온 개념이 F1 Score이다. F1 Score F1 Score는 정밀도와 재현율을 결합한 지표이다. 이 지표는 정밀도와 재현율이 어느 한쪽으로 치우치지 않을 떄 상대적으로 높은 값을 ..
머신러닝에서 학습한 데이터들을 가지고 학습한 모델의 성능을 학습 데이터로 사용한다면 당연히 성능은 100% 정확하게 나올 수 있다. 하지만, 실제로는 이미 학습한 데이터를 가지고 하는 것이 아니라, 처음 접한 데이터를 예측을 해야 하기 때문에, 그 성능을 측정하기 위해서는 학습 당시에 사용하지 않은 데이터를 가지고 성능 테스트를 해야 한다. 하지만, 가지고 있는 데이터는 한정적이기 때문에, 가지고 있는 데이터 안에서 학습에 이용할 데이터와 성능 테스트에 이용할 데이터를 분리해야 한다. 이 과정을 수행하는 것이 sklearn.model_selection의 train_test_split이다. 실제로 거의 모든 머신러닝 과정에서 위 함수를 사용하게 된다. train_test_split() 함수에서는 2가지 파..
Scikit-learn 가장 많이 쓰이는 파이썬 머신러닝 라이브러리 특징 쉽고 파이썬스러운 API 제공 다양한 알고리즘과 편리한 프레임워크 API 오랜시간에 걸쳐 여러 사용자들에게 검증 다향한 환경에서 사용가능하다. ※ Anaconda를 설치하면 기본으로 설치되어 있다. 사이킷 런의 버전을 확인하는 방법은 import sklearn print(sklearn.__verison__) 이다. 데이터 다루기 처음 머신러닝을 배울 때에는 데이터를 어디서 가져와야 할지 조차 모를수도 있다. 또한, 데이터를 외부 사이트에서 가져오더라도 정제되지 않은 것들이 많아 입문자가 바로 머신러닝 실습을 하기에는 어려움이 있다. 이런 이유에서 scikit-learn 패키지는 몇 가지의 데이터셋을 내장하고 있다. 여기에서는 붓꽃(..
파이프라인(pipeline), 특성 스케일링(feature scaling), fit, transform, fit_transform() 메서드의 차이 데이터 변환기, Pipeline 만들기 계층적 샘플링 (Stratified Sampling) 데이터 셋이 충분히 크다면 일반 훈련 데이터 셋을 무작위로 샘플링 하여도 큰 문제가 발생하지 않는다. 하지만 그렇지 않으면 데�� dsbook.tistory.com 위에서 전처리한 데이터들로 학습시켜보자. 모델 선택과 평가(교차검증) 1. LinearRegression (선형 회귀) from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() #준비된 데이터와 레이블로 모델 학습 lin_..
데이터 변환기, Pipeline 만들기 계층적 샘플링 (Stratified Sampling) 데이터 셋이 충분히 크다면 일반 훈련 데이터 셋을 무작위로 샘플링 하여도 큰 문제가 발생하지 않는다. 하지만 그렇지 않으면 데이터 편향이 생길 가능성이 크다. 예를들어 여론 설문조사 기관 dsbook.tistory.com 계층적 샘플링에서 다루었던 housing 데이터들을 가지고 예를 들어보자. 현재 이 데이터들은 StratifiedShuffleSplit 객체에 의해 훈련 세트와 테스트 세트로 나뉘어진 상태이며, 훈련 세트는 다시 housing으로 초기화하였고, 훈련 세트의 레이블은 housing_label로 초기화하였다. 이 데이터들을 전처리하기 위한 파이프라인을 만들어보자. housing = strat_tra..
API Reference — scikit-learn 0.23.1 documentation scikit-learn.org Scikit-learn API - sklearn.model_selection 훈련세트와 테스트 세트를 나눌 때, 교차검증을 위한 검증 세트를 나눌 때, 하이퍼 파라미터 튜닝을 최적화 하기 위한 용도로 사용되는 클래스와 함수들을 모아둔 API Splitter Classes model_selection.GroupKFold([n_splits]) model_selection.GroupShuffleSplit([...]) model_selection.KFold([n_splits, shuffle, ...]) model_selection.LeaveOneGroupOut model_selection.Le..
최근댓글