모듈 | 설명 |
---|---|
sklearn.datasets | 내장된 예제 데이터 세트 |
sklearn.preprocessing | 다양한 데이터 전처리 기능 제공 (변환, 정규화, 스케일링 등) |
sklearn.feature_selection | 특징(feature)를 선택할 수 있는 기능 제공 |
sklearn.feature_extraction | 특징(feature) 추출에 사용 |
sklearn.decomposition | 차원 축소 관련 알고리즘 지원 (PCA, NMF, Truncated SVD 등) |
sklearn.model_selection | 교차 검증을 위해 데이터를 학습/테스트용으로 분리, 최적 파라미터를 추출하는 API 제공 (GridSearch 등) |
sklearn.metrics | 분류, 회귀, 클러스터링, Pairwise에 대한 다양한 성능 측정 방법 제공 (Accuracy, Precision, Recall, ROC-AUC, RMSE 등) |
sklearn.pipeline | 특징 처리 등의 변환과 ML 알고리즘 학습, 예측 등을 묶어서 실행할 수 있는 유틸리티 제공 |
sklearn.linear_model | 선형 회귀, 릿지(Ridge), 라쏘(Lasso), 로지스틱 회귀 등 회귀 관련 알고리즘과 SGD(Stochastic Gradient Descent) 알고리즘 제공 |
sklearn.svm | 서포트 벡터 머신 알고리즘 제공 |
sklearn.neighbors | 최근접 이웃 알고리즘 제공 (k-NN 등) |
sklearn.naive_bayes | 나이브 베이즈 알고리즘 제공 (가우시안 NB, 다항 분포 NB 등) |
sklearn.tree | 의사 결정 트리 알고리즘 제공 |
sklearn.ensemble | 앙상블 알고리즘 제공 (Random Forest, AdaBoost, GradientBoost 등) |
sklearn.cluster | 비지도 클러스터링 알고리즘 제공 (k-Means, 계층형 클러스터링, DBSCAN 등) |
estimator
APIestimator
클래스를 임포트해서 모델의 클래스 선택fit()
메서드를 호출해 모델을 데이터에 적합predict()
메서드를 사용해 알려지지 않은 데이터에 대한 레이블 예측transform()
이나 predict()
메서드를 사용해 데이터의 속성을 변환하거나 추론 import numpy as np
import matplotlib.pyplot as plt
plt.style.use(['seaborn-whitegrid'])
# 데이터 생성
x = 10 * np.random.rand(50)
y = 2 * x + np.random.rand(50)
plt.scatter(x, y)
# 2차 함수 모양으로 그래프 그리기
from sklearn.linear_model import LinearRegression
model = LinearRegression(fit_intercept=True) # 하이퍼 파라미터 선택
model.get_params() # 모델의 하이퍼 파라미터들
'''
{'copy_X': True,
'fit_intercept': True,
'n_jobs': None,
'normalize': 'deprecated',
'positive': False}
'''
# ↓ 모델을 보니, 다양한 파라미터들이 있다. 기본적으로 디폴트 값들이 들어가 있다.
# 아까 estimagtor API 의 많은 파라미터 들이 디폴트로 기본값 지정이 되어 있다.
# copy_X = True : 실제 입력될 데이터를 복사해서 사용할지 여부 (디폴트 True : 입력 데이터의 사본을 만들어서 사용합니다)
# fit_intercept=True : 상수 형태의 값이라는 것을 의미를 True 로 둠 (위 예제에서 우리는 상수를 다루고 있다)
# n_jobs=None : 모델을 돌릴때 여러개 job 을 주어서 돌릴수 있다. (패러렐 하게)
# CPU 의 여러 코어를 사용해서 병렬로 알고리즘을 돌릴수 있다
# normalize=False : 정규화가 되었는지 여부.
x.shape # (50,)
X = x[:, np.newaxis] # 차원추가, 차원추가를 하는 이유는 'feature 의 배열' 로 만들기 위함
X # (50, ) → (50, 1)
# 위와 같이 , y 는 그대로 사용하고 x 만 특징배열 로 변환했다 -> X
model.fit(X, y) # LinearRegression() 객체
주어진 새로운 관측치(x 값들) 에 대해 학습된 모델이 '예측' 할수 있다.
# 새 데이터 만들기
xfit = np.linspace(-1, 11)
# ★ 적용할 데이터도 모델에 넣어주려면
# 학습할때 넣어준 것과 같은 '특징벡터 (feature vector)' 로 변환하여 넣어주어야 한다!
Xfit = xfit[:, np.newaxis] # 차원축을 추가해주어 2차원 벡터 형태로 만듬 (50, ) -> (50, 1)
# 예측하기
yfit = model.predict(Xfit)
yfit # 예측한 결과(벡터)가 담겨 있다
위 결과를 시각화 해보자 (과연 잘 예측한걸까?)
plt.scatter(x, y) # 학습에 사용한 데이터
plt.plot(xfit, yfit, '--r') # 새로운 데이터 -> 예측값
scikit-learn에 대한 포스팅은 아직 끝나지 않았다.
우선 데이터에 적절한 estimator 클래스를 선택해서
모델의 클래스를 가져오는게 중요한거 같다.