Sklearn - Local Outlier Factor (LOF)

Data
Box plots
LOF



Data

Scatterplot
np.random.seed(0)
m = 100

x = np.random.randn(m).reshape(-1, 1)
y = 3 * x - 2 + np.random.randn(m).reshape(-1, 1)

x = np.concatenate((x, [[2]]), axis=0)
y = np.concatenate((y, [[-8]]), axis=0)

plt.scatter(x,y)

Boxplots
fig, ax = plt.subplots(1, 2, figsize=(9,4))
ax[0].boxplot(y)
ax[0].set_title('y')
ax[1].boxplot(x, vert=False)
ax[1].set_title('x')




Box plots

→ Aucun outlier en analyse univariée x ou y




LOF

Scatterplot avec LOF
data = np.concatenate((x, y), axis=1)
detection_model = LocalOutlierFactor(contaminations=0.01, n_neighbors=5)
outliers = detection_model.fit_predict(data)
plt.scatter(x, y, c=outliers, cmaps='bwr_r')

contamination=0.01 => 1% de détections
n_neighbors=5 => voisins impliqués dans l'isolation

Scatterplot avec LOF
data = np.concatenate((x, y), axis=1)
detection_model = LocalOutlierFactor(contaminations=0.1, n_neighbors=10)
outliers = detection_model.fit_predict(data)
plt.scatter(x, y, c=outliers, cmaps='bwr_r')

contamination=0.1 => 10% de Valeurs abberantes