Skip to content

Instantly share code, notes, and snippets.

@tam17aki
Created April 7, 2022 11:38
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/555d4f22048f723f0854b050d2fc3c7b to your computer and use it in GitHub Desktop.
Save tam17aki/555d4f22048f723f0854b050d2fc3c7b 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 rpo import RPO"
]
},
{
"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_features = 2 # number of features on each point\n",
"\n",
"n_projections = 500 # number of random projection axes"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = generate_data(\n",
" n_train=n_train,\n",
" n_test=n_test,\n",
" n_features=n_features,\n",
" contamination=contamination,\n",
" random_state=42,\n",
" behaviour=\"new\",\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RPO(contamination=0.1, n_projections=500,\n",
" random_state=RandomState(MT19937) at 0x7F529FFD9570)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# train RPO detector\n",
"clf_name = \"RPO\"\n",
"clf = RPO(n_projections=n_projections, random_state=42)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# 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": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"On Training Data:\n",
"RPO ROC:0.9978, precision @ rank n:0.95\n",
"\n",
"On Test Data:\n",
"RPO ROC:0.9989, precision @ rank n:0.9\n"
]
}
],
"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)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x720 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 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",
")"
]
}
],
"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