Machine Learning

Support Vector Machine - SVM , RBF

yugyeong 2022. 12. 2. 14:12

 

Support Vector Machine 에는 SVM과 RBF 가 있다.

여기서 SVM 은 선형 구조이고, RBF 는 non_linear  즉, 비선형 구조이다.

 

 

SVM

 

SVM 을 차트로 나타내면 아래처럼 직선을 하나 그리고 그 직선을 기준으로 데이터를 구별한다.

( linear 방법 )

 

 

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

필요한 라이브러리를 임포트 해준다.

 

 

아래의 데이터프레임을 가지고 SVM 인공지능으로 Purchased 결과를 예측할 것이다.

 

 

예측에 필요한 컬럼 'Age' : 'Estimated Salary' 을 변수 X로 두고

예측 결과인 데이터 컬럼 'Purchased' 를 변수 y로 둘 것이다.

 

 

 

# 피쳐 스케일링
from sklearn.preprocessing import MinMaxScaler
scaler_X = MinMaxScaler()
X = scaler_X.fit_transform(X)

# 데이터셋 나누기
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 1)

 

인공지능에 훈련시키기 전 과정인 피쳐스케일링과 데이터셋을 나누는 것은 기존과 동일한 방법으로 진행한다.

 

 

 

SVC 인공지능으로 데이터 결과를 알아보는 방법이다.

 

from sklearn.svm import SVC

필요한 모듈은 임포트 해준다.

 

변수 classifier 에 SVC()를 저장하고 파라미터 값은 kernel 에 'linear' 를 넣어주면 random_state 값은 1 로 지정해주었다. 

변수 classifier 에 fit 함수를 사용하여 인공지능을 학습 시켜준다.

 

classifier = SVC(kernel= 'linear', random_state=1)

classifier.fit(X_train, y_train)

 

 

 

 

학습시킨 결과값을 변수 y_pred 로 두고 y_test 데이터와 비교하여 정확도 계산을 했을 때는 아래와 같은 결과값이 리턴된다.

 

 

y_pred = classifier.predict(X_test)

y_pred
y_test.values
from sklearn.metrics import confusion_matrix, accuracy_score
confusion_matrix(y_test, y_pred)
accuracy_score(y_test, y_pred)

 

 

 

RBF

 

RBF 는 아래의 차트처럼 비선형 구조로 데이터를 분류하는 인공지능이다.

 

 

 

이번에는 RBF 방법으로 데이터 분류를 예측하는 방법이다.

 

 

변수 classifier2 에 SVC 를 저장해준다. 괄호 안 파라미터 kernel 에는 'rbf' 를 넣어주면 random_state 는 1로 하였다.

fir 함수를 이용하여 classifier 을 학습 시켜준다.

 

classifier2 = SVC(kernel= 'rbf', random_state= 1)
classifier2.fit(X_train, y_train)

 

 

 

학습시킨 classifier2 에 X_test 값을 넣어서 도출된 값을 y_pred2 변수에 저장을 한다.

그 후 confusion_matrix 와 accuracy_score 로 정확도를 분석하면 아래와같은 결과값이 도출된다.

 

y_pred2 = classifier2.predict(X_test)
y_pred2
y_test.values
confusion_matrix(y_test, y_pred2)
accuracy_score(y_test, y_pred2)