본문 바로가기
개발/머신러닝-딥러닝

2023.06.12 ML(머신러닝)의 서포트 벡터 머신

by 상달군 2023. 6. 14.
728x90

1.손글씨 데이터셋 살펴보기
2.정규화
3.서포트 벡터 (Support Vector Machine(SVM))


8.서포트 벡터 머신.ipynb

 


1.손글씨 데이터셋 살펴보기

🎈 바로 실습 

from sklearn.datasets import load_digits

# 객체 생성
digits = load_digits()

🔻 데이터 살펴보기 

# 데이터를 확인하기 위해서 키값을 뽑아보자
digits.keys()

# shape를 이용하여 데이터 갯수를 확인 해봅시다.
data = digits['data']
data.shape

🔻 data[0]을 출력해보게 되면 우리는 지금 이게 어떤 값인지 감이 오질 않는다.....

👀 target에  데이터 갯수를 확인 해봅시다. 

target = digits['target'] 

target.shape

🔻 다차원 배열 데이터를 형상화 해보겠습니다. 

# 다차원 배열을 형상화 해주는애 !
import matplotlib.pyplot as plt

# 형상화 해보겠습니다. 
fig, axes = plt.subplots(2, 5, figsize =(14,8))

for i, ax in enumerate(axes.flatten()):
  ax.imshow(data[i].reshape((8,8)), cmap='gray')
  ax.set_title(target[i])


2.정규화

🔻데이터를  정규화 시켜 보겠습니다. 

🗨 데이터의 값이 작아질수록 컴퓨터의 연산 속도는 빨라집니다. 

from sklearn.preprocessing import MinMaxScaler

# 스케일링 객체 생성
scaler = MinMaxScaler()


# 0부터 1사이의 스케일값으로 바꿔준다. 
# 값이 작아작아지면 컴퓨터 연산이 빨라진다 !
scaled = scaler.fit_transform(data)
scaled[0]

from sklearn.model_selection import train_test_split

#데이터 학습자료 분류 하기 
X_train, X_test, y_train, y_test = train_test_split(scaled, target, test_size=0.2, random_state = 10)

# 학습자료 수 확인하기
print(X_train.shape, y_train.shape)
print(X_test.shape, y_test.shape)


3.서포트 벡터 (Support Vector Machine(SVM))

  • 두 클래스부터 최대한 멀리 떨어져 있는 결정 경계를 찾는 분류기로 특징 조건을 만족하는 동시에 클래스를 분류하는것을 목표로 함

🔻

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# SVC 객체생성
model = SVC()

# 학습시키기
model.fit(X_train, y_train)

# 예측하기
y_pred= model.predict(X_test)

# 예측 정확도 확인하기.
accuracy_score(y_test, y_pred)

# 그림 그리기 
print(y_test[0], y_pred[0])
plt.imshow(X_test[0].reshape(8,8))
plt.show

🔻 전체를 다 찍어보겠습니다. 

import matplotlib.pyplot  as plt
fig, axes = plt.subplots(2,5, figsize=(14,8))

for i, ax in enumerate(axes.flatten()):
  ax.imshow(X_test[i].reshape(8,8), cmap='gray')
  ax.set_title(f'Label: {y_test[i]}, Pred: {y_pred[i]}')


 

728x90

댓글