threshold
=
stats.scoreatpercentile(scores_pred,
100
*
outlier_fraction)
Z
=
clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
*
-
1
Z
=
Z.reshape(xx.shape)
subplot
=
plt.subplot(
1
,
2
,
1
)
subplot.contourf(xx, yy, Z, levels
=
np.linspace(Z.
min
(),
threshold,
10
), cmap
=
plt.cm.Blues_r)
a
=
subplot.contour(xx, yy, Z, levels
=
[threshold],
linewidths
=
2
, colors
=
'red'
)
subplot.contourf(xx, yy, Z, levels
=
[threshold, Z.
max
()], colors
=
'orange'
)
b
=
subplot.scatter(X_train[:
-
n_outliers,
0
], X_train[:
-
n_outliers,
1
],
c
=
'white'
, s
=
20
, edgecolor
=
'k'
)
c
=
subplot.scatter(X_train[
-
n_outliers:,
0
], X_train[
-
n_outliers:,
1
],
c
=
'black'
, s
=
20
, edgecolor
=
'k'
)
subplot.axis(
'tight'
)
subplot.legend(
[a.collections[
0
], b, c],
[
'learned decision function'
,
'true inliers'
,
'true outliers'
],
prop
=
matplotlib.font_manager.FontProperties(size
=
10
),
loc
=
'lower right'
)
subplot.set_title(
'K-Nearest Neighbours'
)
subplot.set_xlim((
-
10
,
10
))
subplot.set_ylim((
-
10
,
10
))
plt.show()