Začněte nyníZačněte zdarma

Ladění parametru n_neighbors

n_neighbors je nejdůležitější parametr modelu KNN. Pokud si nejsi jistý/á, kolik odlehlých hodnot dataset obsahuje – a to se stává často –, nemůžeš spoléhat na pravidlo, které doporučuje 20 sousedů při kontaminaci pod 10 %.

V takových případech je potřeba n_neighbors naladit. Procvič si tento postup na transformované verzi datasetu females z předchozího cvičení, která je načtená jako females_transformed. K dispozici máš také estimátor KNN a funkce evaluate_outlier_classifier a evaluate_regressor.

Pro připomenutí jsou zde těla obou funkcí:

def evaluate_outlier_classifier(model, data, threshold=.75):
    model.fit(data)

    probs = model.predict_proba(data)
    inliers = data[probs[:, 1] <= threshold]

    return inliers

def evaluate_regressor(inliers):
    X, y = inliers.drop("weightkg", axis=1), inliers[['weightkg']]
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=10, train_size=0.8)

    lr = LinearRegression()
    lr.fit(X_train, y_train)

    preds = lr.predict(X_test)
    rmse = root_mean_squared_error(y_test, preds)

    return round(rmse, 3)

Toto cvičení je součástí kurzu

Detekce anomálií v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř seznam možných hodnot pro n_neighbors v tomto pořadí: 5, 10, 20
  • Vytvoř instanci modelu KNN a nastav hodnotu n_neighbors na aktuální k v cyklu.
  • Najdi inliery pomocí funkce evaluate_outlier_classifier.
  • Vypočítej RMSE pomocí evaluate_regressor a výsledek ulož do scores, kde klíčem bude k a hodnotou příslušné RMSE.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Create a list of values for n_neigbors
n_neighbors = [____, ____, ____]
scores = dict()

for k in n_neighbors:
    # Instantiate KNN with the current k
    knn = ____(____, n_jobs=-1)
    
    # Find the inliers with the current KNN
    inliers = ____(____, ____, .50)
    
    # Calculate and store RMSE into scores
    scores[____] = ____
    
print(scores)
Upravit a spustit kód