Skip to content

Instantly share code, notes, and snippets.

@tam17aki
Last active March 28, 2022 07:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tam17aki/283fdacbc1ceb345768989d2ef266a69 to your computer and use it in GitHub Desktop.
Save tam17aki/283fdacbc1ceb345768989d2ef266a69 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from __future__ import division, print_function\n",
"\n",
"import os\n",
"import sys\n",
"\n",
"from pyod.utils.data import evaluate_print, generate_data\n",
"from pyod.utils.example import visualize\n",
"\n",
"from sampling import Sampling\n",
"\n",
"# temporary solution for relative imports in case pyod is not installed\n",
"# if pyod is installed, no need to use the following line\n",
"sys.path.append(os.path.abspath(os.path.join(os.path.dirname(\"__file__\"), \"..\")))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"contamination = 0.1 # percentage of outliers\n",
"n_train = 200 # number of training points\n",
"n_test = 100 # number of testing points\n",
"\n",
"# Generate sample data\n",
"X_train, X_test, y_train, y_test = generate_data(\n",
" n_train=n_train,\n",
" n_test=n_test,\n",
" n_features=2,\n",
" contamination=contamination,\n",
" random_state=42,\n",
" behaviour='new'\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sampling(contamination=0.1, metric='minkowski', metric_params=None,\n",
" random_state=RandomState(MT19937) at 0x7FEAE377C048, subset_size=20)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# train detector\n",
"clf_name = \"Sampling\"\n",
"clf = Sampling(subset_size=20)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# get the prediction labels and outlier scores of the training data\n",
"y_train_pred = clf.labels_ # binary labels (0: inliers, 1: outliers)\n",
"y_train_scores = clf.decision_scores_ # raw outlier scores\n",
"\n",
"# get the prediction on the test data\n",
"y_test_pred = clf.predict(X_test) # outlier labels (0 or 1)\n",
"y_test_scores = clf.decision_function(X_test) # outlier scores"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"On Training Data:\n",
"Sampling ROC:0.8207, precision @ rank n:0.8\n",
"\n",
"On Test Data:\n",
"Sampling ROC:0.9967, precision @ rank n:0.9\n"
]
},
{
"data": {
"image/png": "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rLN08cUX68QTT9Rll10m51yv7UeMGKGtW/0E1g8++KDGjx+vMWPGaNq0aeru7t6/z2uvvVannnqqnnzySX35y1/W6NGjdcopp+i6667rX4MBIATIbABBVNXidcYMad48ac8efyS/Z4+/PWNG+V5j5cqVuv322/XCCy9o/fr1euKJJ3Juu2bNGj388MN64okntGrVKkUiET300EOSpN27d+vMM8/U6tWrNWrUKC1evFjPP/+8nn32WX3lK18pX4MBIKDIbABBVLXiNRaT5s6VOjp63t/R4e+PxbI/r1Tjx4/XkUceqaamJo0ZM0avvPJKzm2XLVumFStW6IwzztCYMWO0bNkyrV+/XpIUiUR00UUXSZIOPvhgtbS0aMqUKVq0aJHa2trK01gACCgyG0BQVW3M66ZNUq4hSJGIf3zkyP6/zsCBA9P2G1E8z/kt55wmTpyoWbNm9XqspaVl/5ipaDSqp59+WsuWLdPChQt1xx136LHHHut/YwEgoMhsAEFVtZ7XYcOk5NCkXrq7/ePVdvbZZ2vhwoXavHmzJGn79u169dVXe20Xi8X01ltvacKECZo9e7ZWr15d7aYCQFWR2QCCqmo9r+3t0pQpfrxU+mmotjZp8uTyXMFaqtGjR+umm27SOeeco0QioebmZt15550aPnx4j+127dql888/X52dnXLO6bbbbqt+YwGgishsAEFl2a7szGXcuHEuNe9eypo1azRq1Kiinh+P+4H+c+f6007d3T4cZ8+WojWZtKs6SvmMAFSGma1wzo2rdTuqiczuGzIbqL18mV3V+IlGpTlzpFmzyjtnIACg/MhsAEFUk2Pn9vbyDPQHAFQemQ0gSOpieVgAAAA0BopXAAAAhAbFKwAAAEKD4hW5uYT00nz/HQAQfOQ2GkDDFa8LFizQpk2b9t8+66yzlJpKZsKECdqxY0eNWhZAry2Snposvba41i0pjMAG6hKZXaKw5DaZjX6oTfFawz/azCBMt3TpUh1yyCFF76s71/Iz9cAlpJUz/c8rZwY/YMIS2EAYkdnhEKbcJrPRD7UpXsv8R3vbbbfppJNO0kknnaTbb79dr7zyik466aT9j99yyy264YYbtHDhQi1fvlyXXXaZxowZoz179vTYz4gRI7R161ZJ0oMPPqjx48drzJgxmjZt2v7Qa29v17XXXqtTTz1VTz75pL785S9r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pvXr10uSIpGILkpOiHzwwQerpaVFU6ZM0aJFi9TW1laWtgJAUJHZAIKqamNeN+3apEhT9jFIkaaINu3apJFDRvb7dQYOHHhgv5GI4vHcp7ecc5o4caJmzZrV67GWlpb9Y6ai0aiefvppLVu2TAsXLtQdd9yhxx57rN9tBYCgIrMBBFXVel6HHTRM3YnurI91J7o17KBh1WrKfmeffbYWLlyozZs3S5K2b9+uV199tdd2sVhMb731liZMmKDZs2dr9erV1W4qAFQVmQ0gqKrW89o+oF1TTpuieavm9TgN1dbcpsljJpflCtZSjR49WjfddJPOOeccJRIJNTc3684779TwjImQd+3apfPPP1+dnZ1yzum2226relsBoJrIbABBZdmu7Mwl2zrZa9as0ahRo4p6fjwR14xHZ2juyrmKNEXUnejWlNOmaPa5sxVtqt/1Ekr5jABURr51susVmd03ZDZQe/kyu6rpE22Kas6EOZr1wVllnTMQAFB+ZDaAIKrJoXP7gPayDPQHAFQemQ0gSOpieVgAAAA0BopXAAAAhAbFKwAAAEKD4hUAAACh0XDF64IFC7Rp06b9t8866yylppKZMGGCduzYUaOWAQAykdkAMtWmeE0kpPnz/fcqywzCdEuXLtUhhxxS9L66u7OvPgMAdYXMBhAgtSleFy2SJk+WFi8uy+5uu+02nXTSSTrppJN0++2365VXXtFJJ520//FbbrlFN9xwgxYuXKjly5frsssu05gxY7Rnz54e+xkxYoS2bt0qSXrwwQc1fvx4jRkzRtOmTdsfeu3t7br22mt16qmn6sknn9SXv/xljR49Wqeccoquu+66srwfAAgUMhtAgFS/eE0kpJkz/c8zZ/b7SH7FihWaP3++nnrqKf3ud7/TvffeqzfffDPrthdffLHGjRunhx56SKtWrVJra2vW7dasWaOHH35YTzzxhFatWqVIJKKHHnpIkrR7926deeaZWr16tUaNGqXFixfr+eef17PPPquvfOUr/XovSFPDnh4AachsFIPMRhVVf5GCRYuk5JGytmzxR/IXXdTn3f3mN7/RBRdcoEGDBkmSLrzwQv3617/uVxOXLVumFStW6IwzzpAk7dmzR0OHDpUkRSIRXZRs78EHH6yWlhZNmTJF5513ns4777x+vS7SpHp6Bg/u198HgH4is1EMMhtVVN2e19QRfCzmb8diZTmSz7Rjxw4l0vbZ2dlZ0vOdc5o4caJWrVqlVatW6U9/+pNuuOEGSVJLS4sikYgkKRqN6umnn9bFF1+sRx55ROeee27Z3kNDK3NPD4A+IrNRDDIbVVbd4jX9CD4ldSTfR+9///u1ZMkSdXR0aPfu3Vq8eLE+/OEPa/Pmzdq2bZv27t2rRx55ZP/2Bx10kHbt2pV3n2effbYWLlyozZs3S5K2b9+uV199tdd2sVhMb731liZMmKDZs2dr9erVfX4fSJOtpwdA9ZHZKAaZjSqr3rCBzCP4lNSR/AUXSE2l19Knn366Jk2apPHjx0uSpk6dqjPOOENf+9rXNH78eL3zne/UiSeeuH/7SZMm6aqrrlJra6uefPLJrPscPXq0brrpJp1zzjlKJBJqbm7WnXfeqeHDh/fYbteuXTr//PPV2dkp55xuu+22ktuPDLl6evr49wGgj8hsFIPMRg2Yc67ojceNG+dS8+ulrFmzRqNGjSr85EWLpEsuyX46IRKRfvAD6cILi25LmBT9GUFauFC64oqe/2G2t0sLFjCOCv1iZiucc+Nq3Y5qIrP7hswuAZmNCsmX2dXreR0+XLrmmvyPo7FVqKcHQB+Q2SiEzEaNVK94HTvWfwG5LFkibdiQ/bENG/zjddrTAwQOmY1CyGzUSFmKV+eczKwcu6o7pQzLaHj09ABVQWbnRmaXgMxGjfS7eG1padG2bds0ZMgQwjCDc07btm1TS0tLrZsSDvT0ABVHZudGZpeIzEaN9Lt4PfLII7Vx40Zt2bKlHO2pOy0tLTryyCNr3QwAkERmF0JmA8HX7+K1ublZxxxzTDnaAgCoMDIbQNhxGSAAAABCg+IVAAAAoUHxCgAAgNAoaYUtM9siqfeC0QAQfMOdc4fXuhHVRGYDCLGcmV1S8QoAAADUEsMGAAAAEBoUrwAAAAgNilcAAACEBsUrAAAAQoPiFQAAAKFB8QoAAIDQoHgFAABAaFC8AgAAIDQoXgEAABAa/x/k0Rdj7FsBOAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 864x720 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# evaluate and print the results\n",
"print(\"\\nOn Training Data:\")\n",
"evaluate_print(clf_name, y_train, y_train_scores)\n",
"print(\"\\nOn Test Data:\")\n",
"evaluate_print(clf_name, y_test, y_test_scores)\n",
"\n",
"# On Training Data:\n",
"# Sampling ROC:0.8551, precision @ rank n:0.8\n",
"# On Test Data:\n",
"# Sampling ROC:0.9956, precision @ rank n:0.9\n",
"\n",
"# visualize the results\n",
"visualize(\n",
" clf_name,\n",
" X_train,\n",
" y_train,\n",
" X_test,\n",
" y_test,\n",
" y_train_pred,\n",
" y_test_pred,\n",
" show_figure=True,\n",
" save_figure=True,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment