Scikit-learn은 파이썬에서 머신러닝을 위한 대표적인 라이브러리로, 다양한 머신러닝 알고리즘을 간편하게 활용할 수 있도록 지원합니다.

1. 특징

  • 간편한 사용: 직관적인 API 제공으로 쉽게 학습 및 활용 가능
  • 다양한 알고리즘 지원: 지도학습, 비지도학습, 군집화, 차원 축소 등 포함
  • 사전 처리 기능 제공: 데이터 정규화, 결측치 처리, 특성 공학 등
  • 모델 평가 및 튜닝 기능: 교차 검증, 하이퍼파라미터 튜닝 지원
  • 확장성: NumPy, Pandas, SciPy 등과 호환

2. 주요 기능

① 지도 학습 (Supervised Learning)

  • 회귀 (Regression)
    • LinearRegression (선형 회귀)
    • Ridge, Lasso (정규화 회귀)
    • SVR (서포트 벡터 회귀)
    • RandomForestRegressor, GradientBoostingRegressor
  • 분류 (Classification)
    • LogisticRegression (로지스틱 회귀)
    • SVC (서포트 벡터 머신)
    • RandomForestClassifier, GradientBoostingClassifier
    • KNeighborsClassifier (KNN)
    • MLPClassifier (다층 퍼셉트론 신경망)

② 비지도 학습 (Unsupervised Learning)

  • 클러스터링 (Clustering)
    • KMeans
    • DBSCAN
    • AgglomerativeClustering (계층적 군집화)
  • 차원 축소 (Dimensionality Reduction)
    • PCA (주성분 분석)
    • t-SNE, UMAP (비선형 차원 축소)

③ 데이터 전처리 (Preprocessing)

  • StandardScaler (표준화)
  • MinMaxScaler (정규화)
  • OneHotEncoder (범주형 데이터 변환)
  • SimpleImputer (결측치 처리)

④ 모델 평가 및 선택 (Model Selection & Evaluation)

  • train_test_split() (데이터 분할)
  • cross_val_score() (교차 검증)
  • GridSearchCV, RandomizedSearchCV (하이퍼파라미터 최적화)
  • classification_report, confusion_matrix (분류 평가)
  • mean_squared_error, r2_score (회귀 평가)

3. 예제 코드

1) 데이터 로드 및 분할

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# 데이터 로드
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)

2) 모델 학습 및 평가

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 모델 생성 및 학습
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 예측 및 평가
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")

3) 하이퍼파라미터 튜닝

from sklearn.model_selection import GridSearchCV

# 하이퍼파라미터 설정
param_grid = {'n_estimators': [50, 100, 150], 'max_depth': [3, 5, 7]}
grid_search = GridSearchCV(RandomForestClassifier(random_state=42), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# 최적의 하이퍼파라미터 출력
print(grid_search.best_params_)

4. 활용 분야

  • 금융: 신용 평가, 사기 탐지
  • 의료: 질병 진단, 유전자 분석
  • 마케팅: 고객 분류, 추천 시스템
  • 제조: 품질 검사, 예측 유지보수

5. 주요 모듈 소개

sklearn- 데이터 전처리

데이터 가공과 변환을 위한 도구 제공

모듈설명상세예시
preprocessing다양한 데이터 전처리변환, 정규화, 스케일링 등– StandardScaler – MinMaxScaler – OneHotEncoder
feature_selection특징(feature) 선택중요한 특성을 선택– SelectKBest – f_classif
feature_extraction특징(feature) 추출벡터화 (텍스트, 이미지)– TfidfVectorizer – PatchExtractor

sklearn – 다양한 모델

다양한 머신 러닝 알고리즘 제공

모듈설명예시
linear_model다양한 선형 모델선형 회귀, Ridge, Lasso, 로지스틱 회귀 등
svm서포트 벡터 머신 알고리즘SVC, SVR 등
neighbors최근접 이웃 알고리즘kNN 등
naive_bayes나이브 베이즈 알고리즘가우시안 NB, 다항 분포 NB 등
tree의사 결정 트리 알고리즘의사결정나무 분류, 회귀 등
cluster클러스터링 알고리즘kMeans, 계층형 클러스터링, DBSCAN 등
decomposition차원 축소 관련 알고리즘PCA, NMF, Truncated SVD 등
ensemble앙상블 알고리즘VotingClassifier, Random Forest, AdaBoost, GradientBoost 등

sklearn – 모델 평가와 최적화

모델 성능 평가및 하이퍼파라미터 최적화 기법

모듈설명예시
model_selection교차검증, 학습/테스트 분리, 파라미터 최적화train_test_split, GridSearch 등
metrics다양한 성능 측정 방법Accuracy, Precision, Recall, ROC-AUC, RMSE 등

scikit-learn – 유틸리티

데이터 파이프라인, 예제 데이터셋 등

모듈설명예시
sklearn.pipeline여러 기능을 묶어서 실행
sklearn.datasets내장된 다양한 예제 데이터셋붓꽃, 당뇨병, 와인 데이터셋 등

scikit-learn은 머신러닝을 쉽게 시작할 수 있는 강력한 라이브러리입니다.

zerg96

Recent Posts

재택근무 종말이 온다? AI 감시 소프트웨어가 사무실을 부활시키는 진짜 이유

AI 감시 소프트웨어가 재택근무 시대를 끝내고 있다. 직원의 키스트로크·화면·표정까지 추적하는 기술의 실체와, 한국 직장인이 알아야…

2시간 ago

정보보안기사 실기 합격을 가르는 10문제, 로그 분석부터 RSA 계산까지 풀이 포함

정보보안기사 실기는 개념을 아는 것보다 로그를 읽고, 규칙을 쓰고, 계산하는 힘에서 점수가 갈립니다. 이번 글은…

3시간 ago

호르무즈에서 2주간 선박 24척 피격, 원유 수송은 전쟁 전보다 43% 줄었다

호르무즈 해협 뉴스는 이제 '또 공격이 있었다'보다 '얼마나 늘었나'를 봐야 합니다. 이투데이가 FT와 영국해사무역기구(UKMTO) 등을…

3시간 ago

추석 연휴에 뚫린 은행들, 해외 법인 보안망까지 다시 짜는 이유

이번 추석 연휴, 은행들은 쉬지 못했습니다. 연휴 기간 금융권에서 대규모 개인정보 유출 사고가 터졌기 때문입니다.…

6시간 ago

서울 집값은 11% 올랐는데 거래는 17% 줄었다, 토허제 1년의 역설

"집 못 팔게 막으면 값이 내려가겠지." 서울 전역이 토지거래허가구역으로 묶이던 1년 전, 이런 기대가 있었습니다.…

6시간 ago

코스피 5연속 급락 뒤 2% 반등, 외국인·기관이 받쳤고 코스닥은 제자리

다섯 거래일 연속 밀린 코스피가 오늘 아침 크게 반등했습니다. 오전 9시 12분 기준 6,165.02로 전…

6시간 ago