수색…


비고

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 %를 포함)을 사용하여 Xy (데이터 및 타겟 벡터)를 무작위로 분리합니다.

훈련 데이터 세트는 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 있도록 sklearnsklearn.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 )을 읽을 수 있습니다. 그것들은 문자열로 저장됩니다.

우리는 datatarget 필드에 저장된 데이터 및 클래스에 관심이 있습니다. 관습에 따라 그것들은 Xy 로 표시됩니다.

X, y = iris_dataset['data'], iris_dataset['target']
X.shape, y.shape
((150, 4), (150,))
numpy.unique(y)
array([0, 1, 2])

Xy 모양은 4 개의 피처가있는 150 개의 샘플이 있다고합니다. 각 샘플은 0, 1 또는 2 클래스 중 하나에 속합니다.

Xy 는 이제 분류기의 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_pairsfetch_lfw_people . 이 데이터 세트는 200MB보다 큽니다. 다음 은 사용 예입니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow