{ "cells": [ { "cell_type": "markdown", "source": [ "# Amazon Fraud Detector - Minimal Prediction API Example \n", "\n", "Once you’ve created your fraud detector, you can evaluate your detector on test transactions. This is an example notebook shows you how to evaluate your detector on more recent data.\n", "\n", "\n", "\n", "### Setup permissions\n", "------\n", "\n", "First, setup your AWS credentials so that Fraud Detector can store and access training data. See more details: https://docs.aws.amazon.com/frauddetector/latest/ug/set-up.html\n", "\n", "To use Amazon Fraud Detector, you have to set up permissions that allow access to the Amazon Fraud Detector console and API operations. You also have to allow Amazon Fraud Detector to perform tasks on your behalf and to access resources that you own. We recommend creating an AWS Identify and Access Management (IAM) user with access restricted to Amazon Fraud Detector operations and required permissions. You can add other permissions as needed. If you are using SageMaker Notebook Instance, attach the two policies __*AmazonFraudDetectorFullAccessPolicy*__ and __*AmazonS3FullAccess*__ to the Instance's IAM role and restart the kernel.\n", "\n", "\n", "### Preparation\n", "------\n", "\n", "Before this step, you should have:\n", "1. created a S3 bucket and uploaded the csv file you want to get prediction on
\n", "https://docs.aws.amazon.com/frauddetector/latest/ug/uploading-to-an-s3-bucket.html\n", "2. created a detector on Amazon Fraud Detector (You'll need to plug in its DETECTOR_NAME & VERSION later)
\n", "https://docs.aws.amazon.com/frauddetector/latest/ug/part-a.html
\n", "https://docs.aws.amazon.com/frauddetector/latest/ug/part-b.html\n" ], "metadata": {} }, { "cell_type": "code", "execution_count": 1, "source": [ "# -- Display --\n", "from IPython.core.display import display, HTML\n", "from IPython.display import clear_output\n", "display(HTML(\"\"))\n", "\n", "# -- Import packages -- \n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from datetime import datetime\n", "from sklearn.metrics import roc_curve,auc\n", "from multiprocessing import Pool\n", "import time\n", "import numpy as np\n", "np.seterr(divide='ignore', invalid='ignore')\n", "import pandas as pd\n", "pd.set_option('display.max_rows', 500)\n", "pd.set_option('display.max_columns', 500)\n", "pd.set_option('display.width', 1000)\n", "\n", "# -- AWS stuff -- \n", "import boto3\n", "\n", "%matplotlib inline" ], "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {} } ], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Initialize AWS Fraud Detector Client \n", "------\n", "\n", "See more details: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/frauddetector.html \n" ], "metadata": {} }, { "cell_type": "code", "execution_count": 45, "source": [ "# -- initialize the AFD client \n", "client = boto3.client('frauddetector')" ], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Setup notebook \n", "-----\n", "\n", "
💡 Detector and File Information \n", " \n", "- DETECTOR_NAME & VERSION corresponds to the name and version of your deployed Fraud Detector \n", "- S3_BUCKET & S3_FILE are the information on the S3 file you wish to apply your detector to\n", "- ENTITY_ID_COL, EVENT_ID_COL, TIMESTAMP_COL, LABEL_COL are the column names of the corresponding variables in your data\n", "\n", "
" ], "metadata": {} }, { "cell_type": "code", "execution_count": 3, "source": [ "# -- this is all you need to fill out, once complete simply interactively run each code cell -- \n", "DETECTOR_NAME = 'your-detector-name' # e.g. transaction_fraud_detector_tfi\n", "DETECTOR_VER = 'your-detector-version' # e.g. 1\n", "\n", "S3_BUCKET = \"your-s3-bucket-with-data\" # e.g. aws-afd-demo-data\n", "S3_FILE = \"path-to-your-data-file\" # e.g. txn_sample_data_demo.csv\n", "TEST_SPLIT_TIME= \"test-split-timestamp\" # e.g. 1900-01-01 (evaluate model performance on events after the TEST_SPLIT_TIME)\n", "\n", "ENTITY_ID_COL = \"column-name-of-entity-id\" # e.g. \"ENTITY_ID\"\n", "EVENT_ID_COL = \"column-name-of-event-id\" # e.g. \"EVENT_ID\" \n", "TIMESTAMP_COL = \"column-name-of-event-timestamp\"# e.g. \"EVENT_TIMESTAMP\"\n", "LABEL_COL = \"column-name-of-event-label\" # e.g. \"EVENT_LABEL\"" ], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Load data to be scored \n", "-----\n", "
💡 Check the first 5 Records \n", "\n", "Does your data look correct? Do you need to rename any columns? You want the column names to match the field names used by the model. \n", "\n", "
" ], "metadata": {} }, { "cell_type": "code", "execution_count": 4, "source": [ "# -- connect to S3, snag file, and convert to a panda's dataframe --\n", "s3 = boto3.resource('s3')\n", "obj = s3.Object(S3_BUCKET, S3_FILE)\n", "body = obj.get()['Body']\n", "df = pd.read_csv(body)\n", "\n", "# -- filter the records after TEST_SPLIT_TIME --\n", "df[TIMESTAMP_COL] = pd.to_datetime(df[TIMESTAMP_COL])\n", "df_test = df[df[TIMESTAMP_COL] > TEST_SPLIT_TIME] \n", "\n", "# -- convert the event timestamp to standard format --\n", "df_test[TIMESTAMP_COL] = df_test[TIMESTAMP_COL].apply(lambda x: x.strftime(\"%Y-%m-%dT%H:%M:%SZ\"))\n", "\n", "df_test.head()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EVENT_LABELEVENT_TIMESTAMPevent_identity_idcard_bincustomer_namebilling_streetbilling_citybilling_statebilling_zipbilling_latitudebilling_longitudecustomer_jobip_addresscustomer_emailphoneuser_agentproduct_categoryorder_pricepayment_currencymerchant
102021-02-14T06:16:48Z32000062bdc7d46c86c5b5c367fc807ef0741-72-9331501882Erica727 Betty InletGrand RiverIA5010840.8137-93.9544Astronomer208.171.245.202glennbrandon@yahoo.com001-440-666-3025-47087Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ...health_fitness5.56DJFfraud_Kertzmann LLC
402021-02-01T01:50:02Z320001b97834be34480c980b0a4642dd35621-94-2645654019Christine34904 Mcknight TraceLookoutCA9605441.2347-121.2156Landscape architect34.81.146.70angela01@west-crawford.net339-101-6066-608Mozilla/5.0 (compatible; MSIE 7.0; Windows 95;...grocery_pos66.67SHPfraud_Strosin-Cruickshank
1002021-02-20T06:32:25Z3200042a5c87fc6a4deaaaa89a0e0242d6427-63-0844601131John876 Allen Radial Suite 181Berrien SpringsMI4910442.0016-86.7153Occupational hygienist98.220.30.208barbaraweber@yahoo.com1-574-620-8856-962Opera/8.50.(X11; Linux i686; si-LK) Presto/2.9...gas_transport71.04JPYfraud_Kuvalis Ltd
1902021-02-19T22:52:43Z3200074e24c31ac682ba923d55479f6c4b875-31-2708410203Donald71158 Nunez PrairieNiotazeKS6735537.0370-96.0121Claims inspector/assessor167.26.249.194cheryl71@gmail.com166-569-9093-78183Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ...grocery_pos117.56ZMWfraud_Auer-Mosciski
2402021-02-21T11:59:40Z320008ca5938879d420631ded657db933a253-45-3821474861Lance71873 Keith Inlet Suite 373DanevangTX7743229.0670-96.1976Education officer, community76.140.217.213nancy50@duarte-welch.com009-812-5189-511Opera/9.51.(Windows 95; nhn-MX) Presto/2.9.186...personal_care34.12KWDfraud_Walter, Hettinger and Kessler
\n", "
" ], "text/plain": [ " EVENT_LABEL EVENT_TIMESTAMP event_id entity_id card_bin customer_name billing_street billing_city billing_state billing_zip billing_latitude billing_longitude customer_job ip_address customer_email phone user_agent product_category order_price payment_currency merchant\n", "1 0 2021-02-14T06:16:48Z 32000062bdc7d46c86c5b5c367fc807ef0 741-72-9331 501882 Erica 727 Betty Inlet Grand River IA 50108 40.8137 -93.9544 Astronomer 208.171.245.202 glennbrandon@yahoo.com 001-440-666-3025-47087 Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ... health_fitness 5.56 DJF fraud_Kertzmann LLC\n", "4 0 2021-02-01T01:50:02Z 320001b97834be34480c980b0a4642dd35 621-94-2645 654019 Christine 34904 Mcknight Trace Lookout CA 96054 41.2347 -121.2156 Landscape architect 34.81.146.70 angela01@west-crawford.net 339-101-6066-608 Mozilla/5.0 (compatible; MSIE 7.0; Windows 95;... grocery_pos 66.67 SHP fraud_Strosin-Cruickshank\n", "10 0 2021-02-20T06:32:25Z 3200042a5c87fc6a4deaaaa89a0e0242d6 427-63-0844 601131 John 876 Allen Radial Suite 181 Berrien Springs MI 49104 42.0016 -86.7153 Occupational hygienist 98.220.30.208 barbaraweber@yahoo.com 1-574-620-8856-962 Opera/8.50.(X11; Linux i686; si-LK) Presto/2.9... gas_transport 71.04 JPY fraud_Kuvalis Ltd\n", "19 0 2021-02-19T22:52:43Z 3200074e24c31ac682ba923d55479f6c4b 875-31-2708 410203 Donald 71158 Nunez Prairie Niotaze KS 67355 37.0370 -96.0121 Claims inspector/assessor 167.26.249.194 cheryl71@gmail.com 166-569-9093-78183 Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ... grocery_pos 117.56 ZMW fraud_Auer-Mosciski\n", "24 0 2021-02-21T11:59:40Z 320008ca5938879d420631ded657db933a 253-45-3821 474861 Lance 71873 Keith Inlet Suite 373 Danevang TX 77432 29.0670 -96.1976 Education officer, community 76.140.217.213 nancy50@duarte-welch.com 009-812-5189-511 Opera/9.51.(Windows 95; nhn-MX) Presto/2.9.186... personal_care 34.12 KWD fraud_Walter, Hettinger and Kessler" ] }, "metadata": {}, "execution_count": 4 } ], "metadata": {} }, { "cell_type": "markdown", "source": [ "\n", "### Run Predictions \n", "-----\n", "\n", "The following session will call `getEventPrediction` API to score your records in your data frame. To specify the number of records to score, you can change the `record_count` to a specific number (e.g., if you want to just predict on say 5000 records). \n", "\n", "_**Note**: this solution uses the multiprocessing package to parallelize the get event prediction calls._\n", "\n", "
💡 Get Event Prediction API \n", "\n", "* **get_event_prediction**: Evaluates an event against a detector version. If a version ID is not provided, the detector’s (ACTIVE) version is used.\n", "\n", "
\n", "\n", "This is all you need to run prediction on one event: \n", "\n", "```python\n", "client.get_event_prediction(\n", " detectorId = DETECTOR_NAME, \n", " detectorVersionId = DETECTOR_VERSION,\n", " eventId = '222222',\n", " eventTypeName = event_type,\n", " eventTimestamp = '2020-07-27 12:01:01',\n", " entities = [{'entityType': entity_type, 'entityId':'11111'}],\n", " eventVariables = record)\n", "```\n", "\n", "\n", "Example of what a record would look like: \n", "\n", "```python\n", "record = [{'order_amt': '8036.0',\n", " 'ip_address': '192.18.59.93',\n", " 'email_address': 'synth_george_hayduke@example.com',\n", " 'cc_bin': '42785',\n", " 'billing_postal': '17740-2745',\n", " 'shipping_postal': '20950-6945',\n", " 'customer_name': 'Geroge Hayduke'}]\n", "```\n", "\n", "\n", "Since we are getting predictions in parallel here, we recommend you to ingest all events before calling the API in the testing phase, so that the aggregations (e.g. entity recency) will be correctly calculated. In the production environment, we call the getEventPrediction API in the order of time. Therefore, we recommend to enable the eventIngestion in production so that the subsequent events will be able to use the information to capture risk signal in real-time during inference." ], "metadata": {} }, { "cell_type": "code", "execution_count": 17, "source": [ "# -- get model info --\n", "response = client.get_detector_version(detectorId = DETECTOR_NAME, detectorVersionId = DETECTOR_VER)\n", "model_name = response['modelVersions'][0]['modelId']\n", "model_type = response['modelVersions'][0]['modelType']\n", "model_ver= response['modelVersions'][0]['modelVersionNumber']\n", "\n", "# -- get event type and related info --\n", "event_type = client.get_detectors(detectorId = DETECTOR_NAME)['detectors'][0]['eventTypeName']\n", "response = client.get_event_types(name = event_type)\n", "event_variables = response['eventTypes'][0]['eventVariables'] \n", "entity_type = response['eventTypes'][0]['entityTypes'][0]\n", "event_labels = client.get_event_types(name = event_type)['eventTypes'][0]['labels']\n", " \n", "response = client.get_event_types(name = event_type)\n", "print('Event Ingestion of eventType \"{0}\" has been {1}.'.format(event_type, response['eventTypes'][0]['eventIngestion']))" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Event Ingestion of eventType \"transaction\" has been DISABLED.\n" ] } ], "metadata": {} }, { "cell_type": "code", "execution_count": 22, "source": [ "%%time\n", "record_count = df_test.shape[0] # predict on all of the records\n", "#record_count = 5000 # predict on 5000 records\n", "\n", "def _predict(record):\n", " \"\"\"\n", " Get prediction on one event\n", " \"\"\"\n", " event_id = str(record[0])\n", " entity_id = str(record[1])\n", " event_timestamp = str(record[2])\n", " \n", " try:\n", " rec_content = {event_variables[i]: str(record[4:][i]) for i in range(len(event_variables)) if pd.isnull(record[4+i])==False}\n", " pred = client.get_event_prediction(\n", " detectorId = DETECTOR_NAME,\n", " detectorVersionId = DETECTOR_VER,\n", " eventId = event_id,\n", " eventTypeName = event_type,\n", " eventTimestamp = event_timestamp, \n", " entities = [{\n", " 'entityType': entity_type, \n", " 'entityId': entity_id\n", " }],\n", " eventVariables = rec_content) \n", " record.append(pred['modelScores'][0]['scores'][\"{0}_insightscore\".format(model_name)])\n", " record.append(pred['ruleResults'][0]['outcomes'])\n", " except:\n", " record.append(\"-999\")\n", " record.append([\"error\"])\n", " \n", " return record\n", "\n", "# -- get predictions in parallel -- \n", "cols_keep = [EVENT_ID_COL, ENTITY_ID_COL, TIMESTAMP_COL, LABEL_COL] + event_variables\n", "df_list = df_test.iloc[0:record_count]\n", "df_list = df_list[cols_keep].values.tolist()\n", "with Pool(processes = 5) as p:\n", " result = p.map(_predict, df_list)\n", "predictions = pd.DataFrame(result, columns = cols_keep + ['score', 'outcomes'])\n", "\n", "print ('Scored %d records' %len(predictions))" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Scored 23797 records\n", "CPU times: user 1.37 s, sys: 361 ms, total: 1.73 s\n", "Wall time: 18min 24s\n" ] } ], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Take a look at your predictions\n", "-----\n", "Each record will have a score and the outcome of any rule conditions met. " ], "metadata": {} }, { "cell_type": "code", "execution_count": 29, "source": [ "predictions.head()" ], "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
event_identity_idEVENT_TIMESTAMPEVENT_LABELcard_bincustomer_namebilling_streetbilling_citybilling_statebilling_zipbilling_latitudebilling_longitudecustomer_jobip_addresscustomer_emailphoneuser_agentproduct_categoryorder_pricepayment_currencymerchantscoreoutcomesscore_binscore_outcome
032000062bdc7d46c86c5b5c367fc807ef0741-72-93312021-02-14T06:16:48Z0501882Erica727 Betty InletGrand RiverIA5010840.8137-93.9544Astronomer208.171.245.202glennbrandon@yahoo.com001-440-666-3025-47087Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ...health_fitness5.56DJFfraud_Kertzmann LLC172.0['approve']170approve
1320001b97834be34480c980b0a4642dd35621-94-26452021-02-01T01:50:02Z0654019Christine34904 Mcknight TraceLookoutCA9605441.2347-121.2156Landscape architect34.81.146.70angela01@west-crawford.net339-101-6066-608Mozilla/5.0 (compatible; MSIE 7.0; Windows 95;...grocery_pos66.67SHPfraud_Strosin-Cruickshank2.0['approve']0approve
23200042a5c87fc6a4deaaaa89a0e0242d6427-63-08442021-02-20T06:32:25Z0601131John876 Allen Radial Suite 181Berrien SpringsMI4910442.0016-86.7153Occupational hygienist98.220.30.208barbaraweber@yahoo.com1-574-620-8856-962Opera/8.50.(X11; Linux i686; si-LK) Presto/2.9...gas_transport71.04JPYfraud_Kuvalis Ltd4.0['approve']0approve
33200074e24c31ac682ba923d55479f6c4b875-31-27082021-02-19T22:52:43Z0410203Donald71158 Nunez PrairieNiotazeKS6735537.0370-96.0121Claims inspector/assessor167.26.249.194cheryl71@gmail.com166-569-9093-78183Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ...grocery_pos117.56ZMWfraud_Auer-Mosciski13.0['approve']10approve
4320008ca5938879d420631ded657db933a253-45-38212021-02-21T11:59:40Z0474861Lance71873 Keith Inlet Suite 373DanevangTX7743229.0670-96.1976Education officer, community76.140.217.213nancy50@duarte-welch.com009-812-5189-511Opera/9.51.(Windows 95; nhn-MX) Presto/2.9.186...personal_care34.12KWDfraud_Walter, Hettinger and Kessler110.0['approve']100approve
\n", "
" ], "text/plain": [ " event_id entity_id EVENT_TIMESTAMP EVENT_LABEL card_bin customer_name billing_street billing_city billing_state billing_zip billing_latitude billing_longitude customer_job ip_address customer_email phone user_agent product_category order_price payment_currency merchant score outcomes score_bin score_outcome\n", "0 32000062bdc7d46c86c5b5c367fc807ef0 741-72-9331 2021-02-14T06:16:48Z 0 501882 Erica 727 Betty Inlet Grand River IA 50108 40.8137 -93.9544 Astronomer 208.171.245.202 glennbrandon@yahoo.com 001-440-666-3025-47087 Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ... health_fitness 5.56 DJF fraud_Kertzmann LLC 172.0 ['approve'] 170 approve\n", "1 320001b97834be34480c980b0a4642dd35 621-94-2645 2021-02-01T01:50:02Z 0 654019 Christine 34904 Mcknight Trace Lookout CA 96054 41.2347 -121.2156 Landscape architect 34.81.146.70 angela01@west-crawford.net 339-101-6066-608 Mozilla/5.0 (compatible; MSIE 7.0; Windows 95;... grocery_pos 66.67 SHP fraud_Strosin-Cruickshank 2.0 ['approve'] 0 approve\n", "2 3200042a5c87fc6a4deaaaa89a0e0242d6 427-63-0844 2021-02-20T06:32:25Z 0 601131 John 876 Allen Radial Suite 181 Berrien Springs MI 49104 42.0016 -86.7153 Occupational hygienist 98.220.30.208 barbaraweber@yahoo.com 1-574-620-8856-962 Opera/8.50.(X11; Linux i686; si-LK) Presto/2.9... gas_transport 71.04 JPY fraud_Kuvalis Ltd 4.0 ['approve'] 0 approve\n", "3 3200074e24c31ac682ba923d55479f6c4b 875-31-2708 2021-02-19T22:52:43Z 0 410203 Donald 71158 Nunez Prairie Niotaze KS 67355 37.0370 -96.0121 Claims inspector/assessor 167.26.249.194 cheryl71@gmail.com 166-569-9093-78183 Mozilla/5.0 (compatible; MSIE 5.0; Windows NT ... grocery_pos 117.56 ZMW fraud_Auer-Mosciski 13.0 ['approve'] 10 approve\n", "4 320008ca5938879d420631ded657db933a 253-45-3821 2021-02-21T11:59:40Z 0 474861 Lance 71873 Keith Inlet Suite 373 Danevang TX 77432 29.0670 -96.1976 Education officer, community 76.140.217.213 nancy50@duarte-welch.com 009-812-5189-511 Opera/9.51.(Windows 95; nhn-MX) Presto/2.9.186... personal_care 34.12 KWD fraud_Walter, Hettinger and Kessler 110.0 ['approve'] 100 approve" ] }, "metadata": {}, "execution_count": 29 } ], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Make a Histogram of Scores \n", "-----\n", "Check out the distrirbution of scores and outcomes." ], "metadata": {} }, { "cell_type": "code", "execution_count": 39, "source": [ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "# -- check score distribution --\n", "predictions['score_bin'] = pd.cut(predictions['score'], 100, labels = list(range(0,1000,10)))\n", "predictions['score_outcome'] = predictions['outcomes'].astype(str)\n", "ctab = pd.crosstab(predictions['score_bin'], predictions['score_outcome']).reset_index()\n", "outcome_ordered = pd.DataFrame(predictions.groupby(['score_outcome']).agg({'score':['mean', 'min','max']}))\n", "outcome_ordered.columns = ['avg_score','min_score','max_score']\n", "outcome_ordered = outcome_ordered.sort_values(by = 'avg_score').reset_index()\n", "\n", "plt.figure(figsize=(20,10))\n", "cm = plt.cm.Accent\n", "for i,oc in enumerate(outcome_ordered['score_outcome']):\n", " plt.bar(ctab['score_bin'], ctab[oc], width=7, color = cm(i/outcome_ordered.shape[0]), label = oc)\n", " plt.text((outcome_ordered['min_score'][i] + outcome_ordered['max_score'][i])/2, plt.axis()[3]*0.5, oc, ha=\"center\", fontsize=14)\n", " if i != 0:\n", " plt.axvline(x=(outcome_ordered['min_score'][i] + outcome_ordered['max_score'][i-1])/2, ls='--', linewidth = 2, c='grey')\n", " \n", "plt.legend(loc=\"upper right\")\n", "plt.title(\"Sample Data, Score Distribution\")\n", "plt.xlabel('Score')\n", "plt.ylabel('Frequency')\n", "plt.show()\n", "\n", "# -- check rules defined --\n", "print(\"-- rules --\")\n", "rules = client.get_detector_version(detectorId = DETECTOR_NAME, detectorVersionId = DETECTOR_VER)['rules']\n", "for r in rules:\n", " res = client.get_rules(detectorId = DETECTOR_NAME, ruleId = r['ruleId'], ruleVersion = r['ruleVersion'])\n", " print( res['ruleDetails'][0]['expression'], '-', res['ruleDetails'][0]['outcomes'][0])\n", " " ], "outputs": [ { "output_type": "display_data", "data": { "image/png": "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22yzMe0vYAIAAOgDixYtSmJkBhuHm2++Odtss02mTJmSqnrQx//ud79LkjzsYQ9b16WRpLWW2267LTfffHN23333MR0jYAIAAOgDF110URIBExuHP/zhDw85XEqSO+64I4mAabxUVR75yEdm+fLlYz7GXeQAAACA9e6hhkusHw/25yNgAgAAAKArpsgBAAAAPTV74eyHduDNazjfQQ98viVLluTxj398Hve4x+Wqq67KlClTsmTJkodWx3p20kkn5aSTTsqRRx6Z448/PhdffHHmzp2b5z//+T2ryQgmAAAAYKP02Mc+NlddddV6udaKFSvG5bzz58/Ps571rHE594MhYAIAAAA2ejvuuGOS5K677spTn/rUTJs2LU94whPypS99KcnQiKe99torJ554Yvbbb788//nPz913350kmTJlSk499dQcdNBBOeigg3LDDTckGRpp9KY3vSlHHXVUTj311Fx11VU55JBDst9+++U5z3lOfvOb3+Taa6/NQQcdNFzHkiVLst9++yUZurvkEUcckf333z/PeMYzsmzZsiTJdtttl80333y9vTdjIWACAAAANnrf+973kiRbbrllvvjFL2bx4sX55je/mTe/+c1prSVJrrvuusycOTM/+MEPsu222+ajH/3o8PHbbrttFi5cmNe+9rV5wxveMNx+/fXX55JLLsn73//+nHDCCXn3u9+dH/zgB3nCE56QOXPm5PGPf3z+9Kc/5Wc/+1mS5LzzzssLXvCC3HPPPXnd616XCy64IIsWLcrLX/7y/O3f/m2S5J/+6Z9y6KGHrqd3ZmwETAAAAH1g1qxZmTVrVq/LgI1eay1vf/vbs99+++VpT3tabrnllvzyl79Mkuy222457LDDkiQveclL8u1vf3v4uBe96EXD3y+//PLh9mOPPTabbrpp7rjjjtx+++054ogjkiQnnnhivvWtbyVJXvCCF+T8889PMhQwHXfccbnuuuvywx/+MH/+53+eqVOn5h3veEduvnkNi071AYt8AwAAAHTMnz8/y5cvz6JFi7LZZptlypQp+cMf/pAkqapV9h35fE2PH/awhz3gNY877rgce+yxee5zn5uqyh577JGrr746++yzzyphVT8zggkAAACg44477shOO+2UzTbbLN/85jfz85//fHjbL37xi+HA53Of+1wOP/zw4W3nnXfe8PcnP/nJ9zvvdtttl+233z7/+Z//mST5zGc+Mzya6bGPfWw23XTTnHHGGTnuuOOSJI973OOyfPny4evdc889ueaaa8bhFa8bRjABAAD0gblz5yZJZs6c2eNKYP2bfdDsB7X/8uXLk/zPwtzr0vHHH58ZM2bkgAMOyNSpU7PXXnsNb3v84x+fc889N6985Suzxx575NWvfvXwtj/+8Y85+OCDc9999+Vzn/vcqOc+99xz86pXvSp33313HvOYx+Tss88e3nbcccflrW99a2688cYkyeabb54LLrggr3/963PHHXdkxYoVecMb3pB99tlnnb/mdWHcA6aq2jTJlUluaa1Nr6pHJDkvyZQkS5K8oLX2m86+pyd5RZJ7k7y+tfbVTvv+Sc5JslWSLyc5pa1cYQsAAGADsPLuUMADu+eee8bt3DvssMOo09KWLFmSTTbZJB//+MdHPe41r3nN/dZRO+ecc1Z5PnXq1FxxxRWjHv+Wt7wlb3nLW+63/8p1mvrd+pgid0qSa0c8Py3JN1preyT5Rud5qmrvJC9Msk+SZyb5aCecSpKPJZmZZI/O1zPXQ90AAADABmrlwttTp07tdSldOf7443PZZZdlyy237Gkd4zqCqap2TfJXSc5M8qZO8zFJjuw8PjfJpUlO7bR/vrX2xyQ3VtUNSQ6qqiVJtm2tXd4556eTPDvJxeNZOwAAALDh2m233XLTTTeNef8pU6bkhz/84ajblixZso6qevDmz5/fs2uPNN4jmD6Y5G1J7hvR9qjW2rIk6XzfqdO+S5KRP9mbO227dB6v3n4/VTWzqq6sqitXzscEAAAAYHyNW8BUVdOT3NpaWzTWQ0Zpa2tpv39ja3Nbawe01g4Yj4W+AAAAALi/8Zwid1iSZ1XVXybZMsm2VfXZJL+sqkmttWVVNSnJrZ39b06y24jjd02ytNO+6yjtAAAAAPSBcRvB1Fo7vbW2a2ttSoYW7/5/rbWXJLkwyYmd3U5M8qXO4wuTvLCqtqiq3TO0mPfCzjS6O6vqkKqqJCeMOAYAAGCDMG3atEybNq3XZcBA2HrrrbP11lv3ugxGGNdFvtfgXUnOr6pXJPlFkmOTpLV2TVWdn+RHSVYkeU1r7d7OMa9Ock6SrTK0uLcFvgEAgA3KjBkzel0C9Mx9l73zQe2/7crj1rB9kyNOf8BzLFmyJI9//OPzuMc9LldddVWmTJmSJUuWZOnSpXn961+fCy644EHV9FCcc845efrTn57JkycnSf76r/86b3rTm7L33ns/6HNdeuml2XzzzXPooYc+4DWXLFmS2bNn56yzzspZZ52VZz3rWfnwhz/8kF7DSuslYGqtXZqhu8WltXZbkqeuYb8zM3THudXbr0yy7/hV2L9mL5y99u0HrX07AAAAMLrHPvaxueqqq1Zpmzx58noJl5KhsGffffcdDpg++clPPuRzXXrppZk4ceIDBkwjvfGNb8z222+fK6+88iFfd6XxvoscAAAAY7B06dIsXWq5WeiVlTcLW7JkSfbdd2iMyznnnJPnPve5eeYzn5k99tgjb3vb25IkH/vYx4Yfr9zvda97XZLks5/9bA466KBMnTo1r3zlK3Pvvffm3nvvzUknnZR99903T3jCE3LWWWflggsuyJVXXpnjjz8+U6dOze9///sceeSRw2HPv/zLv2TPPffMkUcemZNPPjmvfe1rkyQLFizIwQcfnCc96Ul52tOell/+8pdZsmRJPv7xj+ess87K1KlT85//+Z9Zvnx5nve85+XAAw/MgQcemO985ztJkq222ioTJ05c5+9fL6bIAQAAsJp58+YlSWbNmtXjSmDj9L3vfW/U9quuuir/9V//lS222CKPe9zj8rrXvS7Pf/7z8+QnPznvec97kiTnnXde/vZv/zbXXnttzjvvvHznO9/JZpttlr/5m7/J/Pnzs88+++SWW27JD3/4wyTJ7bffnoc//OH58Ic/nPe973054IADVrnm0qVLc8YZZ2Tx4sXZZpttcvTRR+eJT3xikuTwww/PFVdckarKJz/5ybznPe/J+9///rzqVa/KxIkT85a3vCVJ8uIXvzhvfOMbc/jhh+cXv/hFnvGMZ+Taa6/NcccdNy7vn4AJAAAAYA2e+tSnZrvttkuS7L333vn5z3+eww8/PI95zGNyxRVXZI899sh1112Xww47LB/5yEeyaNGiHHjggUmS3//+99lpp50yY8aM/OxnP8vrXve6/NVf/VWe/vSnr/WaCxcuzBFHHJFHPOIRSZJjjz02119/fZLk5ptvznHHHZdly5blT3/6U3bfffdRz3HJJZfkRz/60fDz3/72t7nzzjuzzTbbdP2ejEbABAAAALAGW2yxxfDjTTfdNCtWrEiSHHfccTn//POz11575TnPeU6qKq21nHjiiXnnO++/aPn3v//9fPWrX81HPvKRnH/++fnUpz61xmu21ta47XWve13e9KY35VnPelYuvfTSzJ49e9T97rvvvlx++eXZaqutxvhKu2MNJgAAAIAH6bnPfW7+4z/+I5/73OeGp5099alPzQUXXJBbb701SfLrX/86P//5z/OrX/0q9913X573vOcNT31Lkm222SZ33nnn/c590EEH5bLLLstvfvObrFixIl/4wheGt91xxx3ZZZddkiTnnnvucPvq53r605++yp3hVl/MfF0zggkAAADoqU2OOP1B7b9yQfyVd1/rhe233z577713fvSjH+Wggw5KMjSF7h3veEee/vSn57777stmm22Wj3zkI9lqq63yspe9LPfdd1+SDI9wOumkk/KqV70qW221VS6//PLhc++yyy55+9vfnoMPPjiTJ0/O3nvvPTxNb/bs2Tn22GOzyy675JBDDsmNN96YJJkxY0ae//zn50tf+lL++Z//OR/60Ifymte8Jvvtt19WrFiR//2//3c+/vGPj9v7UWsbdjXIDjjggLYubrPXa7MXzl779oPWvh0AABgMc+bMSWKRbzYO1157bR7/+Mc/5OPXRcC0ZMmSTJ8+fXjh7X5z1113ZeLEiVmxYkWe85zn5OUvf3me85znrPPrnHPOObnyyitXGe200mg/p6pa1Fo7YPV9TZEDAAAANjqbbrpp7rjjjkydOrXXpYxq9uzZmTp1avbdd9/svvvuefazn73Or3HWWWflne98Z7bddtuuz2WKHAAAQB84+eSTe10CDIwddtih63Pstttuuemmm9ZBNePjfe9737hf441vfGPe+MY3rpNzCZgAAAD6QC/XkoFBs/nmm/e6BFZjihwAAAAAXREwAQAA9IEFCxZkwYIFvS4DBsLtt9+e22+/vddlMIKACQAAoA8sXrw4ixcv7nUZMBDuvvvu3H333b0ugxGswQQAAAD01B2bzn5Q+z9s5XFr2L7dvQ/ufHTPCCYAAABgo7NkyZJstdVWmTp1apJkypQpw9ve+ta3Zp999slb3/rWdX7dc845J6997WuTJLNnz84555wzfM2dd955vdw9bjwYwQQAAABslB772Mfmqquuul/7Jz7xiSxfvjxbbLHFKu0rVqzIhAnjE6W8973vzcMe9rAH3rFPGcEEAAAAbPR23HHHJMmznvWs/O53v8vBBx+c8847LyeddFLe9KY35aijjsqpp56ahQsX5tBDD82TnvSkHHroobnuuuuSrDoyKUmmT5+eSy+9NEly9tlnZ88998wRRxyR73znO8P7TJw4MVtttdX6e5HjyAgmAAAAYKP3ve99L0ly4YUXZuLEicMjmy6++OJcf/31ueSSS7Lpppvmt7/9bb71rW9lwoQJueSSS/L2t789X/jCF9Z43mXLlmXWrFlZtGhRtttuuxx11FF50pOelCR5y1veMu6va30RMAEAAPSBSZMm9boEYA2OPfbYbLrppkmSO+64IyeeeGJ+8pOfpKpyzz33rPXY7373uznyyCOHR0gdd9xxuf7668e95vVNwAQAANAHZs6c2esSgDUYuTbS//k//ydHHXVUvvjFL2bJkiU58sgjkyQTJkzIfffdN7zfH/7wh+HHVbXeau0VARMAAADQU9vdO7vXJYzZHXfckV122SVJhu8Alwzdhe6jH/1o7rvvvtxyyy1ZuHBhkuTggw/OKaeckttuuy3bbrtt/u3f/i1PfOITe1H6uBIwAQAAAIzR2972tpx44on5wAc+kKOPPnq4/bDDDsvuu++eJzzhCdl3330zbdq0JEPTX2fPnp0nP/nJmTRpUqZNm5Z77723V+WPGwETAABAH5gzZ06SZNasWT2uBPrf0qVLkySTJ08el/Pfddddw49HjlJKkic/+cmrrKF0xhlnJBmaBjd//vxRz/eyl70sL3vZy9Z9oX1kk14XAAAAALC+bbrpprnjjjsyderUXpeSJHnrW9+az372s6us9zRIjGACAAAA1rvWWk8Xv95tt91y00039ez6q3vve9+b9773vb0uY1hr7UHtbwQTAAAAsF5tueWWue222x50iMH60VrLbbfdli233HLMxxjBBAAAAKxXu+66a26++eYsX778IR1/++23Jxm6oxvjY8stt8yuu+465v0FTAAAAMB6tdlmm2X33Xd/yMdbFL//mCIHAAAAQFeMYAIAAOgD06dP73UJMDD0l/4jYAIAAOgD+++/f69LgIGhv/QfU+QAAAAA6IqACQAAoA8sWrQoixYt6nUZMBD0l/5jihwAAEAfuOiii5KY+gNjob/0HyOYAAAAAOiKgAkAAACArgiYAAAAAOiKgAkAAACArgiYAAAAAOiKgAkAAACArkzodQEAAAAks2bN6nUJMDD0l/5jBBMAAAAA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QP8b6xpM+1XVWUmuTXJ0khmttcd3Hp81jvUBAAAA0OfGehe5DyeZl+TtrbXfr2xsrS2tqr8bl8oAAAAAGAhjDZj+MsnvW2v3JklVbZJky9ba3a21z4xbdQAAAAD0vbGuwXRJkq1GPN+60wYAAADARm6sI5i2bK3dtfJJa+2uqtp6nGoCAADY6EyaNKnXJcDA0F/6z1gDpt9V1bTW2uIkqar9k/z+AY4BAABgjGbOnNnrEmBg6C/9Z6wB0xuS/FtVLe08n5TkuHGpCAAAAICBMqaAqbX2varaK8njklSSH7fW7hnXygAAAAAYCGMdwZQkByaZ0jnmSVWV1tqnx6UqAACAjcycOXOSJLNmzepxJdD/9Jf+M6a7yFXVZ5K8L8nhGQqaDkxywDjWBQDr3ZFHHpmqSlXliiuu6HU5fWPlezJx4sRelwLAgHqgz9glS5akqnLllVf2oLoHZ/bs2dl33317XcYabSyf22effXZmz5691r/bvvOd72S//fbL5ptvniOPPHL9Ftix7777Zvbs2WvcviH9vMYUMGUoTDqstfY3rbXXdb5eP56FAUAvvOxlL8uyZcuy//77Jxn60F+yZElvi1rPpkyZkksvvXT4+bJly/LBD36wZ/UAsGFY22fsbrvtlmXLlmXq1Km9K3A1awq93vKWt+Syyy5bL9cai435c3vq1Klr/bvtlFNOyROf+MT89Kc/zb//+7/3qMpVbcg/r7EGTD9MsvN4FgIA/WDrrbfOzjvvnM0226zXpaziT3/6U8+uvfPOO2e77bbr2fUB2DCs7TN20003zc4775wJEx7MKi69MXHixDzykY/sdRlrtDF9bm+22WZr/bvthhtuyNFHH53ddtstj3jEI0bd5557eru89Ib08xprwLRDkh9V1Ver6sKVX+NZGAD0m3vvvTeveMUrsvvuu2errbbKHnvskfe85z257777hvc56aSTMn369LzjHe/Iox71qEycODEve9nL8vvf/354nyOPPDKvetWrcsopp2T77bfP9ttvn7e+9a2rnGfKlCmZPXt2Xv7yl+fhD394jj/++CTJv//7v+cJT3hCtthii+y2224588wz01pLkpx++unD/4M30qGHHppTTjll+PnZZ5+dvffeO1tuuWX23HPPnHXWWatcGwDWt9VH8Fx66aWpqnzjG9/IwQcfnK233joHHHBAFi9enCS54447stVWW2XBggWrnOdrX/taNttss9x6661JkltuuSUvfOELhz9v/+qv/io/+clPhve/6aabcswxx+QRj3hEtt566+y11175/Oc/nyTZfffdkyQHHnhgqmp4itXqU+RWrFiRN77xjcPXeOMb35hXv/rVq0zJ+spXvpKnPOUp2X777fOIRzwiz3jGM3LttdcOb1/TtRKf2w/Fyt+nO+64Iy9/+ctTVTnnnHOGf6++/OUv56CDDsrmm2+er371q/npT3+aY445JjvvvHMe9rCHZdq0abnoootWOeeUKVPyvve9b5W2I488Mq997WuHn99666055phjstVWW+XRj350PvWpT62X19svxhowzU7y7CT/mOT9I74AYKNx3333ZZdddsn555+fa6+9NmeeeWb+8R//MWefffYq+1122WX5/ve/n2984xv5whe+kK997Ws59dRTV9ln/vz5ue+++3L55ZfnE5/4RObOnXu/4dEf+MAHstdee+XKK6/MP/7jP2bRokU59thj89znPjdXX3113vWud+Wd73xnPvzhDydJXvrSl2bx4sX58Y9/PHyOG2+8MZdffnle8pKXJEnmzZuXt7/97fmHf/iHXHvttXn/+9+fd7/73fnoRz86Du8YAHTn9NNPz7ve9a4sXrw4j3zkI3P88centZbtttsu06dPz/z581fZf/78+Xn605+enXbaKXfffXeOOuqobLnllrnsssty+eWXZ9KkSXna056Wu+++O0nyN3/zN7n77rvzzW9+M9dcc00++MEP5uEPf3iSZOHChUmGwqFly5atcYrV+973vpxzzjn55Cc/mSuuuCL33Xdf/vVf/3WVfX73u9/lDW94QxYuXJhLL7002223XWbMmDE8QnlN1/K5/dCsnHK59dZb54Mf/GCWLVuW4447bnj7qaeemne84x358Y9/nIMPPjh33XVX/uIv/iJf//rX8/3vfz/Pe97z8tznPneVv6nG4qSTTsoNN9yQSy65JP/xH/+RT3/60xvVUgtjGn/YWrusqh6dZI/W2iVVtXWSTce3NADovZWjg5KhYdj/8A//MPx8ypQpWbx4cT73uc/lFa94xXD7pptumrPPPjsTJ07Mvvvum3e/+915xStekXe+85152MMeliSZNGlSPvShD6Wqstdee+X666/PBz7wgbzpTW8aPs8RRxyRt73tbcPPjz/++BxxxBHDd03Zc88985Of/CTvfve787rXvS577713pk6dmvnz5+eMM85IMvSH9p577pkDDzwwSXLGGWfkPe95T57//OcnGfof09NOOy0f/ehHh/8HbmP6QwiA3hn5GbsmZ5xxRo466qgkyd///d/n8MMPzy233JJdd901L3nJS/KiF70od955Z7bZZpv8/ve/zxe/+MV84hOfSJJ8/vOfT2stZ599dqoqSfKJT3wiO+20Uy666KK84AUvyM9//vM873nPyxOf+MQk/zOSKEl23HHHJMkjH/nI7LzzmleM+ad/+qeceuqped7znpck+eAHP5ivfvWrq+yzcttKZ599drbddtssXLgwhx9++Bqv5XP7wRn5O7XzzjunqrLddtvd7+c3e/bsPP3pTx9+vuOOOw7/DiTJ3/7t32bBggW54IIL8nd/93djuvb111+fiy++ON/+9rdz2GGHJUnOPffcPOYxj1llvw355zXWu8idnOSCJJ/oNO2S5D/GqSYA6Fsf//jHc8ABB2THHXfMxIkTc9ZZZ+UXv/jFKvvst99+q9wJ5MlPfnL+9Kc/5ac//elw2yGHHDL8x+7KfW655Zb89re/HW474IBVb9h67bXXDv/BstLKP7RXHveSl7xklf81nT9//vDopeXLl+emm27KK1/5ykycOHH467TTTlulNgB6Y/r06Zk+fXqvy+gr++233/DjyZMnJ8nw9Le//Mu/zNZbb50vfvGLSZILL7wwrbUcc8wxSZJFixblxhtvzDbbbDP8mbfddtvlN7/5zfDn3imnnJJ3vOMdefKTn5y/+7u/y6JFix5UfXfccUf++7//OwcddNBwW1UN/8fOSj/96U/z4he/OI997GOz7bbb5lGPelTuu++++/0NMZLP7bV75CMfmSlTpjykY1f/G+t3v/td3va2t2XvvffO9ttvn4kTJ+bKK69c689ndddee2022WSTVX4XHv3oRw//3m4MxrqC2muSHJTku0nSWvtJVe00blUBQB8677zz8oY3vCHve9/7cuihh2bbbbfNRz7ykeE/bNe1laOdVmqtrRJKjbSy/cUvfnHe9ra35fLLL88WW2yRH//4x8PrN61cr+HjH/94Dj300HGpGYCHbrR19DZ2IxdvXvlZt/LzbLPNNsuxxx6b+fPn54QTTsj8+fPz3Oc+N1tvvfXwflOnTh1eU2mklQs+v+IVr8gznvGMfPnLX84ll1ySQw89NKeffvpabys/mjV9Pq80Y8aM7LLLLvnEJz6RXXbZJRMmTMjee++91pt4+Nxeu2222SY77fTQYonV/8Z6y1vekq985St53/velz322CNbb711TjjhhFV+Pptsssn9Rt2NXCB8LCPyNnRjDZj+2Fr708pOU1UTknj3ANiofPvb387BBx+8ymKOo/0P4tVXX53f/e53w3+8XHHFFdl8883z2Mc+dnif7373u6sERldccUUmT56cbbfddo3X33vvvfPtb3/7fjXtuuuu2WabbZIMTb07+uijM3/+/GyxxRY59NBDh4dmP+pRj8ouu+ySn/70pznhhBMe4rsAAP3jJS95SY444oj86Ec/yle+8pX83//7f4e3TZs2LZ/73Oeyww47DK+rNJpdd901M2fOzMyZM/Pud787//RP/5TZs2dn8803TzJ0k481WTn9auHChcNT+Vpr+d73vjc8Leu2227Ltddem4985CPD+yxevDgrVqwYPs9o1/K5vf58+9vfzgknnDA8lfEPf/hDfvrTn2bPPfcc3mfHHXfMsmXLhp//4Q9/yI9//OM86UlPSpI8/vGPz3333Zfvfe97w4HgL37xiyxdunQ9vpLeGusi35dV1duTbFVVf57k35IseIBjAGCDsueee2bx4sW5+OKL85Of/CRnnHFGLrvssvvtt2LFirz85S/PNddck69//es57bTTcvLJJ6/yv2VLly7NG97whlx33XW54IIL8t73vjdvfOMb13r9N7/5zbnssssye/bsXH/99Zk/f37e//73r7JOUzL0x/Z5552Xz3/+88PT41aaPXt23vOe9+Sss87Kddddlx/+8If59Kc/nXe+851dvDMArAuLFi160FO0NnaHHXZYHv3oR+fFL35xdthhhxx99NHD244//vg86lGPyjHHHJPLLrssN954Y771rW/lzW9+8/Cd5E455ZR85Stfyc9+9rNcddVV+cpXvpK99947SbLTTjtlq622yle/+tX88pe/zB133DFqDaecckre85735Itf/GKuu+66vPnNb86yZcuG/xNp++23zw477JB58+blhhtuyGWXXZZXvepVmTDhf8Z7rOlaPrfX7M477xyeLtmtPffcM1/84hezePHiXH311XnJS16SP/zhD6vss/I/8C699NJcc801efnLX77KCKbHPe5xeeYzn5lXvvKVufzyy3PVVVflpJNOylZbbbVOahwEYw2YTkuyPMnVSV6Z5MtJxrbSFQBsIF75ylfmBS94QV784hfnwAMPzJIlS/LmN7/5fvsdccQR2WeffXLUUUflOc95To4++ui85z3vWWWf448/Pvfee28OPvjgnHzyyXnFK17xgAHTtGnT8m//9m/5whe+kH333TennXZaTjvttFVGVCVDC4nefffdWb58eV7wghessu2v//qv86lPfSqf+cxn8sQnPjFPecpTMnfu3FUWNQWgNy666KL73RqdB3b88cfn+9//fl70ohdl003/515UW2+9db71rW/lMY95TI499tjstddeOfHEE/Ob3/wm22+/fZKhaWgrb5Tx53/+53nUox6Vc889N0kyYcKEfOhDH8onP/nJTJ48eXhtp9W95S1vyUtf+tK87GUvyyGHHJIkec5znpMtt9wyydDUqvPOOy8/+MEPsu++++Y1r3lNzjjjjGyxxRbD51jTtXxur9ltt922zhbM/sAHPpCddtopT3nKU/IXf/EXOeSQQ/KUpzxllX1OP/30HH300TnmmGPy9Kc/PYcffnimTZu2yj7nnHNOdt999xx99NGZMWNGXvziFz/kdaIGUW2o8wQPOOCAduWVV/a6jK7NXjh77dsPWvt2AMbuyCOPzL777psPf/jDD/kcJ510Un71q1+t9R8I6+I669s555yT1772tbnrrrt6XQrABmvlXUJnzZrV40rWvUH87OvGtGnTcthhh+Wf//mfe3L9jeFze8qUKdlpp52ycOHCXpfStUH7eVXVotbaAau3j2kNpqq6MaOsudRae8wouwPAwJo7d27OOeecfPOb37zfHWA2VhMnTsyKFStWGcoPAA/WhvoZ+/Of/zxf/epXc8QRR2TFihWZO3duvv/972fu3Lk9qWdj+txetGhRJk6cONC/UxvSz2usr2BkMrVlkmOTPGLdlwMAvTN//vz8/ve/T5LstttuPa6mf1x11VVJhob4A8BDsSF/xm6yySb59Kc/nbe+9a257777svfee+fiiy/OAQfcb4DHerGxfG4/73nPyz333JPXv/71A/07tSH9vMYUMLXWblut6YNV9e0kf7/uSwKA3thll126Psc555zzgPtceumlXV9nffpf/+t/9boEAAbcuviM7Ve77bbb/e7y2ksb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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } }, { "output_type": "stream", "name": "stdout", "text": [ "-- rules --\n", "$transaction_model_insightscore > 950 - fraud\n", "$transaction_model_insightscore > 750 - investigate\n", "$transaction_model_insightscore <= 750 - approve\n" ] } ], "metadata": { "scrolled": false } }, { "cell_type": "markdown", "source": [ "### Take a look at your prediction outcomes\n", "-----\n", "Let's check the model performance and the potential impact from actions." ], "metadata": {} }, { "cell_type": "code", "execution_count": 40, "source": [ "# -- check the distribution by Label --\n", "plt.figure(figsize=(20,10))\n", "np.warnings.filterwarnings('ignore', category=np.VisibleDeprecationWarning)\n", "plt.hist([predictions[predictions[LABEL_COL]==0]['score'], \n", " predictions[predictions[LABEL_COL]==1]['score']], bins = 50)\n", "plt.legend([\"Legit\", \"Fraud\"])\n", "plt.title(\"Predicted Score Distribution By Label\")\n", "plt.xlabel(\"Predicted Score\")\n", "plt.ylabel(\"Frequency\")\n", "plt.text\n", "plt.show()" ], "outputs": [ { "output_type": "display_data", "data": { "image/png": "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9Bs4O5P/jj+YUYj47eHxumTqawQAuKe6+xB9AACYH6rqCRkNlVs69IADAOYpPZgAAJh3qmrbJC9L8k7hEgDMfwImAADmlWHuqh9kNBTxzXNaDAAwLYbIAQAAANBFDyYAAAAAuiya6wJmyu67796WLl0612UAAAAAbDEuvvji77bW9pjYvsUGTEuXLs3KlSvnugwAAACALUZV/fdk7YbIAQAAANBFwAQAAABAFwETAAAAAF222DmYAAAAAHr85Cc/yZo1a3LLLbfMdSmzbrvttsuSJUuy7bbbTmt7ARMAAADAJNasWZMdd9wxS5cuTVXNdTmzprWW66+/PmvWrMm+++47rX0MkQMAAACYxC233JIHPvCBW1W4lCRVlQc+8IGb1HNLwAQAAACwAVtbuLTepr5vARMAAAAAXczBBAAAADANS086e7Meb/WK5RvdZocddshNN93UdZ61a9fmpS99ac4888ysWrUqa9euzTOe8YyuY06kBxMAAADAFmzvvffOmWeemSRZtWpVPvWpT232cwiYAAAAABaQ//qv/8qRRx6Zww8/PI9//OPzzW9+8672I444Io961KPyqle9KjvssEOSZPXq1TnooINy22235VWvelU+/OEP55BDDsmHP/zhzVaTgAkAAABgATnhhBPyt3/7t7n44ovz+te/Pi960YuSJC972cvyspe9LBdddFH23nvve+x33/veN3/5l3+ZY489NqtWrcqxxx672WoyBxMAAADAAnHTTTflC1/4Qo455pi72m699dYkyQUXXJBPfOITSZLnPOc5+ZM/+ZNZq0vABAAAALBA3Hnnndlll12yatWquS7lbgyRAwAAAFggdtppp+y77775yEc+kiRpreWrX/1qkuSII47IRz/60STJ6aefPun+O+64Y2688cbNXpceTAAAAADTsHrF8lk/549//OMsWbLkrtd/9Ed/lNNOOy0nnnhiXve61+UnP/lJjjvuuBx88MF585vfnOc+97l5wxvekOXLl2fnnXe+x/Ge/OQnZ8WKFTnkkEPyile8YrPNwyRgAgAAAJin7rzzzknbP/3pT9+jbfHixfniF7+Yqsrpp5+eZcuWJUmWLl2ar3/960mS3XbbLRdddNFmr1PABAAAALAFuPjii/OSl7wkrbXssssuefe73z1r5xYwAQAAAGwBHv/4x981H9NsM8k3AAAA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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ], "metadata": {} }, { "cell_type": "code", "execution_count": 41, "source": [ "# -- check AUC --\n", "fpr, tpr, threshold = roc_curve(predictions[LABEL_COL],predictions['score'])\n", "test_auc = auc(fpr,tpr)\n", "\n", "fig = plt.figure(figsize=(8,8))\n", "plt.plot(fpr,tpr,label=f\"AUC: {test_auc:.2f}\")\n", "plt.title(\"ROC Curve\")\n", "plt.xlabel('False Positive Rate (FPR)')\n", "plt.ylabel('True Positive Rate (FPR)')\n", "plt.legend()\n", "plt.show()" ], "outputs": [ { "output_type": "display_data", "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ], "metadata": {} }, { "cell_type": "code", "execution_count": 42, "source": [ "# -- check outcome summary --\n", "predictions['outcomes'] = predictions['outcomes'].astype(str)\n", "pred_summary = predictions.groupby(['outcomes'])['score'].agg(['mean', 'count']).reset_index()\n", "pred_summary['pct_total'] = pred_summary['count']/predictions.shape[0]\n", "pred_summary" ], "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
outcomesmeancountpct_total
0['approve']147.907265217070.912174
1['fraud']992.6076238920.037484
2['investigate']838.05509211980.050342
\n", "
" ], "text/plain": [ " outcomes mean count pct_total\n", "0 ['approve'] 147.907265 21707 0.912174\n", "1 ['fraud'] 992.607623 892 0.037484\n", "2 ['investigate'] 838.055092 1198 0.050342" ] }, "metadata": {}, "execution_count": 42 } ], "metadata": {} }, { "cell_type": "code", "execution_count": 43, "source": [ "# -- check confusion matrix --\n", "def model_confusion_matrix(predictions):\n", " \n", " fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(20, 5))\n", " \n", " print(\"Confusion Matrix by Outcomes:\")\n", " confusion_matrix = pd.crosstab(predictions[LABEL_COL], predictions['outcomes'].astype(str), margins=True, rownames=['Actual'], colnames=['Predicted'])\n", " confusion_matrix_pct = pd.crosstab(predictions[LABEL_COL], predictions['outcomes'].astype(str), normalize=\"all\", margins=True,rownames=['Actual'], colnames=['Predicted']).round(3)\n", " sns.heatmap(confusion_matrix, annot=True, fmt='g',cmap=\"YlGnBu\", ax=ax1)\n", " sns.heatmap(confusion_matrix_pct, annot=True, fmt='g',cmap=\"YlGnBu\", ax=ax2)\n", " \n", " ax1.title.set_text('Counts')\n", " ax2.title.set_text('Percentage')\n", " \n", " cnt_actual = len(set(predictions[LABEL_COL]))\n", " cnt_outcome = len(set(predictions['outcomes']))\n", " ax1.hlines([cnt_actual], *ax2.get_xlim(), color = 'grey', ls ='--')\n", " ax1.vlines([cnt_outcome], *ax2.get_xlim(), color = 'grey', ls ='--')\n", " ax2.hlines([cnt_actual], *ax2.get_xlim(), color = 'grey', ls ='--')\n", " ax2.vlines([cnt_outcome], *ax2.get_xlim(), color = 'grey', ls ='--')\n", " plt.show()\n", " \n", " \n", "model_confusion_matrix(predictions)" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Confusion Matrix by Outcomes:\n" ] }, { "output_type": "display_data", "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Write Predictions to File\n", "\n", "-----\n", "Writing out predictions to a file allows you to analyze with other tools like QuickSight \n", "\n", "```python\n", "\n", "# -- optionally write predictions to a CSV file -- \n", "predictions.to_csv(FILE + \".csv\", index=False)\n", "# -- or to a XLS file \n", "predictions.to_excel(FILE + \".xlsx\", index=False)\n", "\n", "```" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} } ], "metadata": { "kernelspec": { "display_name": "conda_mxnet_p36", "language": "python", "name": "conda_mxnet_p36" }, "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.13" } }, "nbformat": 4, "nbformat_minor": 4 }