A A
[ML] Hyperparameter Tuning (ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹)
๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šตํ• ๋•Œ ์ค‘์š”ํ•œ ์š”์†Œ์ค‘ ํ•˜๋‚˜์ธ Hyperparamter(ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ)์— ๋ฐํ•˜์—ฌ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Hyperparameter? (ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ž€?)

ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ธฐ ์ „์— ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฐ’์œผ๋กœ, ํ•™์Šต ๊ณผ์ • ์ค‘์—๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ๊ณผ ํ•™์Šต ์†๋„์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

 

Hyperparameter ์˜ˆ์‹œ

  1. ๊ฒฐ์ • ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๊นŠ์ด: ํŠธ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊นŠ๊ฒŒ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋ฉฐ, ๋ชจ๋ธ์˜ ๋ณต์žก์„ฑ์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  2. SVM์˜ ์ปค๋„ ์ข…๋ฅ˜: Support Vector Machine์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ปค๋„์˜ ์ข…๋ฅ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์‹ ๊ฒฝ๋ง์˜ ํ•™์Šต๋ฅ : ์‹ ๊ฒฝ๋ง์—์„œ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•™์Šต๋ฅ ์€ ๋ชจ๋ธ์˜ ์ˆ˜๋ ด ์†๋„์™€ ํ•™์Šต ํ’ˆ์งˆ์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

 

Hyperparameter Tuning (ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹)

ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹์€ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ตœ์ ๊ฐ’์„ ์ฐพ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์€ ๋ชจ๋ธ์˜ ์˜ˆ์ธก ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ณ , ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ, ํ•™์Šต ์‹œ๊ฐ„์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

https://towardsdatascience.com/understanding-hyperparameters-and-its-optimisation-techniques-f0debba07568

Hyperparameter Tuning์˜ ๋ชฉ์ 

https://deepai.org/machine-learning-glossary-and-terms/hyperparameter

  1. ๋ชจ๋ธ ์„ฑ๋Šฅ ์ตœ์ ํ™”: ์ ์ ˆํ•œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ ํƒํ•จ์œผ๋กœ์จ ๋ชจ๋ธ์˜ ์˜ˆ์ธก ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€: ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๋ชจ๋ธ์ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์— ๊ณผ์ ํ•ฉ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋ธ์˜ ์ผ๋ฐ˜ํ™” ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ณ„์‚ฐ ๋น„์šฉ ์ตœ์ ํ™”: ํšจ์œจ์ ์ธ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •์„ ํ†ตํ•ด ๋ชจ๋ธ ํ•™์Šต์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hyperparameter Tuning ๊ณผ ๋ชจ๋ธ ์„ฑ๋Šฅ

  • ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์— ๋”ฐ๋ผ ๋ชจ๋ธ์˜ ํ•™์Šต ์†๋„์™€ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„ˆ๋ฌด ๋‚ฎ์€ ํ•™์Šต๋ฅ ์€ ํ•™์Šต ์†๋„๋ฅผ ๋Šฆ์ถ”๊ณ , ๋„ˆ๋ฌด ๋†’์€ ํ•™์Šต๋ฅ ์€ ์ตœ์ ์˜ ํ•ด์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •์€ ๋ชจ๋ธ์˜ ๊ณผ์ ํ•ฉ(Overfitting) ๋˜๋Š” ๊ณผ์†Œ์ ํ•ฉ(Underfitting)์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hyperparameter Tuning ๋ฐฉ๋ฒ•

  1. ๊ทธ๋ฆฌ๋“œ ์„œ์น˜ (Grid Search)
  2. ๋žœ๋ค ์„œ์น˜ (Random Search)

๊ทธ๋ฆฌ๋“œ ์„œ์น˜ (Grid Search)

๊ทธ๋ฆฌ๋“œ ์„œ์น˜๋Š” ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ํƒ์ƒ‰ํ•˜์—ฌ ์ตœ์ ์˜ ์กฐํ•ฉ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Bergstra, James, and Yoshua Bengio. “Random search for hyper-parameter optimization.” The Journal of Machine Learning Research 13.1 (2012): 281-305

๊ทธ๋ฆฌ๋“œ ์„œ์น˜์˜ ์›๋ฆฌ

  1. ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ณต๊ฐ„ ์ •์˜
    • ๊ฐ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•ด ํƒ์ƒ‰ํ•  ๊ฐ’๋“ค์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ์กฐํ•ฉ ํƒ์ƒ‰
    • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํ•ฉ์— ๋Œ€ํ•ด ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ณ  ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ตœ์  ์กฐํ•ฉ ์„ ํƒ
    • ํ‰๊ฐ€ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ข‹์€ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํ•ฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๋“œ ์„œ์น˜์˜ ์žฅ์ 

  • ๋ชจ๋“  ์กฐํ•ฉ์„ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ์ตœ์ ์˜ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฐพ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๋“œ ์„œ์น˜์˜ ๋‹จ์ 

  • ๊ณ„์‚ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ , ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ๋ชจ๋ฉ๋‹ˆ๋‹ค.
  • ํŠนํžˆ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๋„“์„ ๊ฒฝ์šฐ, ํƒ์ƒ‰ ์‹œ๊ฐ„์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋žœ๋ค ์„œ์น˜ (Random Search)

