Ajuster n_neighbors
n_neighbors est le paramètre le plus important de KNN. Lorsque vous ne connaissez pas le nombre d’anomalies dans le jeu de données (ce qui arrive souvent), vous ne pouvez pas utiliser la règle empirique qui recommande 20 voisins quand la contamination est inférieure à 10 %.
Dans ces cas, vous devrez ajuster n_neighbors. Entraînez-vous sur la version transformée du jeu de données females de l’exercice précédent. Elle a été chargée sous le nom females_transformed. L’estimateur KNN, ainsi que les fonctions evaluate_outlier_classifier et evaluate_regressor, sont également chargés.
Voici les définitions des fonctions à titre de rappel :
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)
Cet exercice fait partie du cours
Détection d’anomalies en Python
Instructions
- Créez une liste de valeurs possibles pour
n_neighborsdans cet ordre : 5, 10, 20 - Instanciez un modèle
KNNen fixantn_neighborsà la valeur dekcourante dans la boucle. - Trouvez les inliers avec la fonction
evaluate_outlier_classifier. - Calculez le RMSE avec
evaluate_regressoret stockez le résultat dansscoresen utilisantkcomme clé et le RMSE comme valeur.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)