Scikit Learn-규칙
Scikit-learn의 객체는 다음 세 가지 보완 인터페이스로 구성된 균일 한 기본 API를 공유합니다.
Estimator interface − 모델 구축 및 피팅을위한 것입니다.
Predictor interface − 예측하기위한 것입니다.
Transformer interface − 데이터 변환 용입니다.
API는 간단한 규칙을 채택하고 디자인 선택은 프레임 워크 코드의 확산을 방지하는 방식으로 안내되었습니다.
협약의 목적
관례의 목적은 API가 다음과 같은 광범위한 원칙을 준수하도록하는 것입니다.
Consistency − 기본이든 합성이든 모든 객체는 제한된 메소드 세트로 더 구성된 일관된 인터페이스를 공유해야합니다.
Inspection − 학습 알고리즘에 의해 결정된 생성자 매개 변수 및 매개 변수 값은 공개 속성으로 저장 및 노출되어야합니다.
Non-proliferation of classes − 데이터 세트는 NumPy 배열 또는 Scipy 희소 행렬로 표시되어야하지만 하이퍼 매개 변수 이름과 값은 프레임 워크 코드의 확산을 피하기 위해 표준 Python 문자열로 표시되어야합니다.
Composition − 데이터에 대한 시퀀스 또는 변환의 조합으로 표현할 수 있는지 또는 다른 알고리즘에서 매개 변수화 된 메타 알고리즘으로 자연스럽게 보이는 알고리즘은 기존 빌딩 블록으로 구현되고 구성되어야합니다.
Sensible defaults− scikit-learn에서는 작업에 사용자 정의 매개 변수가 필요할 때마다 적절한 기본값이 정의됩니다. 이 기본값은 작업이 현명한 방식으로 수행되도록해야합니다 (예 : 현재 작업에 대한 기본 솔루션 제공).
다양한 컨벤션
Sklearn에서 사용 가능한 규칙은 아래에 설명되어 있습니다.
유형 캐스팅
입력이 캐스트되어야 함을 나타냅니다. float64. 다음 예에서sklearn.random_projection 데이터의 차원을 줄이는 데 사용되는 모듈에 대해 설명합니다.
Example
import numpy as np
from sklearn import random_projection
rannge = np.random.RandomState(0)
X = range.rand(10,2000)
X = np.array(X, dtype = 'float32')
X.dtype
Transformer_data = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X)
X_new.dtype
Output
dtype('float32')
dtype('float64')
위의 예에서 X가 float32 캐스팅 float64 으로 fit_transform(X).
매개 변수 재조정 및 업데이트
추정기의 하이퍼 파라미터는 다음을 통해 생성 된 후 업데이트 및 재구성 될 수 있습니다. set_params()방법. 그것을 이해하기 위해 다음 예제를 보자-
Example
import numpy as np
from sklearn.datasets import load_iris
from sklearn.svm import SVC
X, y = load_iris(return_X_y = True)
clf = SVC()
clf.set_params(kernel = 'linear').fit(X, y)
clf.predict(X[:5])
Output
array([0, 0, 0, 0, 0])
추정기가 구성되면 위의 코드가 기본 커널을 변경합니다. rbf 선형 비아로 SVC.set_params().
이제 다음 코드는 추정기를 다시 맞추고 두 번째 예측을 수행하기 위해 커널을 rbf로 다시 변경합니다.
Example
clf.set_params(kernel = 'rbf', gamma = 'scale').fit(X, y)
clf.predict(X[:5])
Output
array([0, 0, 0, 0, 0])
완전한 코드
다음은 완전한 실행 프로그램입니다-
import numpy as np
from sklearn.datasets import load_iris
from sklearn.svm import SVC
X, y = load_iris(return_X_y = True)
clf = SVC()
clf.set_params(kernel = 'linear').fit(X, y)
clf.predict(X[:5])
clf.set_params(kernel = 'rbf', gamma = 'scale').fit(X, y)
clf.predict(X[:5])
다중 클래스 및 다중 레이블 피팅
다중 클래스 피팅의 경우 학습 및 예측 작업은 모두 적합한 대상 데이터의 형식에 따라 다릅니다. 사용 된 모듈은 다음과 같습니다.sklearn.multiclass. 다중 클래스 분류 기가 1d 배열에 맞는 아래 예제를 확인하십시오.
Example
from sklearn.svm import SVC
from sklearn.multiclass import OneVsRestClassifier
from sklearn.preprocessing import LabelBinarizer
X = [[1, 2], [3, 4], [4, 5], [5, 2], [1, 1]]
y = [0, 0, 1, 1, 2]
classif = OneVsRestClassifier(estimator = SVC(gamma = 'scale',random_state = 0))
classif.fit(X, y).predict(X)
Output
array([0, 0, 1, 1, 2])
위의 예에서 분류자는 다중 클래스 레이블의 1 차원 배열에 적합하며 predict()따라서 메서드는 해당 다중 클래스 예측을 제공합니다. 그러나 다른 한편으로 다음과 같이 이진 레이블 표시기의 2 차원 배열에 맞출 수도 있습니다.
Example
from sklearn.svm import SVC
from sklearn.multiclass import OneVsRestClassifier
from sklearn.preprocessing import LabelBinarizer
X = [[1, 2], [3, 4], [4, 5], [5, 2], [1, 1]]
y = LabelBinarizer().fit_transform(y)
classif.fit(X, y).predict(X)
Output
array(
[
[0, 0, 0],
[0, 0, 0],
[0, 1, 0],
[0, 1, 0],
[0, 0, 0]
]
)
마찬가지로 다중 레이블 피팅의 경우 다음과 같이 인스턴스에 여러 레이블을 할당 할 수 있습니다.
Example
from sklearn.preprocessing import MultiLabelBinarizer
y = [[0, 1], [0, 2], [1, 3], [0, 2, 3], [2, 4]]
y = MultiLabelBinarizer().fit_transform(y)
classif.fit(X, y).predict(X)
Output
array(
[
[1, 0, 1, 0, 0],
[1, 0, 1, 0, 0],
[1, 0, 1, 1, 0],
[1, 0, 1, 1, 0],
[1, 0, 1, 0, 0]
]
)
위의 예에서 sklearn.MultiLabelBinarizer맞추기 위해 다중 레이블의 2 차원 배열을 이진화하는 데 사용됩니다. 이것이 predict () 함수가 각 인스턴스에 대해 여러 레이블이있는 출력으로 2d 배열을 제공하는 이유입니다.