scikit-learn 튜토리얼
scikit-learn 시작하기
수색…
비고
scikit-learn
은 파이썬으로 작성된 데이터 분석을위한 범용 오픈 소스 라이브러리입니다. 그것은 다른 파이썬 라이브러리를 기반으로합니다 : NumPy, SciPy, matplotlib
scikit-learn
은 다양한 기계 학습 알고리즘에 대한 다양한 구현을 포함합니다.
scikit-learn 설치
scikit-learn의 현재 안정 버전 에는 다음이 필요합니다 .
- 파이썬 (> = 2.6 또는> = 3.3),
- NumPy (> = 1.6.1),
- SciPy (> = 0.9).
대부분의 설치 pip
파이썬 패키지 관리자는 python과 모든 의존성을 설치할 수 있습니다 :
pip install scikit-learn
그러나 Linux 시스템의 경우 가능한 빌드 프로세스를 피하기 위해 conda
패키지 관리자를 사용하는 것이 좋습니다
conda install scikit-learn
scikit-learn
을 가지고 있는지 확인하려면 쉘에서 실행하십시오 :
python -c 'import sklearn; print(sklearn.__version__)'
Windows 및 Mac OSX 설치 :
캐노피 (Canopy) 와 아나콘다 (Anaconda) 는 윈도우 용 과학 파이썬 라이브러리, 리눅스 용 맥 OSX (Mac OSX)와 더불어 최근 버전의 scikit-learn 을 제공한다.
교차 검증으로 분류 자 교육
홍채 데이터 세트 사용 :
import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
X, y = iris_dataset['data'], iris_dataset['target']
데이터는 열차와 테스트 세트로 나뉩니다. 이를 위해 우리는 train_test_split
유틸리티 함수를 사용하여 train_test_split
train_size=0.75
옵션 (트레이닝 세트는 데이터의 75 %를 포함)을 사용하여 X
와 y
(데이터 및 타겟 벡터)를 무작위로 분리합니다.
훈련 데이터 세트는 k- 최근 접 이웃 분류 자로 공급된다. 분류기의 메소드 fit
은 모델을 데이터에 맞출 것입니다.
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75)
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)
마지막으로 테스트 샘플의 품질 예측 :
clf.score(X_test, y_test) # Output: 0.94736842105263153
한 쌍의 열차와 테스트 세트를 사용함으로써 데이터 분리의 임의적 선택으로 인해 분류 자의 품질에 대한 편향된 평가를 얻을 수 있습니다. 교차 검증 을 사용하여 데이터의 서로 다른 열차 / 테스트 하위 집합에 분류 기준을 맞추고 모든 정확도 결과에 대해 평균을 낼 수 있습니다. 함수 cross_val_score
는 교차 유효성 검사를 사용하여 입력 데이터에 분류 cross_val_score
맞 춥니 다. 그것은 사용되는 다른 스플릿 (폴드)의 수를 입력으로 취할 수 있습니다 (아래 예에서 5).
from sklearn.cross_validation import cross_val_score
scores = cross_val_score(clf, X, y, cv=5)
print(scores)
# Output: array([ 0.96666667, 0.96666667, 0.93333333, 0.96666667, 1. ])
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)
# Output: Accuracy: 0.97 (+/- 0.03)
파이프 라인 만들기
데이터에서 패턴을 찾는 일은 종종 기능 선택, 정규화 및 분류와 같은 일련의 데이터 처리 단계에서 진행됩니다. sklearn
에서는이 단계에 대한 파이프 라인이 사용됩니다.
예를 들어, 다음 코드는 두 단계로 구성된 파이프 라인을 보여줍니다. 첫 번째는 피처의 크기를 조정하고 두 번째는 결과로 생성되는 증분 된 데이터 세트의 분류자를 훈련시킵니다.
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
pipeline = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=4))
일단 파이프 라인이 생성되면 일반 단계와 같이 사용할 수 있습니다 (구체적인 단계에 따라 다름). 예를 들어, 파이프 라인은 분류 자처럼 작동합니다. 따라서 다음과 같이 사용할 수 있습니다.
# fitting a classifier
pipeline.fit(X_train, y_train)
# getting predictions for the new data sample
pipeline.predict_proba(X_test)
인터페이스 및 규칙 :
특수 클래스를 사용하여 데이터로 다른 작업이 수행됩니다.
대부분의 수업은 다음 그룹 중 하나에 속합니다.
- 분류 문제를 해결하기위한 분류 알고리즘 (
sklearn.base.ClassifierMixin
에서 파생sklearn.base.ClassifierMixin
) - 연속 변수를 재구성하는 문제를 해결하기위한 회귀 알고리즘 (
sklearn.base.RegressorMixin
에서 파생sklearn.base.RegressorMixin
) (회귀 문제) - 데이터를 전처리하는 데이터 변환 (
sklearn.base.TransformerMixin
에서 파생sklearn.base.TransformerMixin
)
데이터는 저장된다 numpy.array
들 (그러나 같은 다른 배열 형상물 pandas.DataFrame
그가 가변 인 경우의 허용되는 numpy.array
들)
데이터의 각 객체는 일련의 기능으로 설명됩니다. 일반적으로 데이터 샘플은 배열로 표시되며 첫 번째 차원은 데이터 샘플 ID이고 두 번째 차원은 기능 ID입니다.
import numpy
data = numpy.arange(10).reshape(5, 2)
print(data)
Output:
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
위의 sklearn
convention에서 데이터 셋은 각각 2 개의 피쳐로 기술 된 5 개의 객체를 포함합니다.
샘플 데이터 세트
쉽게 테스트 sklearn
있도록 sklearn
은 sklearn.datasets
모듈에 내장 된 데이터 세트를 sklearn.datasets
합니다. 예를 들어 Fisher의 홍채 데이터 세트를로드 해 봅시다.
import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
iris_dataset.keys()
['target_names', 'data', 'target', 'DESCR', 'feature_names']
전체 설명, 기능 이름 및 클래스 이름 ( target_names
)을 읽을 수 있습니다. 그것들은 문자열로 저장됩니다.
우리는 data
및 target
필드에 저장된 데이터 및 클래스에 관심이 있습니다. 관습에 따라 그것들은 X
와 y
로 표시됩니다.
X, y = iris_dataset['data'], iris_dataset['target']
X.shape, y.shape
((150, 4), (150,))
numpy.unique(y)
array([0, 1, 2])
X
와 y
모양은 4 개의 피처가있는 150 개의 샘플이 있다고합니다. 각 샘플은 0, 1 또는 2 클래스 중 하나에 속합니다.
X
와 y
는 이제 분류기의 fit()
메소드를 호출하여 분류기를 훈련하는 데 사용할 수 있습니다.
다음은 sklearn.datasets
모듈에서 제공하는 데이터 세트의 전체 목록입니다.
함께로드 | 기술 | 크기 | 용법 |
---|---|---|---|
load_boston() | 보스턴 주택 가격 데이터 세트 | 506 | 회귀 |
load_breast_cancer() | 유방암 위스콘신 데이터 세트 | 569 | 분류 (바이너리) |
load_diabetes() | 당뇨병 데이터 세트 | 442 | 회귀 |
load_digits(n_class) | 자릿수 데이터 세트 | 1797 년 | 분류 |
load_iris() | 홍채 데이터 세트 | 150 | 분류 (다중 등급) |
load_linnerud() | Linnerud 데이터 세트 | 20 | 다변량 회귀 분석 |
참고 (출처 : http://scikit-learn.org/stable/datasets/) :
이 데이터 세트는 Scikit에서 구현 된 다양한 알고리즘의 동작을 빠르게 설명하는 데 유용합니다. 그러나 실제 컴퓨터 학습 과제를 대표하기에는 너무 작습니다.
내장 된 장난감 샘플 데이터 세트 sklearn.datasets
는 외부 데이터 세트를로드하는 유틸리티 함수도 제공합니다.
-
load_mlcomp
저장소에서 샘플 데이터 세트를로드하기위한 load_mlcomp (이전에 데이터 세트를 다운로드해야 함). 다음 은 사용 예입니다. - 얼굴 인식 (얼굴 인식)에 사용되는 http://vis-www.cs.umass.edu/lfw/ 의 Wild (LFW) 쌍 데이터 세트에 Labeled Faces를로드하기위한
fetch_lfw_pairs
및fetch_lfw_people
. 이 데이터 세트는 200MB보다 큽니다. 다음 은 사용 예입니다.