scikit-learn 은 머신러닝에서 사용되는 패키지입니다

 

사이킷런(Scikit-learn)은 파이썬으로 작성된 머신러닝 라이브러리로, 데이터 마이닝과 데이터 분석을 위한 다양한 도구들을 제공합니다. Scikit-learn은 다양한 알고리즘과 도구를 제공하여 데이터 전처리, 모델 구축, 평가, 선택 등의 과정을 효율적으로 수행할 수 있게 해줍니다.

 

주요 특징 및 장점

 

광범위한 알고리즘

   - 분류(Classification): SVM, k-NN, 랜덤 포레스트, 로지스틱 회귀, 나이브 베이즈 등 다양한 분류 알고리즘을 제공합니다.

   - 회귀(Regression): 선형 회귀, 리지 회귀, 라쏘 회귀, 결정 트리 등 다양한 회귀 알고리즘을 지원합니다.

   - 클러스터링(Clustering): K-평균, DBSCAN, 계층적 클러스터링 등 다양한 클러스터링 기법을 포함하고 있습니다.

   - 차원 축소(Dimensionality Reduction): PCA, LDA, t-SNE 등 차원 축소 기법을 통해 고차원 데이터를 저차원으로 변환할 수 있습니다.

 

사용하기 쉬운 API

   - 일관된 API 디자인으로 모든 알고리즘과 도구를 동일한 방식으로 사용할 수 있습니다.

   - fit, predict, transform, fit_transform 등의 메소드를 통해 학습, 예측, 변환을 쉽게 수행할 수 있습니다.

 

효율적인 데이터 전처리

   - 스케일링(Scaling): StandardScaler, MinMaxScaler 등을 통해 데이터 스케일링을 쉽게 수행할 수 있습니다.

   - 누락값 처리(Imputation): SimpleImputer를 사용하여 누락된 값을 쉽게 처리할 수 있습니다.

   - 카테고리형 데이터 처리: OneHotEncoder, LabelEncoder 등을 통해 범주형 데이터를 처리할 수 있습니다.

 

모델 평가 및 선택

   - 교차 검증(Cross-Validation): cross_val_score, GridSearchCV, RandomizedSearchCV 등을 통해 모델의 성능을 평가하고 최적의 하이퍼파라미터를 찾을 수 있습니다.

   - 평가 지표(Metrics): 분류, 회귀, 클러스터링 등에 대한 다양한 평가 지표(accuracy, precision, recall, f1-score, roc_auc, mean_squared_error, silhouette_score 등)를 제공합니다.

 

파이프라인(Pipeline)

 - 여러 전처리 및 모델링 단계를 하나의 객체로 결합하여 일관성 있는 워크플로우를 만들 수 있습니다. 이를 통해 코드의 재사용성과 가독성을 높일 수 있습니다.

- 아래 코드는 여러 전처리 과정을 하나의 파이프라인(Pipeline)으로 만들어 전처리 과정을 한번에 수행하도록 하는 코드입니다.

from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer

num_pipeline = Pipeline([
        ("imputer", SimpleImputer(strategy="median")),
        ("scaler", StandardScaler())
    ])
X_train = num_pipeline.fit_transform(train_data)
X_train

 

or

cat_pipeline = Pipeline([
        ("ordinal_encoder", OrdinalEncoder()),    
        ("imputer", SimpleImputer(strategy="most_frequent")),
        ("cat_encoder", OneHotEncoder(sparse_output=False)),
    ])
X_train = cat_pipeline.fit_transform(train_data)
X_train

파이프라인 합치기

- 파이프라인을 여러개 만들어 하나의 파이프라인으로 합칠수도 있습니다.

- 아래 코드는 여러 전처리 과정이 각각 담긴 2개의 파이프라인(Pipeline)을 하나의 파이프라인으로 만드는 코드입니다.

from sklearn.compose import ColumnTransformer

num_attribs = ["Age", "SibSp", "Parch", "Fare"]
cat_attribs = ["Pclass", "Sex", "Embarked"]

preprocess_pipeline = ColumnTransformer([
        ("num", num_pipeline, num_attribs),
        ("cat", cat_pipeline, cat_attribs),
    ])

확장성

 - Scikit-learn은 다른 데이터 과학 라이브러리와 잘 통합됩니다.

 -예를 들어, Pandas, NumPy, SciPy와 함께 사용하여 데이터 처리와 분석을 효율적으로 수행할 수 있습니다.

 - Joblib을 사용하여 병렬 처리를 지원하므로 대용량 데이터 처리에 효율적입니다.

 

설치 및 기본 사용 예제

pip install scikit-learn

 

기본 사용 예제 코드

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 데이터 로드
iris = load_iris()
X, y = iris.data, iris.target

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 데이터 스케일링
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 평가
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

 

사용된 주요 모듈

 

sklearn.datasets

   - 예제 데이터셋을 제공하고, 외부 데이터셋을 로드하는 데 유용합니다.

   - 예: load_iris, load_digits, fetch_20newsgroups, make_classification

 

sklearn.model_selection

   - 데이터 분할, 교차 검증, 하이퍼파라미터 튜닝 등을 위한 도구를 제공합니다.

   - 예: train_test_split, cross_val_score, GridSearchCV, RandomizedSearchCV

 

sklearn.preprocessing

   - 데이터 전처리를 위한 도구를 제공합니다.

   - 예: StandardScaler, MinMaxScaler, LabelEncoder, OneHotEncoder, PolynomialFeatures

 

sklearn.linear_model

   - 선형 모델을 포함합니다.

   - 예: LinearRegression, LogisticRegression, Ridge, Lasso

 

sklearn.ensemble

   - 앙상블 방법을 포함합니다.

   - 예: RandomForestClassifier, GradientBoostingClassifier, AdaBoostClassifier

 

sklearn.metrics

   - 모델의 성능을 평가하기 위한 다양한 지표를 제공합니다.

   - 예: accuracy_score, precision_score, recall_score, f1_score, confusion_matrix

 

sklearn.pipeline

   - 여러 전처리 및 모델링 단계를 결합할 수 있는 파이프라인을 제공합니다.

   - 예: Pipeline

 

sklearn.decomposition

   - 차원 축소 기법을 포함합니다.

   - 예: PCA, NMF, TruncatedSVD

 

sklearn.cluster

   - 클러스터링 알고리즘을 포함합니다.

   - 예: KMeans, DBSCAN, AgglomerativeClustering

 

sklearn.svm

    - 서포트 벡터 머신 알고리즘을 포함합니다.

    - 예: SVC, SVR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ytw_developer