이번 글은 내용 공유의 목적이 아닌 scikit-learn 라이브러리에 대해 언제든 내용을 확인할 수 있게 만든 노트 목적의 글입니다.
다른 분들도 필요하다면 언제든 참고하셔도 좋습니다.
scikit-learn이란?
scikit-learn은 Python을 위한 오픈 소스 머신러닝 라이브러리입니다.
다양한 분류, 회귀, 클러스터링 알고리즘뿐만 아니라 전처리, 모델 선택 및 평가를 위한 도구들을 제공합니다.
단순하면서도 강력한 API 덕분에 데이터 과학자와 엔지니어들이 손쉽게 머신러닝 모델을 구현하고 실험할 수 있습니다.
역사 및 배경
scikit-learn은 2007년 David Cournapeau가 Google Summer of Code 프로젝트로 시작했습니다.
이후 여러 개발자들의 기여를 통해 발전해왔으며, 현재는 전 세계에서 널리 사용되고 있는 머신러닝 라이브러리입니다.
설치 방법
scikit-learn은 pip을 통해 간단하게 설치할 수 있습니다.
다음 명령어를 통해 설치할 수 있습니다.
pip install scikit-learn
# Anaconda 배포판을 사용하는 경우
conda install scikit-learn
의존성 패키지 : scikit-learn은 NumPy, SciPy, joblib, threadpoolctl 등 몇 가지 핵심 라이브러리에 의존합니다.
이를 통해 고성능 수치 연산과 병렬 처리가 가능합니다.
주요 기능
데이터 전처리
- StandardScaler : 데이터를 평균 0, 표준편차 1로 스케일링합니다.
- MinMaxScaler : 데이터를 최소값 0, 최대값 1로 변환합니다.
- Imputer(SimpleImputer) : 결측값을 특정 값으로 대체합니다.
데이터 분할
- train_test_split : 데이터를 학습용(train)과 테스트용(test)으로 분할합니다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
특징 선택
- SelectKBest: 상위 k개의 특징을 선택합니다.
- RFE (Recursive Feature Elimination): 반복적으로 특징을 제거하여 최적의 특징 집합을 선택합니다.
모델 선택 및 평가
- 교차 검증 (cross-validation): 데이터를 여러 번 나누어 모델을 평가하는 방법입니다.
- GridSearchCV: 하이퍼파라미터의 모든 조합을 시도하여 최적의 파라미터를 찾습니다.
- RandomizedSearchCV: 하이퍼파라미터를 무작위로 조합하여 최적의 파라미터를 찾습니다.
주요 알고리즘
분류(Classification)
- SVM (Support Vector Machine): 데이터 포인트들을 분류하는 초평면을 찾는 알고리즘입니다.
- KNN (K-Nearest Neighbors): 가장 가까운 k개의 이웃 데이터를 참고하여 분류합니다.
- Decision Tree: 의사결정 트리를 통해 데이터를 분류합니다.
- Random Forest: 여러 개의 의사결정 트리를 사용하여 분류합니다.
- Logistic Regression: 로지스틱 회귀를 통해 분류합니다.
회귀(Regression)
- Linear Regression: 선형 회귀를 통해 값을 예측합니다.
- Ridge: L2 규제를 사용한 선형 회귀입니다.
- Lasso: L1 규제를 사용한 선형 회귀입니다.
- SVR (Support Vector Regression): 서포트 벡터 머신을 회귀에 적용합니다.
- Decision Tree: 의사결정 트리를 통해 값을 예측합니다.
클러스터링(Clustering)
- KMeans: 데이터를 k개의 클러스터로 나눕니다.
- DBSCAN: 밀도 기반 클러스터링 알고리즘입니다.
- Hierarchical Clustering: 계층적 클러스터링을 수행합니다.
차원 축소(Dimensionality Reduction)
- PCA (Principal Component Analysis): 주성분 분석을 통해 차원을 축소합니다.
- t-SNE (t-Distributed Stochastic Neighbor Embedding): 데이터의 고차원 구조를 저차원으로 시각화합니다.
사용 예제
이번 목차에서는 간단한 예제를 통해 scikit-learn의 사용 방법을 설명하려고 합니다.
예시로 iris 데이터셋을 사용하여 분류 모델을 구축하고 평가하는 방법을 설명하겠습니다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
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 = SVC()
model.fit(X_train, y_train)
# 예측 및 평가
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")
고급 기능
파이프라인(Pipeline)
파이프라인을 사용하면 여러 변환기와 추정기를 연결하여 반복적인 작업을 간소화할 수 있습니다.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipeline = Pipeline([
('scaler', StandardScaler()),
('svc', SVC())
])
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
참고 자료 및 학습 리소스
공식 문서
scikit-learn의 공식 문서는 매우 잘 정리되어 있으며, 다양한 예제와 튜토리얼을 포함하고 있습니다. scikit-learn 공식 문서
튜토리얼 및 가이드
- scikit-learn 튜토리얼: 공식 튜토리얼 페이지로, 기본 개념부터 고급 주제까지 다룹니다.
- Kaggle: 다양한 머신러닝 문제와 해결 방법을 학습할 수 있는 플랫폼입니다.
- DataCamp: scikit-learn을 포함한 다양한 데이터 과학 강좌를 제공합니다.
감사합니다!
'프로그래밍 언어 > Python' 카테고리의 다른 글
[파이썬] 파이썬에서는 어떤 연산자들을 사용할까? (0) | 2024.12.02 |
---|---|
[파이썬 개념 정리 18] scipy 라이브러리 (0) | 2024.08.02 |
[파이썬 개념 정리 16] Pandas의 DataFrame 마스터하기 6️⃣ (그룹별로 분석하기) (0) | 2024.08.01 |
[파이썬 개념 정리 15] Pandas의 DataFrame 마스터하기 5️⃣ (데이터 합치기) (0) | 2024.08.01 |
[파이썬 개념 정리 14] Pandas의 DataFrame 마스터하기 4️⃣ (날짜와 시간 데이터 다루기) (0) | 2024.07.31 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!