๋ฐ์ํ
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ์ต๊ณผ ํ๊ฐ ๊ณผ์ ์์ ์ค์ํ ์์๋ค์ ๋ํด ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
ํ๋ จ ๋ฐ์ดํฐ์ ํ ์คํธ ๋ฐ์ดํฐ์ ๋ถํ
๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ ํํ ํ๊ฐํ๊ณ ์ผ๋ฐํ ๋ฅ๋ ฅ์ ํ์ธํ๊ธฐ ์ํด ๋ฐ์ดํฐ์ ์ ํ๋ จ ๋ฐ์ดํฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ๋ถํ ํฉ๋๋ค.
- ํ๋ จ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ์ ํ์ต์ํค๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ํ ์คํธ ๋ฐ์ดํฐ๋ ํ์ต๋์ง ์์ ๋ฐ์ดํฐ์์ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ผ๋ฐ์ ์ธ ๋น์จ:
- Train(ํ๋ จ ๋ฐ์ดํฐ) : Test(ํ ์คํธ ๋ฐ์ดํฐ) = 70:30
- Train(ํ๋ จ ๋ฐ์ดํฐ) : Test(ํ ์คํธ ๋ฐ์ดํฐ) = 80:20
๋ฐ์ดํฐ ๋ถํ ๋ฐฉ๋ฒ
Train(ํ๋ จ ๋ฐ์ดํฐ) & Test(ํ ์คํธ ๋ฐ์ดํฐ)๋ฅผ ์ด๋ ํ ๋น์จ๋ก ๋๋๋์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ถ๋ฆฌํ ๊น์?
- ์์ ๋ถํ (Random Split):
- ๋ฐ์ดํฐ๋ฅผ ๋ฌด์์๋ก ์์ ํ, ์ง์ ๋ ๋น์จ์ ๋ฐ๋ผ ํ๋ จ ๋ฐ์ดํฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ๋ถํ ํฉ๋๋ค.
- ์ด๋ ๋ฐ์ดํฐ์ ์์๊ฐ ๋ชจ๋ธ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
- ์ธตํ ๋ถํ (Stratified Split):
- ๋ฐ์ดํฐ์ ํด๋์ค ๋ถํฌ๋ฅผ ์ ์งํ๋ฉด์ ํ๋ จ ๋ฐ์ดํฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ๋ถํ ํฉ๋๋ค.
- ์ด๋ ํด๋์ค ๋ถ๊ท ํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํ์ฌ, ํ๋ จ ๋ฐ ํ ์คํธ ๋ฐ์ดํฐ ๋ชจ๋์์ ํด๋์ค ๋น์จ์ด ๋์ผํ๊ฒ ์ ์ง๋๋๋ก ํฉ๋๋ค.
๊ต์ฐจ๊ฒ์ฆ (Cross-Validation)
๊ต์ฐจ๊ฒ์ฆ (Cross-Validation)์ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํจ์ผ๋ก์จ,
Bias(ํธํฅ)์ ์ค์ด๊ณ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ๋์ด๋ฉด์ ์ ํํ๊ฒ ํ๊ฐํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ์ ๋ถํ ๋ก ์ธํ ํธํฅ์ ์ค์ด๊ณ ๋ชจ๋ธ์ ์ผ๋ฐํ ์ฑ๋ฅ์ ๋ณด๋ค ์ ํํ๊ฒ ํ๊ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- k-Fold Cross-Validation
- ๋ฐ์ดํฐ์ ์ k๊ฐ์ ํด๋(fold)๋ก ๋๋๊ณ , ๊ฐ ํด๋๋ ํ ๋ฒ์ฉ ํ ์คํธ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋๋จธ์ง k-1๊ฐ์ ํด๋๋ ํ๋ จ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ด k๋ฒ ๋ฐ๋ณต๋๋ฉฐ, ๊ฐ ๋ฐ๋ณต์ ์ฑ๋ฅ์ ํ๊ท ํ์ฌ ์ต์ข ์ฑ๋ฅ ํ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
- ์์๋ฅผ ํ๋ฒ, 5-Fold Cross-Validation์ผ๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
- 100๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด, 100๊ฐ์ ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ 5๊ฐ์ ํด๋๋ก ๋๋๊ณ , ๊ฐ ํด๋(20๊ฐ ๋ฐ์ดํฐ)๊ฐ ํ๋ฒ์ฉ ํ ์คํธ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋๋จธ์ง 4๊ฐ์ ํด๋(80๊ฐ ๋ฐ์ดํฐ)๋ ํ๋ จ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ 5๋ฒ ๋ฐ๋ณตํ์ฌ ์ฑ๋ฅ ์งํ๋ฅผ ํ๊ท ํฉ๋๋ค.
๊ต์ฐจ๊ฒ์ฆ (Cross-Validation) Example Code
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import confusion_matrix, roc_curve, roc_auc_score, accuracy_score, mean_squared_error, r2_score
# ๋ฐ์ดํฐ ์์ฑ
from sklearn.datasets import load_iris
from sklearn.datasets import load_digits
from sklearn.datasets import load_breast_cancer
# ๋ฐ์ดํฐ ์์ฑ
digits = load_digits() # ์๊ธ์จ ์ซ์ ๋ฐ์ดํฐ์
์ ๋ก๋
X = digits.data # ์
๋ ฅ ๋ฐ์ดํฐ (ํน์ง)
y = digits.target # ์ถ๋ ฅ ๋ฐ์ดํฐ (๋ ์ด๋ธ)
# ์
๋ ฅ ๋ฐ์ดํฐ์ ๋ ์ด๋ธ ์ถ๋ ฅ
print(f"X: {X}") # ํน์ง ๋ฐ์ดํฐ ์ถ๋ ฅ
print(f"y: {y}") # ๋ ์ด๋ธ ์ถ๋ ฅ
X: [[ 0. 0. 5. ... 0. 0. 0.]
[ 0. 0. 0. ... 10. 0. 0.]
[ 0. 0. 0. ... 16. 9. 0.]
...
[ 0. 0. 1. ... 6. 0. 0.]
[ 0. 0. 2. ... 12. 0. 0.]
[ 0. 0. 10. ... 12. 1. 0.]]
y: [0 1 2 ... 8 9 8]
# ๋ชจ๋ธ ์์ฑ
nb = GaussianNB() # ๋์ด๋ธ ๋ฒ ์ด์ฆ ๋ถ๋ฅ๊ธฐ ์ธ์คํด์ค ์์ฑ
# ๊ต์ฐจ ๊ฒ์ฆ
scores = cross_val_score(nb, X, y, cv=5) # 5๊ฒน ๊ต์ฐจ ๊ฒ์ฆ ์ํํ์ฌ ์ ์ ๊ณ์ฐ
# ๊ต์ฐจ ๊ฒ์ฆ ์ ์ ์ถ๋ ฅ
print(f'Cross-validation scores: {scores}') # ๊ฐ fold์ ๊ฒ์ฆ ์ ์ ์ถ๋ ฅ
print(f'Mean CV Score: {np.mean(scores)}') # ํ๊ท ๊ต์ฐจ ๊ฒ์ฆ ์ ์ ์ถ๋ ฅ
Cross-validation scores: [0.78055556 0.78333333 0.79387187 0.8718663 0.80501393]
Mean CV Score: 0.8069281956050759
# ์๊ฐํ
plt.plot(range(1, len(scores) + 1), scores, marker='o', linestyle='--', color='b')
plt.xlabel('Fold')
plt.ylabel('Accuracy')
plt.title('Cross-Validation Scores')
plt.show()
ํผ๋ํ๋ ฌ(Confusion Matrix)
ํผ๋ํ๋ ฌ(Confusion Matrix)์ ๋ชจ๋ธ์ ์์ธก ๊ฒฐ๊ณผ์ ์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ์ฌ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ด์ง ๋ถ๋ฅ์ ๋ค์ค ํด๋์ค ๋ถ๋ฅ ๋ฌธ์ ๋ชจ๋์ ์ ์ฉํฉ๋๋ค.
- ํผ๋ํ๋ ฌ(Confusion Matrix)์์ ์ฃผ์ ์งํ์ ๋ฐํ์ฌ ํ๋ฒ ์์๋ณด๋ฉด 4๊ฐ์ ์งํ๊ฐ ์์ต๋๋ค.
- True Positive (TP)
- ์ค์ ์์ฑ์ธ ๋ฐ์ดํฐ๋ฅผ ์์ฑ์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์์ธกํ ๊ฒฝ์ฐ - ๋ชจ๋ธ์ด Positive๋ก ์์ธกํ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๋ก๋ Positive์ธ ๊ฒฝ์ฐ์ ๋๋ค.
- ์: ์ค์ ๋ก ์คํธ ์ด๋ฉ์ผ์ด ์คํธ์ผ๋ก ๋ถ๋ฅ๋ ๊ฒฝ์ฐ
- False Negative (FN)
- ์ค์ ์์ฑ์ธ ๋ฐ์ดํฐ๋ฅผ ์์ฑ์ผ๋ก ์๋ชป ์์ธกํ ๊ฒฝ์ฐ - ๋ชจ๋ธ์ด Negative๋ก ์์ธกํ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๋ก๋ Positive์ธ ๊ฒฝ์ฐ ์ ๋๋ค.
- ์: ์ค์ ๋ก ์คํธ ์ด๋ฉ์ผ์ด ์คํธ์ด ์๋ ๊ฒ์ผ๋ก ๋ถ๋ฅ๋ ๊ฒฝ์ฐ (๋๋ฝ๋ ์คํธ)
- False Positive (FP)
- ์ค์ ์์ฑ์ธ ๋ฐ์ดํฐ๋ฅผ ์์ฑ์ผ๋ก ์๋ชป ์์ธกํ ๊ฒฝ์ฐ - ๋ชจ๋ธ์ด Positive๋ก ์์ธกํ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๋ก๋ Negative์ธ ๊ฒฝ์ฐ ์ ๋๋ค.
- ์: ์ค์ ๋ก ์คํธ์ด ์๋ ์ด๋ฉ์ผ์ด ์คํธ์ผ๋ก ๋ถ๋ฅ๋ ๊ฒฝ์ฐ (์๋ชป๋ ์คํธ)
- True Negative (TN)
- ์ค์ ์์ฑ์ธ ๋ฐ์ดํฐ๋ฅผ ์์ฑ์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์์ธกํ ๊ฒฝ์ฐ - ๋ชจ๋ธ์ด Negative๋ก ์์ธกํ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๋ก๋ Negative์ธ ๊ฒฝ์ฐ ์ ๋๋ค.
- ์: ์ค์ ๋ก ์คํธ์ด ์๋ ์ด๋ฉ์ผ์ด ์คํธ์ด ์๋ ๊ฒ์ผ๋ก ๋ถ๋ฅ๋ ๊ฒฝ์ฐ
ํผ๋ํ๋ ฌ(Confusion Matrix)์ ์ฑ๋ฅ ์งํ
ํผ๋ํ๋ ฌ(Confusion Matrix)์ ์ฑ๋ฅ ์งํ๋ 4๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ ํ๋ (Accuracy): ์ ์ฒด ์์ธก ์ค ๋ง์ถ ๋น์จ์ ๋๋ค.
- ์ฆ, ๋ชจ๋ธ์ด ์ผ๋ง๋ ์ ์์ธกํ๋์ง๋ฅผ ํ๊ฐํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์งํ์ ๋๋ค.
- 100๊ฐ์ ์ํ ์ค 90๊ฐ๋ฅผ ๋ง์ถ๊ณ 10๊ฐ๋ฅผ ํ๋ ธ๋ค๋ฉด, ์ ํ๋๋ 90%์ ๋๋ค.
- ์ ๋ฐ๋ (Precision): ์์ฑ์ผ๋ก ์์ธก๋ ๊ฒ ์ค ์ค์ ์์ฑ์ ๋น์จ์ ๋๋ค.
- ์ฆ, ๋ชจ๋ธ์ด ์์ฑ์ด๋ผ๊ณ ์์ธกํ ๊ฒ๋ค ์ค์์ ์ผ๋ง๋ ๋ง์ ๊ฒ์ด ์ค์ ๋ก ์์ฑ์ธ์ง๋ฅผ ์ธก์ ํฉ๋๋ค.
- ๋์ ์ ๋ฐ๋๋ ๋ชจ๋ธ์ด ์์ฑ์ด๋ผ๊ณ ์์ธกํ ๋, ๊ทธ ์์ธก์ด ์ค์ ๋ก ๋ง์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ ๋ฐ๋๋ ์์ฑ ์์ธก์ด ์ค์ํ ๊ฒฝ์ฐ(์: ์คํธ ๋ฉ์ผ ํํฐ๋ง์์ ์คํธ์ผ๋ก ์๋ชป ๋ถ๋ฅ๋ ์ ์ ๋ฉ์ผ์ด ์ ์ด์ผ ํ๋ ๊ฒฝ์ฐ) ์ ์ฉํฉ๋๋ค.
- ์ฌํ์จ (Recall): ์ค์ ์์ฑ ์ค ๋ง์ถ ๋น์จ์ ๋๋ค. ์ฆ, ๋ชจ๋ธ์ด ์ค์ ์์ฑ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ง๋ ์ ์ฐพ์๋ด๋์ง๋ฅผ ์ธก์ ํฉ๋๋ค.
- ๋์ ์ฌํ์จ์ ๋ชจ๋ธ์ด ์ค์ ์์ฑ ๋ฐ์ดํฐ๋ฅผ ์ ๋์น์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ฌํ์จ์ ์์ฑ ๋ฐ์ดํฐ์ ํ์ง๊ฐ ์ค์ํ ๊ฒฝ์ฐ(์: ์ ์ง๋จ์์ ์ ํ์๋ฅผ ๋์น์ง ์๋ ๊ฒ์ด ์ค์ํ ๊ฒฝ์ฐ) ์ ์ฉํฉ๋๋ค.
- F1-์ ์ (F1-Score): ์ ๋ฐ๋์ ์ฌํ์จ์ ์กฐํ ํ๊ท ์ ๋๋ค. ์ ๋ฐ๋์ ์ฌํ์จ ์ฌ์ด์ ๊ท ํ์ ์ธก์ ํฉ๋๋ค.
- F1-์ ์๋ ์ ๋ฐ๋์ ์ฌํ์จ์ ๊ท ํ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํ์ชฝ์ด ๋งค์ฐ ๋๊ณ ๋ค๋ฅธ ์ชฝ์ด ๋ฎ์ ๋, F1-์ ์๋ ์ด๋ฅผ ๋ฐ์ํ์ฌ ์ ์ ํ ๊ท ํ์ ์ ๊ณตํฉ๋๋ค.
ํผ๋ํ๋ ฌ(Confusion Matrix) Example Code
# ๋ฐ์ดํฐ ์์ฑ
data = load_breast_cancer() # ์ ๋ฐฉ์ ๋ฐ์ดํฐ์
์ ๋ก๋
X = data.data # ์
๋ ฅ ๋ฐ์ดํฐ (ํน์ง)
y = data.target # ์ถ๋ ฅ ๋ฐ์ดํฐ (๋ ์ด๋ธ)
# ๋ฐ์ดํฐ ๋ถํ
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ 80%๋ ํ์ต ๋ฐ์ดํฐ๋ก, 20%๋ ํ
์คํธ ๋ฐ์ดํฐ๋ก ๋ถํ
# ๋ชจ๋ธ ํ์ต
nb = GaussianNB() # ๋์ด๋ธ ๋ฒ ์ด์ฆ ๋ถ๋ฅ๊ธฐ ์ธ์คํด์ค ์์ฑ
nb.fit(X_train, y_train) # ํ์ต ๋ฐ์ดํฐ๋ก ๋ชจ๋ธ ํ์ต
# ์์ธก
y_pred = nb.predict(X_test) # ํ
์คํธ ๋ฐ์ดํฐ๋ก ์์ธก ์ํ
y_pred_prob = nb.predict_proba(X_test)[:, 1] # ๊ฐ ํด๋์ค์ ๋ํ ์์ธก ํ๋ฅ ์ค ์์ฑ ํด๋์ค ํ๋ฅ ์ถ์ถ
# ํผ๋ ํ๋ ฌ
conf_matrix = confusion_matrix(y_test, y_pred) # ์ค์ ๋ ์ด๋ธ๊ณผ ์์ธก ๋ ์ด๋ธ์ ๋น๊ตํ์ฌ ํผ๋ ํ๋ ฌ ์์ฑ
print(f'Confusion Matrix:\n{conf_matrix}') # ํผ๋ ํ๋ ฌ ์ถ๋ ฅ
Confusion Matrix:
[[40 3]
[ 0 71]]
# ์๊ฐํ - ํผ๋ ํ๋ ฌ
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()
ROC ๊ณก์ ๊ณผ AUC
ROC (Receiver Operating Characteristic) ๊ณก์
๋ชจ๋ธ์ ๋ถ๋ฅ ์๊ณ๊ฐ์ ๋ณํ์ํค๋ฉฐ True Positive Rate(์ฌํ์จ)์ False Positive Rate๋ฅผ ๋น๊ตํ๋ ๊ณก์ ์ ๋๋ค.
- True Positive Rate (TPR): ์ฌํ์จ๊ณผ ๋์ผํฉ๋๋ค.
- False Positive Rate (FPR): ์ค์ ์์ฑ ์ค ์๋ชป ์์ฑ์ผ๋ก ์์ธก๋ ๋น์จ์ ๋๋ค.
- ROC ๊ณก์ ์ FPR์ x์ถ, TPR์ y์ถ์ ๋๊ณ ๊ทธ๋ฆฝ๋๋ค.
- ์๊ณ๊ฐ์ ๋ณํ์ํค๋ฉฐ FPR๊ณผ TPR์ ๋ณํ๋ฅผ ๊ด์ฐฐํฉ๋๋ค.
- ์ต์ ์ ๋ชจ๋ธ์ ROC ๊ณก์ ์ด ์ผ์ชฝ ์๋จ ๋ชจ์๋ฆฌ์ ๊ฐ๊น์ด ํํ๋ฅผ ๊ฐ์ง๋๋ค.
AUC (Area Under the Curve)
- ROC ๊ณก์ ์๋์ ๋ฉด์ ์ ๋ํ๋ด๋ฉฐ, ๋ชจ๋ธ์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํ๊ฐํ๋ ์งํ์ ๋๋ค
- AUC ๊ฐ์ด 1์ ๊ฐ๊น์ธ์๋ก ์ข์ ๋ชจ๋ธ์ ์๋ฏธํฉ๋๋ค.
- AUC = 1: ์๋ฒฝํ ๋ชจ๋ธ
- AUC = 0.5: ๋๋ค ์ถ์ธก
- AUC < 0.5: ๋ชจ๋ธ ์ฑ๋ฅ์ด ๋๋ค ์ถ์ธก๋ณด๋ค ๋์จ
- ๋ง์ฝ, AUC๊ฐ 0.9์ธ ๊ฒฝ์ฐ: ๋ชจ๋ธ์ด 90%์ ํ๋ฅ ๋ก ์์ฑ ์์ธก๊ณผ ์์ฑ ์์ธก์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ๋ณํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ROC ๊ณก์ ๊ณผ AUC Example Code
# ROC ๋ฐ AUC ๊ณ์ฐ
fpr, tpr, _ = roc_curve(y_test, y_pred_prob) # ๊ฑฐ์ง ๊ธ์ ๋น์จ(fpr)๊ณผ ์ง์ง ๊ธ์ ๋น์จ(tpr) ๊ณ์ฐ
roc_auc = roc_auc_score(y_test, y_pred_prob) # AUC (๊ณก์ ์๋ ๋ฉด์ ) ๊ณ์ฐ
# AUC ์ ์ ์ถ๋ ฅ
print(f'ROC AUC Score: {roc_auc}') # ROC AUC ์ ์ ์ถ๋ ฅ
# ROC AUC Score: 0.9983622666229938
# ์๊ฐํ - ROC ๊ณก์
plt.plot(fpr, tpr, color='blue', lw=2, label=f'ROC curve (area = {roc_auc:.2f})')
# ROC ๊ณก์ ์ ํ๋์ ์ ์ผ๋ก ๊ทธ๋ฆฌ๋ฉฐ AUC ๊ฐ์ ๋ ์ด๋ธ๋ก ์ถ๊ฐ
plt.plot([0, 1], [0, 1], color='grey', lw=2, linestyle='--') # ๋๊ฐ์ ๊ธฐ์ค์ ์ถ๊ฐ
plt.xlim([0.0, 1.0]) # x์ถ ๋ฒ์ ์ค์
plt.ylim([0.0, 1.05]) # y์ถ ๋ฒ์ ์ค์
plt.xlabel('False Positive Rate') # x์ถ ๋ ์ด๋ธ ์ค์
plt.ylabel('True Positive Rate') # y์ถ ๋ ์ด๋ธ ์ค์
plt.title('Receiver Operating Characteristic (ROC) Curve') # ๊ทธ๋ํ ์ ๋ชฉ ์ค์
plt.legend(loc="lower right") # ๋ฒ๋ก ์์น ์ค์
plt.show() # ๊ทธ๋ํ ์ถ๋ ฅ
๋ฐ์ํ
'๐ Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ML] K-Nearest Neighbors, K-NN (K-์ต๊ทผ์ ์ด์) (0) | 2024.08.07 |
---|---|
[ML] Supervised Learning (์ง๋ํ์ต) (0) | 2024.08.06 |
[ML] Naive Bayes (๋์ด๋ธ ๋ฒ ์ด์ฆ) (0) | 2024.08.01 |
[ML] Linear Regression (์ ํํ๊ท) (0) | 2024.08.01 |
[ML] Supervised Learning (์ง๋ํ์ต) (0) | 2024.07.31 |