๋žœ๋ค ์„œ์น˜๋Š” ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ณต๊ฐ„์—์„œ ๋ฌด์ž‘์œ„๋กœ ์กฐํ•ฉ์„ ์„ ํƒํ•˜์—ฌ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋žœ๋ค ์„œ์น˜์˜ ์›๋ฆฌ

  1. ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ณต๊ฐ„ ์ •์˜
    • ๊ฐ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•ด ํƒ์ƒ‰ํ•  ๊ฐ’๋“ค์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฌด์ž‘์œ„ ์กฐํ•ฉ ์„ ํƒ
    • ์ •์˜๋œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ณต๊ฐ„์—์„œ ๋ฌด์ž‘์œ„๋กœ ์กฐํ•ฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์ตœ์  ์กฐํ•ฉ ์„ ํƒ
    • ๋ฌด์ž‘์œ„๋กœ ์„ ํƒ๋œ ์กฐํ•ฉ๋“ค ์ค‘์—์„œ ํ‰๊ฐ€ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ข‹์€ ์กฐํ•ฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋žœ๋ค ์„œ์น˜์˜ ์žฅ์ 

  • ๊ทธ๋ฆฌ๋“œ ์„œ์น˜๋ณด๋‹ค ๊ณ„์‚ฐ ๋น„์šฉ์ด ์ ๊ณ , ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋งŽ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋žœ๋ค ์„œ์น˜์˜ ๋‹จ์ 

  • ๋ฌด์ž‘์œ„ ์„ ํƒ์ด๋ฏ€๋กœ, ์ตœ์ ์˜ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ์ ์ ˆํ•œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋ฉด, ์‹ค์งˆ์ ์œผ๋กœ ๊ทธ๋ฆฌ๋“œ ์„œ์น˜์™€ ์œ ์‚ฌํ•œ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hyperparameter Tuning - Grid Search Example Code

# ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
import matplotlib.pyplot as plt
import seaborn as sns
# Iris ๋ฐ์ดํ„ฐ์…‹ ๋กœ๋“œ
iris = load_iris()
X = iris.data
y = iris.target

# ํ•™์Šต ๋ฐ์ดํ„ฐ์™€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ๋ถ„ํ• 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# SVM ๋ชจ๋ธ ์ƒ์„ฑ
svc = SVC()

# ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ทธ๋ฆฌ๋“œ ์ •์˜
param_grid = {
    'C': [0.1, 1, 10, 100],
    'gamma': [1, 0.1, 0.01, 0.001],
    'kernel': ['rbf']
}
# Grid Search
grid = GridSearchCV(svc, param_grid, refit=True, verbose=2)
grid.fit(X_train, y_train)

# ์ตœ์  ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ์ถœ๋ ฅ
print(f'Best Parameters: {grid.best_params_}')

# ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ์˜ˆ์ธก ์ˆ˜ํ–‰
y_pred = grid.predict(X_test)
# ์ •ํ™•๋„ ๊ณ„์‚ฐ
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

# ํ˜ผ๋™ ํ–‰๋ ฌ ์‹œ๊ฐํ™”
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(10, 7))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

# ๋ถ„๋ฅ˜ ๋ฆฌํฌํŠธ ์ถœ๋ ฅ
print(classification_report(y_test, y_pred, target_names=iris.target_names))
Fitting 5 folds for each of 16 candidates, totalling 80 fits
[CV] END .........................C=0.1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=0.1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=0.1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=0.1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=0.1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .......................C=0.1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=0.1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=0.1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=0.1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=0.1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END ......................C=0.1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=0.1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=0.1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=0.1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=0.1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END .....................C=0.1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=0.1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=0.1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=0.1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=0.1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END ...........................C=1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ...........................C=1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ...........................C=1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ...........................C=1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ...........................C=1, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .........................C=1, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ........................C=1, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .......................C=1, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END ..........................C=10, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ..........................C=10, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ..........................C=10, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ..........................C=10, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ..........................C=10, gamma=1, kernel=rbf; total time=   0.0s
[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END ........................C=10, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END .......................C=10, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END ......................C=10, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .........................C=100, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=100, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=100, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=100, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .........................C=100, gamma=1, kernel=rbf; total time=   0.0s
[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END .......................C=100, gamma=0.1, kernel=rbf; total time=   0.0s
[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END ......................C=100, gamma=0.01, kernel=rbf; total time=   0.0s
[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time=   0.0s
[CV] END .....................C=100, gamma=0.001, kernel=rbf; total time=   0.0s
Best Parameters: {'C': 100, 'gamma': 0.01, 'kernel': 'rbf'}
Accuracy: 1.0

              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        19
  versicolor       1.00      1.00      1.00        13
   virginica       1.00      1.00      1.00        13

    accuracy                           1.00        45
   macro avg       1.00      1.00      1.00        45
weighted avg       1.00      1.00      1.00        45