SVM(다중 범주)

5481 단어 sklearnPython

SVM은


Support Vector Machine의 약칭입니다.
학습 데이터를 이용하여 여러 종류를 분류하는 선(학습모델 제작)을 얻어 미지의 데이터가 속하는 분류 방법을 추측한다.

SVM 분류 개요


원래의 차원이 낮은 평면을 초평면이라고 하여 가장 좋은 초평면(분리면)을 찾다.
예를 들어, 다음 그림에서 볼 수 있듯이 검은환과 흰환을 분리하는 선(H1 및 H2)을 그립니다.
(이 그림은 X1과 X2의 2차원 데이터를 나타내고 H1과 H2는 직선 형식으로 1차원이다.
3D 데이터를 입력하면 2D로 분류할 수 있는 평면을 찾습니다.)

가장 좋은 분리면을 찾는 방법은 가장 큰 가장자리의 분리면을 검색하는 것이다.
가장자리는 그림에서 보여준 회색 선으로 각 종류의 점에서 분리면의 수직선까지의 거리이다.
예를 들어 H1과 H2는 모두 흑환과 백환을 분류하는 분리면이라고 할 수 있지만 가장자리가 큰 H2는 분류력이 높다.(H3는 분류도 할 줄 몰라서 전혀 안 돼.)

내핵 궤계(내핵법)


위의 예는 예쁘게 분류할 수 있지만 대부분 그렇지 않다.
이럴 때 분리면을 찾는 방법을 내핵계략이라고 한다.
예를 들어 아래 그림에서 보듯이 적환과 청환을 직선으로 나누는 것은 매우 어렵다.

따라서 예쁘게 분리할 수 있도록 샘플을 다른 공간 [특징 공간](일정한 규칙에 따라 이동점)에 비추어 그 공간에서 분리면을 찾는다.

이렇게 가장자리에서 가장 큰 분리면을 얻으면 알 수 없는 데이터를 입력하면 촬영할 때의 규칙에 따라 특징 공간에 비추고 특징 공간에서 분리면에 속하는 어디에 따라 분류 판별을 한다.
이것은 매우 이해하기 쉽다.→ 커널 트릭 참조 비디오

데이터 준비


아이리스의 데이터를 이용하다.여기.와 함께.

데이터 개요


describe_iris.py
iris.head()

길이와 너비의 데이터

시험해 보다


svm.py
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn import datasets
from sklearn.cross_validation import train_test_split # クロスバリデーション用

# データ用意
iris = datasets.load_iris()    # データロード
X = iris.data                  # 説明変数セット
Y = iris.target                # 目的変数セット
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=0) # random_stateはseed値。

# SVM実行
from sklearn.svm import SVC # SVM用
model = SVC()               # インスタンス生成
model.fit(X_train, Y_train) # SVM実行

# 予測実行
from sklearn import metrics       # 精度検証用
predicted = model.predict(X_test) # テストデーテへの予測実行
metrics.accuracy_score(Y_test, predicted)
> 0.97368421052631582
정밀도 97.4%.비싸요.

좋은 웹페이지 즐겨찾기