{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Integrate Ray AIR with Feast feature store" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# !pip install feast==0.20.1 ray[air]>=1.13 xgboost_ray" ] }, { "cell_type": "markdown", "metadata": { "id": "INyNIaeB1Kza" }, "source": [ "In this example, we showcase how to use Ray AIR with Feast feature store, leveraging both historical features for training a model and online features for inference.\n", "\n", "The task is adapted from [Feast credit scoring tutorial](https://github.com/feast-dev/feast-aws-credit-scoring-tutorial). In this example, we train a xgboost model and run some prediction on an incoming loan request to see if it is approved or rejected. " ] }, { "cell_type": "markdown", "metadata": { "id": "sBC9CCrpzQLF" }, "source": [ "Let's first set up our workspace and prepare the data to work with." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "DcPIskZlzSal" }, "outputs": [], "source": [ "import os\n", "WORKING_DIR = os.path.expanduser(\"~/ray-air-feast-example/\")\n", "%env WORKING_DIR=$WORKING_DIR" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "BcyCKjV3zTCK", "outputId": "afdfa24d-e5ce-49db-c904-e961e1eb910c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2022-06-02 14:22:50-- https://github.com/ray-project/air-sample-data/raw/main/air-feast-example.zip\n", "Resolving github.com (github.com)... 192.30.255.113\n", "Connecting to github.com (github.com)|192.30.255.113|:443... connected.\n", "HTTP request sent, awaiting response... 302 Found\n", "Location: https://raw.githubusercontent.com/ray-project/air-sample-data/main/air-feast-example.zip [following]\n", "--2022-06-02 14:22:50-- https://raw.githubusercontent.com/ray-project/air-sample-data/main/air-feast-example.zip\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.108.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 23715107 (23M) [application/zip]\n", "Saving to: ‘air-feast-example.zip’\n", "\n", "air-feast-example.z 100%[===================>] 22.62M 114MB/s in 0.2s \n", "\n", "2022-06-02 14:22:51 (114 MB/s) - ‘air-feast-example.zip’ saved [23715107/23715107]\n", "\n", "Archive: air-feast-example.zip\n", " creating: air-feast-example/\n", " creating: air-feast-example/feature_repo/\n", " inflating: air-feast-example/feature_repo/.DS_Store \n", " extracting: air-feast-example/feature_repo/__init__.py \n", " inflating: air-feast-example/feature_repo/features.py \n", " creating: air-feast-example/feature_repo/data/\n", " inflating: air-feast-example/feature_repo/data/.DS_Store \n", " inflating: air-feast-example/feature_repo/data/credit_history_sample.csv \n", " inflating: air-feast-example/feature_repo/data/zipcode_table_sample.csv \n", " inflating: air-feast-example/feature_repo/data/credit_history.parquet \n", " inflating: air-feast-example/feature_repo/data/zipcode_table.parquet \n", " inflating: air-feast-example/feature_repo/feature_store.yaml \n", " inflating: air-feast-example/.DS_Store \n", " creating: air-feast-example/data/\n", " inflating: air-feast-example/data/loan_table.parquet \n", " inflating: air-feast-example/data/loan_table_sample.csv \n" ] } ], "source": [ "! mkdir -p $WORKING_DIR\n", "! wget --no-check-certificate https://github.com/ray-project/air-sample-data/raw/main/air-feast-example.zip\n", "! unzip air-feast-example.zip \n", "! mv air-feast-example/* $WORKING_DIR\n", "%cd $WORKING_DIR" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "iNbC-Qqi3Lq_", "outputId": "99576086-12dd-4f96-fb51-de40b77b15ce" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data feature_repo\n" ] } ], "source": [ "! ls" ] }, { "cell_type": "markdown", "metadata": { "id": "c_3wlEus4dYO" }, "source": [ "There is already a feature repository set up in `feature_repo/`. It isn't necessary to create a new feature repository, but it can be done using the following command: `feast init -t local feature_repo`.\n", "\n", "Now let's take a look at the schema in Feast feature store, which is defined by `feature_repo/features.py`. There are mainly two features: zipcode_feature and credit_history, both are generated from parquet files - `feature_repo/data/zipcode_table.parquet` and `feature_repo/data/credit_history.parquet`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5VGLhPLLzlGW", "outputId": "a3f3499e-c140-4ceb-a66d-2f1a6b8a2142" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36mdatetime\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m timedelta\n", "\n", "\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36mfeast\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m (Entity, Field, FeatureView, FileSource, ValueType)\n", "\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36mfeast\u001b[39;49;00m\u001b[04m\u001b[36m.\u001b[39;49;00m\u001b[04m\u001b[36mtypes\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m Float32, Int64, String\n", "\n", "\n", "zipcode = Entity(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mzipcode\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, value_type=Int64)\n", "\n", "zipcode_source = FileSource(\n", " path=\u001b[33m\"\u001b[39;49;00m\u001b[33mfeature_repo/data/zipcode_table.parquet\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", " timestamp_field=\u001b[33m\"\u001b[39;49;00m\u001b[33mevent_timestamp\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", " created_timestamp_column=\u001b[33m\"\u001b[39;49;00m\u001b[33mcreated_timestamp\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", ")\n", "\n", "zipcode_features = FeatureView(\n", " name=\u001b[33m\"\u001b[39;49;00m\u001b[33mzipcode_features\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", " entities=[\u001b[33m\"\u001b[39;49;00m\u001b[33mzipcode\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m],\n", " ttl=timedelta(days=\u001b[34m3650\u001b[39;49;00m),\n", " schema=[\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mcity\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=String),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mstate\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=String),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mlocation_type\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=String),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mtax_returns_filed\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mpopulation\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mtotal_wages\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " ],\n", " source=zipcode_source,\n", ")\n", "\n", "dob_ssn = Entity(\n", " name=\u001b[33m\"\u001b[39;49;00m\u001b[33mdob_ssn\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", " value_type=ValueType.STRING,\n", " description=\u001b[33m\"\u001b[39;49;00m\u001b[33mDate of birth and last four digits of social security number\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", ")\n", "\n", "credit_history_source = FileSource(\n", " path=\u001b[33m\"\u001b[39;49;00m\u001b[33mfeature_repo/data/credit_history.parquet\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", " timestamp_field=\u001b[33m\"\u001b[39;49;00m\u001b[33mevent_timestamp\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", " created_timestamp_column=\u001b[33m\"\u001b[39;49;00m\u001b[33mcreated_timestamp\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", ")\n", "\n", "credit_history = FeatureView(\n", " name=\u001b[33m\"\u001b[39;49;00m\u001b[33mcredit_history\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n", " entities=[\u001b[33m\"\u001b[39;49;00m\u001b[33mdob_ssn\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m],\n", " ttl=timedelta(days=\u001b[34m90\u001b[39;49;00m),\n", " schema=[\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mcredit_card_due\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mmortgage_due\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mstudent_loan_due\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mvehicle_loan_due\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mhard_pulls\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mmissed_payments_2y\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mmissed_payments_1y\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mmissed_payments_6m\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " Field(name=\u001b[33m\"\u001b[39;49;00m\u001b[33mbankruptcies\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, dtype=Int64),\n", " ],\n", " source=credit_history_source,\n", ")\n" ] } ], "source": [ "!pygmentize feature_repo/features.py" ] }, { "cell_type": "markdown", "metadata": { "id": "HQmrfEV33_SM" }, "source": [ "Deploy the above defined feature store by running `apply` from within the feature_repo/ folder." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SbL_EbMC2MFS", "outputId": "13b07f1f-d52a-4c4e-a73f-f5478c0304de" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Feast is an open source project that collects anonymized error reporting and usage statistics. To opt out or learn more see https://docs.feast.dev/reference/usage\n", "Created entity \u001b[1m\u001b[32mdob_ssn\u001b[0m\n", "Created entity \u001b[1m\u001b[32mzipcode\u001b[0m\n", "Created feature view \u001b[1m\u001b[32mcredit_history\u001b[0m\n", "Created feature view \u001b[1m\u001b[32mzipcode_features\u001b[0m\n", "\n", "Created sqlite table \u001b[1m\u001b[32mfeature_repo_credit_history\u001b[0m\n", "Created sqlite table \u001b[1m\u001b[32mfeature_repo_zipcode_features\u001b[0m\n", "\n" ] } ], "source": [ "! (cd feature_repo && feast apply)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "D-9Kr-kdzg1r", "outputId": "beabd2f7-c1a6-4fe3-b087-b35b7b9ab56b" }, "outputs": [], "source": [ "import feast\n", "fs = feast.FeatureStore(repo_path=\"feature_repo\")" ] }, { "cell_type": "markdown", "metadata": { "id": "5nR8uNE8z-YQ" }, "source": [ "## Generate training data\n", "On top of the features in Feast, we also have labeled training data at `data/loan_table.parquet`. At the time of training, loan table will be passed into Feast as an entity dataframe for training data generation. Feast will intelligently join credit_history and zipcode_feature tables to create relevant feature vectors to augment the training data." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "twBCJMzVzV0X", "outputId": "efb41c7a-2802-4169-906e-7db1c37d8c8e" }, "outputs": [ { "data": { "text/html": [ "
\n", " | loan_id | \n", "dob_ssn | \n", "zipcode | \n", "person_age | \n", "person_income | \n", "person_home_ownership | \n", "person_emp_length | \n", "loan_intent | \n", "loan_amnt | \n", "loan_int_rate | \n", "loan_status | \n", "event_timestamp | \n", "created_timestamp | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "10000 | \n", "19530219_5179 | \n", "76104 | \n", "22 | \n", "59000 | \n", "RENT | \n", "123.0 | \n", "PERSONAL | \n", "35000 | \n", "16.02 | \n", "1 | \n", "2021-08-25 20:34:41.361000+00:00 | \n", "2021-08-25 20:34:41.361000+00:00 | \n", "
1 | \n", "10001 | \n", "19520816_8737 | \n", "70380 | \n", "21 | \n", "9600 | \n", "OWN | \n", "5.0 | \n", "EDUCATION | \n", "1000 | \n", "11.14 | \n", "0 | \n", "2021-08-25 20:16:20.128000+00:00 | \n", "2021-08-25 20:16:20.128000+00:00 | \n", "
2 | \n", "10002 | \n", "19860413_2537 | \n", "97039 | \n", "25 | \n", "9600 | \n", "MORTGAGE | \n", "1.0 | \n", "MEDICAL | \n", "5500 | \n", "12.87 | \n", "1 | \n", "2021-08-25 19:57:58.896000+00:00 | \n", "2021-08-25 19:57:58.896000+00:00 | \n", "
3 | \n", "10003 | \n", "19760701_8090 | \n", "63785 | \n", "23 | \n", "65500 | \n", "RENT | \n", "4.0 | \n", "MEDICAL | \n", "35000 | \n", "15.23 | \n", "1 | \n", "2021-08-25 19:39:37.663000+00:00 | \n", "2021-08-25 19:39:37.663000+00:00 | \n", "
4 | \n", "10004 | \n", "19830125_8297 | \n", "82223 | \n", "24 | \n", "54400 | \n", "RENT | \n", "8.0 | \n", "MEDICAL | \n", "35000 | \n", "14.27 | \n", "1 | \n", "2021-08-25 19:21:16.430000+00:00 | \n", "2021-08-25 19:21:16.430000+00:00 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
28633 | \n", "38633 | \n", "19491126_1487 | \n", "43205 | \n", "57 | \n", "53000 | \n", "MORTGAGE | \n", "1.0 | \n", "PERSONAL | \n", "5800 | \n", "13.16 | \n", "0 | \n", "2020-08-25 21:48:06.292000+00:00 | \n", "2020-08-25 21:48:06.292000+00:00 | \n", "
28634 | \n", "38634 | \n", "19681208_6537 | \n", "24872 | \n", "54 | \n", "120000 | \n", "MORTGAGE | \n", "4.0 | \n", "PERSONAL | \n", "17625 | \n", "7.49 | \n", "0 | \n", "2020-08-25 21:29:45.059000+00:00 | \n", "2020-08-25 21:29:45.059000+00:00 | \n", "
28635 | \n", "38635 | \n", "19880422_2592 | \n", "68826 | \n", "65 | \n", "76000 | \n", "RENT | \n", "3.0 | \n", "HOMEIMPROVEMENT | \n", "35000 | \n", "10.99 | \n", "1 | \n", "2020-08-25 21:11:23.826000+00:00 | \n", "2020-08-25 21:11:23.826000+00:00 | \n", "
28636 | \n", "38636 | \n", "19901017_6108 | \n", "92014 | \n", "56 | \n", "150000 | \n", "MORTGAGE | \n", "5.0 | \n", "PERSONAL | \n", "15000 | \n", "11.48 | \n", "0 | \n", "2020-08-25 20:53:02.594000+00:00 | \n", "2020-08-25 20:53:02.594000+00:00 | \n", "
28637 | \n", "38637 | \n", "19960703_3449 | \n", "69033 | \n", "66 | \n", "42000 | \n", "RENT | \n", "2.0 | \n", "MEDICAL | \n", "6475 | \n", "9.99 | \n", "0 | \n", "2020-08-25 20:34:41.361000+00:00 | \n", "2020-08-25 20:34:41.361000+00:00 | \n", "
28638 rows × 13 columns
\n", "\n", " | person_age | \n", "person_income | \n", "person_home_ownership | \n", "person_emp_length | \n", "loan_intent | \n", "loan_amnt | \n", "loan_int_rate | \n", "loan_status | \n", "city | \n", "state | \n", "... | \n", "total_wages | \n", "credit_card_due | \n", "mortgage_due | \n", "student_loan_due | \n", "vehicle_loan_due | \n", "hard_pulls | \n", "missed_payments_2y | \n", "missed_payments_1y | \n", "missed_payments_6m | \n", "bankruptcies | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1358886 | \n", "55 | \n", "24543 | \n", "RENT | \n", "3.0 | \n", "VENTURE | \n", "4000 | \n", "13.92 | \n", "0 | \n", "SLIDELL | \n", "LA | \n", "... | \n", "315061217 | \n", "1777 | \n", "690650 | \n", "46372 | \n", "10439 | \n", "5 | \n", "1 | \n", "2 | \n", "1 | \n", "0 | \n", "
1358815 | \n", "58 | \n", "20000 | \n", "RENT | \n", "0.0 | \n", "EDUCATION | \n", "4000 | \n", "9.99 | \n", "0 | \n", "CHOUTEAU | \n", "OK | \n", "... | \n", "59412230 | \n", "1791 | \n", "462670 | \n", "19421 | \n", "3583 | \n", "8 | \n", "7 | \n", "1 | \n", "0 | \n", "2 | \n", "
1353348 | \n", "64 | \n", "24000 | \n", "RENT | \n", "1.0 | \n", "MEDICAL | \n", "3000 | \n", "6.99 | \n", "0 | \n", "BISMARCK | \n", "ND | \n", "... | \n", "469621263 | \n", "5917 | \n", "1780959 | \n", "11835 | \n", "27910 | \n", "8 | \n", "3 | \n", "2 | \n", "1 | \n", "0 | \n", "
1354200 | \n", "55 | \n", "34000 | \n", "RENT | \n", "0.0 | \n", "DEBTCONSOLIDATION | \n", "12000 | \n", "6.92 | \n", "1 | \n", "SANTA BARBARA | \n", "CA | \n", "... | \n", "24537583 | \n", "8091 | \n", "364271 | \n", "30248 | \n", "22640 | \n", "2 | \n", "7 | \n", "3 | \n", "0 | \n", "0 | \n", "
1354271 | \n", "51 | \n", "74628 | \n", "MORTGAGE | \n", "3.0 | \n", "PERSONAL | \n", "3000 | \n", "13.49 | \n", "0 | \n", "HUNTINGTON BEACH | \n", "CA | \n", "... | \n", "19749601 | \n", "3679 | \n", "1659968 | \n", "37582 | \n", "20284 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
674285 | \n", "23 | \n", "74000 | \n", "RENT | \n", "3.0 | \n", "MEDICAL | \n", "25000 | \n", "10.36 | \n", "1 | \n", "MANSFIELD | \n", "MO | \n", "... | \n", "33180988 | \n", "5176 | \n", "1089963 | \n", "44642 | \n", "2877 | \n", "1 | \n", "6 | \n", "1 | \n", "0 | \n", "0 | \n", "
668250 | \n", "21 | \n", "200000 | \n", "MORTGAGE | \n", "2.0 | \n", "DEBTCONSOLIDATION | \n", "25000 | \n", "13.99 | \n", "0 | \n", "SALISBURY | \n", "MD | \n", "... | \n", "470634058 | \n", "5297 | \n", "1288915 | \n", "22471 | \n", "22630 | \n", "0 | \n", "5 | \n", "2 | \n", "1 | \n", "0 | \n", "
668321 | \n", "24 | \n", "200000 | \n", "MORTGAGE | \n", "3.0 | \n", "VENTURE | \n", "24000 | \n", "7.49 | \n", "0 | \n", "STRUNK | \n", "KY | \n", "... | \n", "10067358 | \n", "6549 | \n", "22399 | \n", "11806 | \n", "13005 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "
670025 | \n", "23 | \n", "215000 | \n", "MORTGAGE | \n", "7.0 | \n", "MEDICAL | \n", "35000 | \n", "14.79 | \n", "0 | \n", "HAWTHORN | \n", "PA | \n", "... | \n", "5956835 | \n", "9079 | \n", "876038 | \n", "4556 | \n", "21588 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "
2034006 | \n", "22 | \n", "59000 | \n", "RENT | \n", "123.0 | \n", "PERSONAL | \n", "35000 | \n", "16.02 | \n", "1 | \n", "FORT WORTH | \n", "TX | \n", "... | \n", "142325465 | \n", "8419 | \n", "91803 | \n", "22328 | \n", "15078 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "
28638 rows × 23 columns
\n", "Trial name | status | loc | iter | total time (s) | train-logloss | train-error | validation-logloss |
---|---|---|---|---|---|---|---|
XGBoostTrainer_a3a2c_00000 | TERMINATED | 172.31.71.98:12634 | 100 | 11.9561 | 0.0578837 | 0.0127019 | 0.225994 |
\n", " | person_age | \n", "person_income | \n", "person_home_ownership | \n", "person_emp_length | \n", "loan_intent | \n", "loan_amnt | \n", "loan_int_rate | \n", "state | \n", "population | \n", "location_type | \n", "... | \n", "tax_returns_filed | \n", "student_loan_due | \n", "missed_payments_1y | \n", "hard_pulls | \n", "mortgage_due | \n", "bankruptcies | \n", "credit_card_due | \n", "missed_payments_2y | \n", "missed_payments_6m | \n", "vehicle_loan_due | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "133.0 | \n", "59000.0 | \n", "RENT | \n", "123.0 | \n", "PERSONAL | \n", "35000.0 | \n", "16.02 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "... | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
1 rows × 22 columns
\n", "