Evaluarea mai multor modele

Învățare supravegheată cu scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Modele diferite pentru probleme diferite

Principii orientative

  • Dimensiunea setului de date
    • Mai puține caracteristici = model mai simplu, antrenare mai rapidă
    • Unele modele necesită volume mari de date pentru performanță bună
  • Interpretabilitate
    • Unele modele sunt mai ușor de explicat, important pentru părțile interesate
    • Regresia liniară are interpretabilitate ridicată, datorită coeficienților
  • Flexibilitate
    • Poate îmbunătăți acuratețea prin mai puține ipoteze despre date
    • KNN este un model mai flexibil, fără ipoteze de liniaritate
Învățare supravegheată cu scikit-learn

Totul ține de metrici

  • Performanța modelelor de regresie:

    • RMSE
    • R-squared
  • Performanța modelelor de clasificare:

    • Acuratețe
    • Matrice de confuzie
    • Precizie, recall, F1-score
    • ROC AUC
  • Antrenați mai multe modele și evaluați performanța din start

Învățare supravegheată cu scikit-learn

O notă despre scalare

  • Modele afectate de scalare:
    • KNN
    • Regresie Liniară (inclusiv Ridge, Lasso)
    • Regresie Logistică
    • Rețea Neuronală Artificială

 

  • Este recomandat să scalați datele înainte de evaluarea modelelor
Învățare supravegheată cu scikit-learn

Evaluarea modelelor de clasificare

import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_val_score, KFold, train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier

X = music.drop("genre", axis=1).values y = music["genre"].values X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Învățare supravegheată cu scikit-learn

Evaluarea modelelor de clasificare

models = {"Logistic Regression": LogisticRegression(), "KNN": KNeighborsClassifier(), 
         "Decision Tree": DecisionTreeClassifier()}
results = []

for model in models.values():
kf = KFold(n_splits=6, random_state=42, shuffle=True)
cv_results = cross_val_score(model, X_train_scaled, y_train, cv=kf)
results.append(cv_results)
plt.boxplot(results, labels=models.keys()) plt.show()
Învățare supravegheată cu scikit-learn

Vizualizarea rezultatelor

Diagramă box a acurateței pentru fiecare model: Regresie Logistică, KNN și Arbore de Decizie

Învățare supravegheată cu scikit-learn

Performanța pe setul de test

for name, model in models.items():

model.fit(X_train_scaled, y_train)
test_score = model.score(X_test_scaled, y_test)
print("{} Test Set Accuracy: {}".format(name, test_score))
Logistic Regression Test Set Accuracy: 0.844
KNN Test Set Accuracy: 0.82
Decision Tree Test Set Accuracy: 0.832
Învățare supravegheată cu scikit-learn

Să exersăm!

Învățare supravegheată cu scikit-learn

Preparing Video For Download...