SVM

이예나·2일 전

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import platform
\
if platform.system() == 'Windows':
plt.rc('font', family='Malgun Gothic')
elif platform.system() == 'Darwin':
plt.rc('font', family='AppleGothic')
else:
plt.rc('font', family='NanumBarunGothic')
\
plt.rcParams['axes.unicode_minus'] = False
\
base_path = r"/Users/kdt_0900_lyn/ml/resoce/dataset"
file_name = r"banknote_authentication.csv"
file_path = os.path.join(base_path, file_name)
\
os.path.join(base_path, file_name)

데이터 분할

from sklearn.model_selection import train_test_split  
(sklearn.model_selection: 데이터 분할 함수 , 학습용과 테스트용 세트로 무작위로 나누어줌)

(데이터의 단위를 일정하게 맞춰주는 데이터 전처리(스케일링) 코드)
from sklearn.prepocessing import StandrdScaler
scaler = StandarScaler()
\
X_train_scaled = scaler.fit_transform(X_train)
(.fit_transform : 평균과 표준편차를 모두 구하고 표준화)
X_test_scaled = scaler.transform(X_test)
(.transform : 수해진 편균과 표준편차를 이용해서 표준화)

모델 준비

from sklearn.svc import SVC

모델 학습

svc.fit(X_train_scaled, y_traim)

모델 예측

학습된 SVC 모델을 바탕으로 스케일링된 테스트 데이터(X_test_scaled)의 예측값(y_pred)을 생성하는 코드(.predict : 정답 예측하는 사이킷런의 핵심 기능 )

y_pred = svc.predict(X_test_scaled)
print(y_pred)
print(list(y_test))

ex)
y_pred = svc.predict(X_test_scaled)
print(y_pred[:10])
print(list(y_test[:10]))

(train: 학습 , test: 평가 , scaled: 단위를 맞춘 데이터 )

• X_train
-> 데이터 스케일러(Scaler)를 학습시킬 때 딱 한 번 씀
-> 예시 코드: scaler.fit(X_train)

• X_train_scaled
-> 머신러닝 모델을 실제로 학습(훈련)시킬 때 씁니다.
-> 예시 코드: svc.fit(X_train_scaled, y_train)

• y_train
-> 모델을 학습시킬 때, 특징 데이터(X)에 맞는 실제 정답지로 함께 넣습니다.
-> 예시 코드: svc.fit(X_train_scaled, y_train)

모델 평가

(정확도 검사)

svc.score(X_train_scaled, y_train)
\
svc.score(X_test_scaled, y_test)







(confusion_matrix() : 혼동 행렬)
array([[ TN,  FP ],
       [ FN,  TP ]])

• TN (True Negative)
• FP (False Positive)
• FN (False Negative)
• TP (True Positive)
\예시\
confusion_matrix(y_pred, y_test)

조화 평균 (정밀도(precision)와 재현율(recall))

  • F1-Score
    : 모델이 예측한 값(y_pred)과 실제 정답(y_test)을 비교하여 이진 분류기준의 F1-Score를 계산하고 출력하는 코드

  • y_test, y_pred -> 예상값과 정답이 얼마나 맞는지 확인

    	score = f1_score(y_test, y_pred)
    	print(f"F1-Score 점수: {score}")
  • df[]
    : 인덱싱(Indexing) 또는 대괄호 연산자 = 필터링

  • .map()
    : 이터를 하나씩 순서대로 꺼내서 변환 상자에 집어넣는 반복 도구

0개의 댓글