수색…
지원 벡터 머신 사용
지원 벡터 머신 은 평면에서 점의 거리가 어떤 의미에서 최적이되도록 두 개의 레이블이 지정된 점 집합 사이에 (아마도 고차원의) 초평면을 전달하려고하는 알고리즘 패밀리입니다. SVM은 분류 또는 회귀에 사용될 수 있습니다 (각각 sklearn.svm.SVC
및 sklearn.svm.SVR
에 해당).
예:
우리가 2D 공간에서 작업한다고 가정 해보십시오. 먼저 몇 가지 데이터를 만듭니다.
import numpy as np
이제 x 와 y를 만듭니다.
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)