{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "cross validation", "version": "0.3.2", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "-m5PXfx01Wmw", "colab_type": "text" }, "source": [ "# Cross validation" ] }, { "cell_type": "markdown", "metadata": { "id": "4Zc-ZsYr053a", "colab_type": "text" }, "source": [ "台新分析開發環境案客戶資料\n", "https://drive.google.com/drive/u/2/folders/1AAXWPcB9xiDe_qX87ce5XL-utkASWxRe\n", "\n", "請先連到這個分享資料夾,並且按下右鍵,加入你的 Google 雲端硬碟\n" ] }, { "cell_type": "code", "metadata": { "id": "DLxDQLLTw2Sc", "colab_type": "code", "outputId": "03f128c9-6018-4e3f-a092-43392bb7344e", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "# 這個是授權存取你的 Google 雲端硬碟\n", "from google.colab import drive\n", "drive.mount('/content/drive')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "y55N58WSzWHr", "colab_type": "code", "outputId": "8f990a00-a918-4279-d248-606089703361", "colab": { "base_uri": "https://localhost:8080/", "height": 300 } }, "source": [ "# 確認真的連上了資料\n", "!ls drive/My\\ Drive/台新分析開發環境案客戶資料" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "'Copy of 0606_口述台新資料欄位.m4a'\n", "'Copy of 0610_嘉駿寄來的欄位內容.png'\n", "'Copy of 0621_data_original.zip'\n", "'Copy of profile.csv'\n", "'Copy of profile.gsheet'\n", "'Copy of result_y1.csv'\n", "'Copy of result_y1.gsheet'\n", "'Copy of result_y2.csv'\n", "'Copy of sr_1.csv'\n", "'Copy of sr_2.csv'\n", "'Copy of sr_3.csv'\n", "'Copy of sr_4.csv'\n", "'Copy of status.csv'\n", "'Copy of visa-merchant-data-standards-manual_用來對照sr_1.csv中的mcc欄位.pdf'\n", "'Copy of zip 對照表.xlsx'\n", "'Copy of 檔案欄位說明_MOOCS.XLSX'\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "2Hrx_j1vwDXn", "colab_type": "code", "colab": {} }, "source": [ "# 正式開始\n", "import pandas as pd\n", "import os.path\n", "import numpy as np" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "hxwJyFIO1vOe", "colab_type": "code", "colab": {} }, "source": [ "DATA_DIR='drive/My Drive/台新分析開發環境案客戶資料'\n", "sr1_fn = os.path.join(DATA_DIR, 'Copy of sr_1.csv')\n", "with open(sr1_fn, encoding='cp950', errors='replace') as sr1_f:\n", " sr1_df = pd.read_csv(sr1_f)\n", "profile_fn = os.path.join(DATA_DIR, 'Copy of profile.csv')\n", "profile_df = pd.read_csv(profile_fn)\n", "profile_df.set_index('CUST_NO', inplace=True)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "BZl63rGk2B2U", "colab_type": "code", "outputId": "e2059808-7c5f-4d07-ed3c-66a53139f44c", "colab": { "base_uri": "https://localhost:8080/", "height": 203 } }, "source": [ "sr1_df.head()" ], "execution_count": 0, "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", "
CUST_NOEFF_DTSTMT_DTamtTXN_DESCmcc
05647552018061520180702174全聯台中四平分公司 TAICHU/TW5411
15647552018062420180702484全聯台中四平分公司 TAICHU/TW5411
2618515220180620201807021035健身工廠九如廠 Kaohsi/TW7997
3618515220180623201807021304富邦momo-EC TAIPEI/TW5311
4531803420170629201807025899國泰人壽保費部 第 12/12 期 /TW6300
\n", "
" ], "text/plain": [ " CUST_NO EFF_DT STMT_DT amt TXN_DESC mcc\n", "0 564755 20180615 20180702 174 全聯台中四平分公司 TAICHU/TW 5411\n", "1 564755 20180624 20180702 484 全聯台中四平分公司 TAICHU/TW 5411\n", "2 6185152 20180620 20180702 1035 健身工廠九如廠 Kaohsi/TW 7997\n", "3 6185152 20180623 20180702 1304 富邦momo-EC TAIPEI/TW 5311\n", "4 5318034 20170629 20180702 5899 國泰人壽保費部 第 12/12 期 /TW 6300" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "code", "metadata": { "id": "G7eVZetOZkjP", "colab_type": "code", "outputId": "9eb1e9df-4878-4b7d-a95a-8759733dd8c8", "colab": { "base_uri": "https://localhost:8080/", "height": 314 } }, "source": [ "df = sr1_df[['CUST_NO', 'mcc', 'amt']].groupby(['CUST_NO', 'mcc']).sum().unstack().fillna(0)\n", "df.head()" ], "execution_count": 0, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
amt
mcc0742763780152017111731174017501771179927412791284230003001300430053006300730083009301030113012301330143015301630173018302030223025302630293031303230343035...7997799879998011802180318041804280438044804980508062807180998111821182208241824482498299835183988641865186618675869987348911893189999200921192229311939994029405
CUST_NO
219690.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.070786.00.00.0
2408114148.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.02074.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.09695.00.00.00.0
379170.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
382770.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.0215.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.016968.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
383120.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0
\n", "

5 rows × 472 columns

\n", "
" ], "text/plain": [ " amt ... \n", "mcc 0 742 763 780 1520 1711 ... 9211 9222 9311 9399 9402 9405\n", "CUST_NO ... \n", "21969 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 70786.0 0.0 0.0\n", "24081 14148.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 9695.0 0.0 0.0 0.0\n", "37917 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0\n", "38277 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0\n", "38312 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0\n", "\n", "[5 rows x 472 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "code", "metadata": { "id": "XuqGKPKMbPku", "colab_type": "code", "outputId": "3a4792d5-9db4-4d80-dc48-75fba858965f", "colab": { "base_uri": "https://localhost:8080/", "height": 314 } }, "source": [ "# ratio of the spends\n", "df[df<0]=0\n", "df = df[df.sum(axis=1)>0]\n", "df = df.div(df.sum(axis=1), axis=0)\n", "df.head()" ], "execution_count": 0, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
amt
mcc0742763780152017111731174017501771179927412791284230003001300430053006300730083009301030113012301330143015301630173018302030223025302630293031303230343035...7997799879998011802180318041804280438044804980508062807180998111821182208241824482498299835183988641865186618675869987348911893189999200921192229311939994029405
CUST_NO
219690.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.000000.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.0000000.8622130.00.0
240810.0722920.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.000000.00.00.00.00.00.0105970.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.0495380.0000000.00.0
379170.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.000000.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.0000000.0000000.00.0
382770.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.004080.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.3219920.00.00.00.00.00.00.00.00.00.00.00.00.0000000.0000000.00.0
383120.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0...0.00.00.000000.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.00.00.00.00.0000000.0000000.00.0
\n", "

5 rows × 472 columns

\n", "
" ], "text/plain": [ " amt ... \n", "mcc 0 742 763 780 1520 ... 9222 9311 9399 9402 9405\n", "CUST_NO ... \n", "21969 0.000000 0.0 0.0 0.0 0.0 ... 0.0 0.000000 0.862213 0.0 0.0\n", "24081 0.072292 0.0 0.0 0.0 0.0 ... 0.0 0.049538 0.000000 0.0 0.0\n", "37917 0.000000 0.0 0.0 0.0 0.0 ... 0.0 0.000000 0.000000 0.0 0.0\n", "38277 0.000000 0.0 0.0 0.0 0.0 ... 0.0 0.000000 0.000000 0.0 0.0\n", "38312 0.000000 0.0 0.0 0.0 0.0 ... 0.0 0.000000 0.000000 0.0 0.0\n", "\n", "[5 rows x 472 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 7 } ] }, { "cell_type": "code", "metadata": { "id": "evb24gNJdvat", "colab_type": "code", "outputId": "f5979d4f-8b24-499a-8014-6428c2bfdabb", "colab": { "base_uri": "https://localhost:8080/", "height": 141 } }, "source": [ "df.sum(axis=0).sort_values().tail()" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " mcc \n", "amt 4784 7548.565596\n", " 4722 9224.629785\n", " 6300 27176.126703\n", " 5411 27180.307511\n", " 5311 33845.416573\n", "dtype: float64" ] }, "metadata": { "tags": [] }, "execution_count": 8 } ] }, { "cell_type": "code", "metadata": { "id": "HAxcPZEjN46F", "colab_type": "code", "outputId": "e07cea59-fc64-481f-efc2-de9937a19450", "colab": { "base_uri": "https://localhost:8080/", "height": 269 } }, "source": [ "import matplotlib.pyplot as plt\n", "y = profile_df.c_gender[df.index] == 'M'\n", "X = df.values.astype('float')\n", "# 標出 sample 點\n", "plt.scatter(df['amt', 5311][:5000], df['amt', 5411][:5000], c=y[:5000], cmap=plt.cm.rainbow, zorder=10, s=1);\n" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\nD6i2eWFogfL5AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "FPT22oaDdWF7", "colab_type": "code", "outputId": "6cd009ed-1c04-4c34-81d5-3928043b600c", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "X.shape" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(236689, 472)" ] }, "metadata": { "tags": [] }, "execution_count": 10 } ] }, { "cell_type": "code", "metadata": { "id": "XSgBo9_yOwwB", "colab_type": "code", "colab": {} }, "source": [ "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test =train_test_split(X, y, test_size=0.3, random_state=42)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "7szsP6aQQF_L", "colab_type": "code", "outputId": "8d4b0ad0-0c08-42f5-c456-04563d8d3944", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "X_train.shape" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(165682, 472)" ] }, "metadata": { "tags": [] }, "execution_count": 12 } ] }, { "cell_type": "code", "metadata": { "id": "qT5DSxHEgatK", "colab_type": "code", "outputId": "dba46bf9-8f99-4534-bf65-e6cf1cd74c18", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "X_test.shape" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(71007, 472)" ] }, "metadata": { "tags": [] }, "execution_count": 13 } ] }, { "cell_type": "code", "metadata": { "id": "OReMRAo4Pv4F", "colab_type": "code", "outputId": "5dbc6910-3f3f-42d9-afc9-2aabf9eca29b", "colab": { "base_uri": "https://localhost:8080/", "height": 161 } }, "source": [ "from sklearn.linear_model import LogisticRegression\n", "clf = LogisticRegression()\n", "clf.fit(np.array(X_train), y_train )" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n" ], "name": "stderr" }, { "output_type": "execute_result", "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", " multi_class='warn', n_jobs=None, penalty='l2',\n", " random_state=None, solver='warn', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "metadata": { "tags": [] }, "execution_count": 14 } ] }, { "cell_type": "code", "metadata": { "id": "niIUB_2fkfim", "colab_type": "code", "outputId": "36bc14e1-30a0-4536-da56-5df70a2dac65", "colab": { "base_uri": "https://localhost:8080/", "height": 52 } }, "source": [ "print(clf.score(X_train, y_train))\n", "print(clf.score(X_test, y_test))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "0.7013073236682319\n", "0.6986775951666737\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "VxBsOVf0wgH_", "colab_type": "code", "outputId": "bb6c7766-fb5e-4f9c-8eac-7cc183100627", "colab": { "base_uri": "https://localhost:8080/", "height": 232 } }, "source": [ "from sklearn.model_selection import cross_val_score\n", "clf = LogisticRegression()\n", "scores = cross_val_score(clf, X, y, cv=5)\n", "scores" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n" ], "name": "stderr" }, { "output_type": "execute_result", "data": { "text/plain": [ "array([0.69945921, 0.696713 , 0.69760024, 0.70524737, 0.6975516 ])" ] }, "metadata": { "tags": [] }, "execution_count": 16 } ] }, { "cell_type": "code", "metadata": { "id": "hnnRebFaxTBs", "colab_type": "code", "outputId": "1c4957bc-6d33-4c3a-ae31-463be7b7e81d", "colab": { "base_uri": "https://localhost:8080/", "height": 35 } }, "source": [ "print(\"Accuracy: %0.2f (+/- %0.2f)\" % (scores.mean(), scores.std() * 2))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Accuracy: 0.70 (+/- 0.01)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "qkp8L3vKxVfl", "colab_type": "code", "outputId": "e74f5569-32c6-4409-8f13-d7a47e1c6774", "colab": { "base_uri": "https://localhost:8080/", "height": 444 } }, "source": [ "# customization\n", "clf = LogisticRegression()\n", "scores = cross_val_score(clf, X, y, cv=10, scoring='f1_macro', n_jobs=1)\n", "print(scores)\n", "print(\"F1: %0.2f (+/- %0.2f)\" % (scores.mean(), scores.std() * 2))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n" ], "name": "stderr" }, { "output_type": "stream", "text": [ "[0.61821359 0.63078251 0.6227792 0.62380379 0.62721977 0.61527191\n", " 0.62682801 0.63876992 0.61538633 0.61672711]\n", "F1: 0.62 (+/- 0.01)\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "7GCunyIpy0-y", "colab_type": "code", "outputId": "a1b7d317-d897-4e42-b5f9-c5d09573eabf", "colab": { "base_uri": "https://localhost:8080/", "height": 250 } }, "source": [ "#pipeline\n", "from sklearn import preprocessing\n", "from sklearn.pipeline import make_pipeline\n", "\n", "clf = make_pipeline(preprocessing.StandardScaler(), LogisticRegression())\n", "scores = cross_val_score(clf, X, y, cv=5, scoring='f1_macro', n_jobs=1)\n", "print(scores)\n", "print(\"F1: %0.2f (+/- %0.2f)\" % (scores.mean(), scores.std() * 2))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n", "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", " FutureWarning)\n" ], "name": "stderr" }, { "output_type": "stream", "text": [ "[0.62588504 0.62533133 0.62369034 0.63467326 0.61674819]\n", "F1: 0.63 (+/- 0.01)\n" ], "name": "stdout" } ] } ] }