History
home
BDA 연혁
home

- Machine Learning 기초 알고리즘

사이킷런(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를 입력으로 받는다.
Xy 는 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
복사