수색…


지원 벡터 머신 사용

지원 벡터 머신 은 평면에서 점의 거리가 어떤 의미에서 최적이되도록 두 개의 레이블이 지정된 점 집합 사이에 (아마도 고차원의) 초평면을 전달하려고하는 알고리즘 패밀리입니다. SVM은 분류 또는 회귀에 사용될 수 있습니다 (각각 sklearn.svm.SVCsklearn.svm.SVR 에 해당).

예:

우리가 2D 공간에서 작업한다고 가정 해보십시오. 먼저 몇 가지 데이터를 만듭니다.

import numpy as np

이제 xy를 만듭니다.

x0, x1 = np.random.randn(10, 2), np.random.randn(10, 2) + (1, 1)
x = np.vstack((x0, x1))

y = [0] * 10 + [1] * 10

x 는 두 개의 가우시안으로 구성되어 있습니다 ( 하나는 (0, 0)을 중심으로, 하나는 (1,1) 주위에 중심에 위치 함 ) .

분류 기준을 작성하려면 다음을 사용할 수 있습니다.

from sklearn import svm

svm.SVC(kernel='linear').fit(x, y)

(0, 0)에 대한 예측을 확인해 봅시다.

>>> svm.SVC(kernel='linear').fit(x, y).predict([[0, 0]])
array([0])

클래스가 0이라는 예측이 있습니다.

회귀 분석을 위해 다음과 같이 할 수 있습니다.

svm.SVR(kernel='linear').fit(x, y)

RandomForestClassifier

무작위 포리스트는 데이터 집합의 여러 하위 샘플에 여러 가지 의사 결정 트리 분류자를 적용하고 평균을 사용하여 예측 정확도와 과도한 조정을 향상시키는 메타 견적 도구입니다.

간단한 사용 예 :

수입:

from sklearn.ensemble import RandomForestClassifier

열차 데이터 및 목표 데이터 정의 :

train = [[1,2,3],[2,5,1],[2,1,7]]
target = [0,1,0]

target 의 값은 예측하려는 레이블을 나타냅니다.

RandomForest 객체를 시작하고 학습 (적합)을 수행합니다.

rf = RandomForestClassifier(n_estimators=100)
rf.fit(train, target)

예측 :

test = [2,2,3]
predicted = rf.predict(test)

분류 보고서 분석

정밀도와 리콜 , f1 점수 (정밀도와 리콜의 고조파 평균 ) 및 지원 (훈련 세트에서 해당 클래스의 관측 수)을 비롯한 주요 분류 메트릭을 보여주는 텍스트 보고서를 작성하십시오.

sklearn docs의 예 :

from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))

출력 -

         precision    recall  f1-score   support

class 0       0.50      1.00      0.67         1
class 1       0.00      0.00      0.00         1
class 2       1.00      0.67      0.80         3

avg / total   0.70      0.60      0.61         5

GradientBoostingClassifier

등급 분류를위한 그라데이션 부스팅 . Gradient Boosting Classifier는 잔차 (이전 단계의 오류)를 수정하는 회귀 트리를 추가하여 연속적인 반복 (또는 단계)에서 오류를 수정하는 기본 모델의 추가 합계입니다.

수입:

from sklearn.ensemble import GradientBoostingClassifier

장난감 분류 데이터 만들기

from sklearn.datasets import load_iris

iris_dataset = load_iris()

X, y = iris_dataset.data, iris_dataset.target

이 데이터를 교육 및 테스트 세트로 나누십시오.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=0)

기본 매개 변수를 사용하여 GradientBoostingClassifier 모델을 인스턴스화합니다.

gbc = GradientBoostingClassifier()
gbc.fit(X_train, y_train)

테스트 세트에서 점수를 매기자.

# We are using the default classification accuracy score
>>> gbc.score(X_test, y_test)
1

기본적으로 100 개의 견적가가 구축되어 있습니다.

>>> gbc.n_estimators
100

이것은 초기화 시간 동안 n_estimators 를 다른 값으로 설정하여 제어 할 수 있습니다.

의사 결정 트리

의사 결정 트리는 쉽게 이해할 수있는> 7와 같은 자세한 규칙의 시퀀스를 사용하는 분류 자입니다.

아래의 예는 길이 3 인 3 개의 특징 벡터를 사용하여 의사 결정 트리 분류자를 훈련시킨 다음, 알려지지 않은 제 4 특징 벡터, 즉 테스트 벡터에 대한 결과를 예측합니다.

from sklearn.tree import DecisionTreeClassifier

# Define training and target set for the classifier
train = [[1,2,3],[2,5,1],[2,1,7]]
target = [10,20,30]

# Initialize Classifier. 
# Random values are initialized with always the same random seed of value 0 
# (allows reproducible results)
dectree = DecisionTreeClassifier(random_state=0)
dectree.fit(train, target)

# Test classifier with other, unknown feature vector
test = [2,2,3]
predicted = dectree.predict(test)

print predicted

출력은 다음을 사용하여 시각화 할 수 있습니다.

import pydot
import StringIO

dotfile = StringIO.StringIO()
tree.export_graphviz(dectree, out_file=dotfile)
(graph,)=pydot.graph_from_dot_data(dotfile.getvalue())
graph.write_png("dtree.png")
graph.write_pdf("dtree.pdf")

로지스틱 회귀 분석을 이용한 분류

LR 분류기에서 단일 시험의 가능한 결과를 설명하는 확률은 물류 기능을 사용하여 모델링됩니다. linear_model 라이브러리에서 구현됩니다.

from sklearn.linear_model import LogisticRegression

sklearn LR 구현은 선택적 L2 또는 L1 정규화를 통해 바이너리, One-vs-Rest 또는 다항 로지스틱 회귀 분석에 적합합니다. 예를 들어, 샘플 sklearn 데이터 세트에서 이진 분류를 고려해 봅시다.

from sklearn.datasets import make_hastie_10_2

X,y = make_hastie_10_2(n_samples=1000)

여기서 X는 n_samples X 10 배열이고 y는 대상 레이블 -1 또는 +1입니다.

train-test split을 사용하여 입력 데이터를 교육 및 테스트 세트 (70 % -30 %)로 나눕니다.

from sklearn.model_selection import train_test_split 
#sklearn.cross_validation in older scikit versions

data_train, data_test, labels_train, labels_test = train_test_split(X,y, test_size=0.3)

LR 분류기 사용은 다른 예와 비슷합니다.

# Initialize Classifier. 
LRC = LogisticRegression()
LRC.fit(data_train, labels_train)

# Test classifier with the test data
predicted = LRC.predict(data_test)

혼란 행렬을 사용하여 결과를 시각화하십시오.

from sklearn.metrics import confusion_matrix

confusion_matrix(predicted, labels_test)


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