사이킷런(Scikit-learn)이란?
사이킷런은 NumPy, SciPy 및 matplotlib 기반으로 제작된 오픈 소스 머신러닝 라이브러리이다. 간편한 사용법과 다양한 기능으로 인해 데이터 분석과 머신러닝 분야에서 널리 사용된다. 사이킷런은 분류(Classification), 회귀(Regression), 군집화(Clustering), 차원 축소(Dimensionality Reduction), 모델 선택(Model Selection), 전처리(Preprocessing) 등 다양한 분석방법들을 지원한다.
다음은 사이킷런에서 제공하는 주요 모듈들이다. 더 자세한 사항에 대해 알고싶다면 아래 링크를 참고해보자.
예제 데이터
모듈명 | 설명 |
sklearn.datasets | 사이킷런에서 제공되는 예제 데이터셋 |
다음은 사이킷런에 내장된 데이터셋중 iris 데이터을 불러오는 예시코드이다.
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
Python
복사
데이터 전처리
모듈명 | 설명 |
sklearn.preprocessing | 인코딩, 정규화, 스케일링등 이전에 배웠던 다양한 데이터 전처리 기법들을 제공한다. |
sklearn.feature_selection | 모델의 성능을 향상시키기 위해 불필요하거나 중복되는 특성을 제거함으로써 모델의 복잡도를 줄이고, 과적합(Overfitting)을 방지 |
sklearn.feature_extraction | 텍스트 데이터나 이미지 데이터와 같은 raw data들을 벡터화된 피쳐로 변환해준다. CountVectorizer, Tf-IdfVectorizer, DictVectorizer등이 있다. |
sklearn.decomposition | 고차원 데이터셋이나 해석력을 위해 차원축소를 진행할 때 사용한다. PCA, tSVD등을 지원한다. |
전처리 모듈들은 일반적으로 전처리할 데이터셋을 fit() 메서드의 입력값으로 받아 전처리를 진행한 후, transform() 을 통해 전처리할 데이터셋을 입력하면, 전처리한 결과를 출력해준다. 예시코드는 다음과 같다.
from sklearn.preprocessing import StandardScaler
X = [[0, 15],
[1, -10]]
# scale data according to computed scaling values
StandardScaler().fit(X).transform(X)
Python
복사
머신러닝 알고리즘
모듈명 | 설명 |
sklearn.linear_model | 선형회귀, 릿지,라쏘, 로지스틱 회귀등 다양한 선형모델들을 제공한다. |
sklearn.neighbors | knn과 같이 다양한 최근접 이웃모델들을 제공한다. |
sklearn.svm | 서포트벡터머신 모델을 제공한다. |
sklearn.tree | 의사결정트리 모델(DecisionTreeClassifier, DecisionTreeRegressor)을 제공한다. |
sklearn.cluster | KMeans, DBSCAN등 다양한 군집 모델들을 제공한다. |
sklearn.ensemble | 배깅, 부스팅, 보팅과 같은 다양한 앙상블 모델을 제공한다. |
먼저 모델을 불러온 후 fit() 메서드를 통해 모델을 학습한다. fit() 메서드는 일반적으로 학습 데이터 X와 정답인 타켓 데이터 y를 입력으로 받는다.
X 와 y 는 numpy array 또는 array 타입을 입력으로 받는다. 다음은 예시코드이다.
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(random_state=0)
X = [[ 1, 2, 3], # 2 samples, 3 features
[11, 12, 13]]
y = [0, 1] # classes of each sample
clf.fit(X, y)
Python
복사
fit() 메서드를 통해 모델이 학습되었다면 predict() 를 통해 예측을 진행한다. 새로운 데이터셋을 predict() 의 입력으로 받으면 예측값이 출력된다. 예시 코드는 다음과 같다.
clf.predict(X) # predict classes of the training data
clf.predict([[4, 5, 6], [14, 15, 16]]) # predict classes of new data
Python
복사
데이터셋 분리, 검증 및 파라미터 튜닝
모듈명 | 설명 |
sklearn.model_selection | 학습 데이터 / 테스트 데이터 분리, 교차 검증 및 그리드 서치등을 통한 파라미터 튜닝을 할 수 있도록 지원해준다. train_test_split, cross_validate등이 있다. |
sklearn.metrics | Accuracy, Precision, Recall, ROC-AUC, RMSE 등 다양한 회귀,분류 모델들의 평가지표를 계산해준다. |
예시 코드는 다음과 같다.
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_validate
X, y = make_regression(n_samples=1000, random_state=0)
lr = LinearRegression()
result = cross_validate(lr, X, y) # defaults to 5-fold CV
result['test_score'] # r_squared score is high because dataset is easy
Python
복사