Utvärdera flera modeller

Övervakad inlärning med scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Olika modeller för olika problem

Några vägledande principer

  • Datamängdens storlek
    • Färre särdrag = enklare modell, kortare träningstid
    • Vissa modeller kräver stora datamängder för att prestera bra
  • Tolkbarhet
    • Vissa modeller är lättare att förklara, vilket kan vara viktigt för intressenter
    • Linjär regression har hög tolkbarhet – vi kan förstå koefficienterna
  • Flexibilitet
    • Kan förbättra noggrannheten genom att göra färre antaganden om data
    • KNN är en mer flexibel modell och antar inga linjära samband
Övervakad inlärning med scikit-learn

Det handlar om måtten

  • Prestanda för regressionsmodeller:

    • RMSE
    • R-squared
  • Prestanda för klassificeringsmodeller:

    • Accuracy
    • Confusion matrix
    • Precision, recall, F1-score
    • ROC AUC
  • Träna flera modeller och utvärdera prestandan direkt

Övervakad inlärning med scikit-learn

Om skalning

  • Modeller som påverkas av skalning:
    • KNN
    • Linjär regression (samt Ridge, Lasso)
    • Logistisk regression
    • Artificiellt neuralt nätverk

 

  • Bäst att skala data innan modellerna utvärderas
Övervakad inlärning med scikit-learn

Utvärdera klassificeringsmodeller

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)
Övervakad inlärning med scikit-learn

Utvärdera klassificeringsmodeller

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()
Övervakad inlärning med scikit-learn

Visualisera resultaten

Lådagram över noggrannhet för varje modell: Logistic Regression, KNN och Decision Tree

Övervakad inlärning med scikit-learn

Prestanda på testmängden

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
Övervakad inlärning med scikit-learn

Nu kör vi en övning!

Övervakad inlärning med scikit-learn

Preparing Video For Download...