{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "e796cb12",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"日志路径:/root/project/easy_ml/logs/app.log\n"
]
}
],
"source": [
"%matplotlib agg\n",
"import matplotlib.pyplot as plt\n",
"import sys\n",
"sys.path.append(\"/root/project\")\n",
"from easy_ml import DataSplitEntity, OnlineLearningTrainer\n",
"\n",
"\n",
"# 加载demo数据\n",
"import scorecardpy as sc\n",
"\n",
"# 加载数据\n",
"dat = sc.germancredit()\n",
"dat_columns = dat.columns.tolist()\n",
"dat_columns = [c.replace(\".\",\"_\") for c in dat_columns]\n",
"dat.columns = dat_columns\n",
"\n",
"dat[\"creditability\"] = dat[\"creditability\"].apply(lambda x: 1 if x == \"bad\" else 0)\n",
"train_data=dat[:709]\n",
"test_data=dat[709:]\n",
"data = DataSplitEntity(train_data=train_data, test_data=test_data)\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "b40219b8",
"metadata": {
"code_folding": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"项目路径:【./cache/train/OnlineLearningDemo】\n",
"coef load from【/root/notebook/ol_resources_demo/coef.json】success.\n",
"card.cfg load from【/root/notebook/ol_resources_demo/coef.json】success.\n",
"feature load from【/root/notebook/ol_resources_demo/feature.csv】success.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 20/20 [00:04<00:00, 4.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"选择epoch:【3】的参数:\n",
"{'age_in_years': 0.3448204833214924, 'credit_history': 0.38666791361493663, 'duration_in_month': 0.31717857388239995, 'present_employment_since': 0.3182701082371682, 'purpose': 0.34568628455181505, 'savings_account_and_bonds': 0.3074829183742356, 'status_of_existing_checking_account': 0.3877371389194942, 'auc_test': 0.7911, 'ks_test': 0.4584, 'epoch': 3, 'loss_train': 0.579820491150681, 'loss_test': 0.5821033735284096}\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/html": [
"
模型系数优化过程
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" age_in_years | \n",
" credit_history | \n",
" duration_in_month | \n",
" present_employment_since | \n",
" purpose | \n",
" savings_account_and_bonds | \n",
" status_of_existing_checking_account | \n",
" auc_test | \n",
" ks_test | \n",
" epoch | \n",
" loss_train | \n",
" loss_test | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.061604 | \n",
" 0.082735 | \n",
" 0.020125 | \n",
" 0.084609 | \n",
" 0.036348 | \n",
" 0.056191 | \n",
" 0.076643 | \n",
" 0.7691 | \n",
" 0.4632 | \n",
" 0 | \n",
" 0 | \n",
" 0.666412 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.172276 | \n",
" 0.193174 | \n",
" 0.126486 | \n",
" 0.183426 | \n",
" 0.148074 | \n",
" 0.153288 | \n",
" 0.189740 | \n",
" 0.7863 | \n",
" 0.4583 | \n",
" 1 | \n",
" 0.627416 | \n",
" 0.628051 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.265029 | \n",
" 0.295315 | \n",
" 0.225802 | \n",
" 0.257340 | \n",
" 0.251100 | \n",
" 0.236557 | \n",
" 0.294650 | \n",
" 0.7894 | \n",
" 0.4670 | \n",
" 2 | \n",
" 0.59872 | \n",
" 0.600769 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.344820 | \n",
" 0.386668 | \n",
" 0.317179 | \n",
" 0.318270 | \n",
" 0.345686 | \n",
" 0.307483 | \n",
" 0.387737 | \n",
" 0.7911 | \n",
" 0.4584 | \n",
" 3 | \n",
" 0.57982 | \n",
" 0.582103 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.410654 | \n",
" 0.465563 | \n",
" 0.399373 | \n",
" 0.367232 | \n",
" 0.430845 | \n",
" 0.365413 | \n",
" 0.466632 | \n",
" 0.7925 | \n",
" 0.4611 | \n",
" 4 | \n",
" 0.568089 | \n",
" 0.569897 | \n",
"
\n",
" \n",
" 5 | \n",
" 0.463281 | \n",
" 0.532237 | \n",
" 0.472439 | \n",
" 0.405971 | \n",
" 0.506793 | \n",
" 0.411326 | \n",
" 0.531102 | \n",
" 0.7927 | \n",
" 0.4630 | \n",
" 5 | \n",
" 0.561046 | \n",
" 0.562113 | \n",
"
\n",
" \n",
" 6 | \n",
" 0.504478 | \n",
" 0.587959 | \n",
" 0.537120 | \n",
" 0.436573 | \n",
" 0.574335 | \n",
" 0.447077 | \n",
" 0.582314 | \n",
" 0.7922 | \n",
" 0.4630 | \n",
" 6 | \n",
" 0.556834 | \n",
" 0.557198 | \n",
"
\n",
" \n",
" 7 | \n",
" 0.536303 | \n",
" 0.634330 | \n",
" 0.594360 | \n",
" 0.460962 | \n",
" 0.634410 | \n",
" 0.474682 | \n",
" 0.622072 | \n",
" 0.7929 | \n",
" 0.4653 | \n",
" 7 | \n",
" 0.554242 | \n",
" 0.554094 | \n",
"
\n",
" \n",
" 8 | \n",
" 0.560677 | \n",
" 0.672900 | \n",
" 0.645071 | \n",
" 0.480702 | \n",
" 0.687883 | \n",
" 0.495952 | \n",
" 0.652330 | \n",
" 0.7932 | \n",
" 0.4630 | \n",
" 8 | \n",
" 0.552547 | \n",
" 0.552126 | \n",
"
\n",
" \n",
" 9 | \n",
" 0.579228 | \n",
" 0.705028 | \n",
" 0.690049 | \n",
" 0.496977 | \n",
" 0.735496 | \n",
" 0.512376 | \n",
" 0.674932 | \n",
" 0.7937 | \n",
" 0.4676 | \n",
" 9 | \n",
" 0.55134 | \n",
" 0.550872 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.593272 | \n",
" 0.731846 | \n",
" 0.729969 | \n",
" 0.510661 | \n",
" 0.777871 | \n",
" 0.525128 | \n",
" 0.691500 | \n",
" 0.7938 | \n",
" 0.4742 | \n",
" 10 | \n",
" 0.5504 | \n",
" 0.550071 | \n",
"
\n",
" \n",
" 11 | \n",
" 0.603847 | \n",
" 0.754285 | \n",
" 0.765402 | \n",
" 0.522384 | \n",
" 0.815540 | \n",
" 0.535110 | \n",
" 0.703402 | \n",
" 0.7942 | \n",
" 0.4742 | \n",
" 11 | \n",
" 0.549615 | \n",
" 0.549563 | \n",
"
\n",
" \n",
" 12 | \n",
" 0.611761 | \n",
" 0.773104 | \n",
" 0.796840 | \n",
" 0.532603 | \n",
" 0.848965 | \n",
" 0.543004 | \n",
" 0.711759 | \n",
" 0.7947 | \n",
" 0.4693 | \n",
" 12 | \n",
" 0.548931 | \n",
" 0.549247 | \n",
"
\n",
" \n",
" 13 | \n",
" 0.617641 | \n",
" 0.788921 | \n",
" 0.824707 | \n",
" 0.541643 | \n",
" 0.878562 | \n",
" 0.549326 | \n",
" 0.717471 | \n",
" 0.7952 | \n",
" 0.4748 | \n",
" 13 | \n",
" 0.548323 | \n",
" 0.549058 | \n",
"
\n",
" \n",
" 14 | \n",
" 0.621967 | \n",
" 0.802243 | \n",
" 0.849381 | \n",
" 0.549743 | \n",
" 0.904703 | \n",
" 0.554461 | \n",
" 0.721243 | \n",
" 0.7949 | \n",
" 0.4748 | \n",
" 14 | \n",
" 0.547781 | \n",
" 0.548955 | \n",
"
\n",
" \n",
" 15 | \n",
" 0.625108 | \n",
" 0.813485 | \n",
" 0.871196 | \n",
" 0.557072 | \n",
" 0.927734 | \n",
" 0.558694 | \n",
" 0.723619 | \n",
" 0.7950 | \n",
" 0.4811 | \n",
" 15 | \n",
" 0.547301 | \n",
" 0.548909 | \n",
"
\n",
" \n",
" 16 | \n",
" 0.627348 | \n",
" 0.822987 | \n",
" 0.890454 | \n",
" 0.563756 | \n",
" 0.947972 | \n",
" 0.562238 | \n",
" 0.725012 | \n",
" 0.7953 | \n",
" 0.4860 | \n",
" 16 | \n",
" 0.546881 | \n",
" 0.548903 | \n",
"
\n",
" \n",
" 17 | \n",
" 0.628904 | \n",
" 0.831031 | \n",
" 0.907429 | \n",
" 0.569886 | \n",
" 0.965711 | \n",
" 0.565248 | \n",
" 0.725730 | \n",
" 0.7949 | \n",
" 0.4811 | \n",
" 17 | \n",
" 0.546517 | \n",
" 0.548922 | \n",
"
\n",
" \n",
" 18 | \n",
" 0.629939 | \n",
" 0.837850 | \n",
" 0.922366 | \n",
" 0.575530 | \n",
" 0.981219 | \n",
" 0.567838 | \n",
" 0.725997 | \n",
" 0.7949 | \n",
" 0.4923 | \n",
" 18 | \n",
" 0.546206 | \n",
" 0.548958 | \n",
"
\n",
" \n",
" 19 | \n",
" 0.630580 | \n",
" 0.843636 | \n",
" 0.935489 | \n",
" 0.580739 | \n",
" 0.994746 | \n",
" 0.570093 | \n",
" 0.725975 | \n",
" 0.7953 | \n",
" 0.4923 | \n",
" 19 | \n",
" 0.545945 | \n",
" 0.549003 | \n",
"
\n",
" \n",
" 20 | \n",
" 0.630924 | \n",
" 0.848550 | \n",
" 0.947000 | \n",
" 0.585554 | \n",
" 1.006518 | \n",
" 0.572075 | \n",
" 0.725778 | \n",
" 0.7956 | \n",
" 0.4923 | \n",
" 20 | \n",
" 0.545729 | \n",
" 0.549054 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" age_in_years credit_history duration_in_month present_employment_since \\\n",
"0 0.061604 0.082735 0.020125 0.084609 \n",
"1 0.172276 0.193174 0.126486 0.183426 \n",
"2 0.265029 0.295315 0.225802 0.257340 \n",
"3 0.344820 0.386668 0.317179 0.318270 \n",
"4 0.410654 0.465563 0.399373 0.367232 \n",
"5 0.463281 0.532237 0.472439 0.405971 \n",
"6 0.504478 0.587959 0.537120 0.436573 \n",
"7 0.536303 0.634330 0.594360 0.460962 \n",
"8 0.560677 0.672900 0.645071 0.480702 \n",
"9 0.579228 0.705028 0.690049 0.496977 \n",
"10 0.593272 0.731846 0.729969 0.510661 \n",
"11 0.603847 0.754285 0.765402 0.522384 \n",
"12 0.611761 0.773104 0.796840 0.532603 \n",
"13 0.617641 0.788921 0.824707 0.541643 \n",
"14 0.621967 0.802243 0.849381 0.549743 \n",
"15 0.625108 0.813485 0.871196 0.557072 \n",
"16 0.627348 0.822987 0.890454 0.563756 \n",
"17 0.628904 0.831031 0.907429 0.569886 \n",
"18 0.629939 0.837850 0.922366 0.575530 \n",
"19 0.630580 0.843636 0.935489 0.580739 \n",
"20 0.630924 0.848550 0.947000 0.585554 \n",
"\n",
" purpose savings_account_and_bonds status_of_existing_checking_account \\\n",
"0 0.036348 0.056191 0.076643 \n",
"1 0.148074 0.153288 0.189740 \n",
"2 0.251100 0.236557 0.294650 \n",
"3 0.345686 0.307483 0.387737 \n",
"4 0.430845 0.365413 0.466632 \n",
"5 0.506793 0.411326 0.531102 \n",
"6 0.574335 0.447077 0.582314 \n",
"7 0.634410 0.474682 0.622072 \n",
"8 0.687883 0.495952 0.652330 \n",
"9 0.735496 0.512376 0.674932 \n",
"10 0.777871 0.525128 0.691500 \n",
"11 0.815540 0.535110 0.703402 \n",
"12 0.848965 0.543004 0.711759 \n",
"13 0.878562 0.549326 0.717471 \n",
"14 0.904703 0.554461 0.721243 \n",
"15 0.927734 0.558694 0.723619 \n",
"16 0.947972 0.562238 0.725012 \n",
"17 0.965711 0.565248 0.725730 \n",
"18 0.981219 0.567838 0.725997 \n",
"19 0.994746 0.570093 0.725975 \n",
"20 1.006518 0.572075 0.725778 \n",
"\n",
" auc_test ks_test epoch loss_train loss_test \n",
"0 0.7691 0.4632 0 0 0.666412 \n",
"1 0.7863 0.4583 1 0.627416 0.628051 \n",
"2 0.7894 0.4670 2 0.59872 0.600769 \n",
"3 0.7911 0.4584 3 0.57982 0.582103 \n",
"4 0.7925 0.4611 4 0.568089 0.569897 \n",
"5 0.7927 0.4630 5 0.561046 0.562113 \n",
"6 0.7922 0.4630 6 0.556834 0.557198 \n",
"7 0.7929 0.4653 7 0.554242 0.554094 \n",
"8 0.7932 0.4630 8 0.552547 0.552126 \n",
"9 0.7937 0.4676 9 0.55134 0.550872 \n",
"10 0.7938 0.4742 10 0.5504 0.550071 \n",
"11 0.7942 0.4742 11 0.549615 0.549563 \n",
"12 0.7947 0.4693 12 0.548931 0.549247 \n",
"13 0.7952 0.4748 13 0.548323 0.549058 \n",
"14 0.7949 0.4748 14 0.547781 0.548955 \n",
"15 0.7950 0.4811 15 0.547301 0.548909 \n",
"16 0.7953 0.4860 16 0.546881 0.548903 \n",
"17 0.7949 0.4811 17 0.546517 0.548922 \n",
"18 0.7949 0.4923 18 0.546206 0.548958 \n",
"19 0.7953 0.4923 19 0.545945 0.549003 \n",
"20 0.7956 0.4923 20 0.545729 0.549054 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"样本分布
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 样本 | \n",
" 样本数 | \n",
" 样本占比 | \n",
" 坏样本数 | \n",
" 坏样本比例 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 训练集 | \n",
" 709 | \n",
" 70.90% | \n",
" 211 | \n",
" 29.76% | \n",
"
\n",
" \n",
" 1 | \n",
" 测试集 | \n",
" 291 | \n",
" 29.10% | \n",
" 89 | \n",
" 30.58% | \n",
"
\n",
" \n",
" 2 | \n",
" 合计 | \n",
" 1000 | \n",
" 100% | \n",
" 300 | \n",
" 30.00% | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 样本 样本数 样本占比 坏样本数 坏样本比例\n",
"0 训练集 709 70.90% 211 29.76%\n",
"1 测试集 291 29.10% 89 30.58%\n",
"2 合计 1000 100% 300 30.00%"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"模型结果
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"原模型\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 样本集 | \n",
" AUC | \n",
" KS | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 建模数据 | \n",
" 0.7779 | \n",
" 0.4224 | \n",
"
\n",
" \n",
" 1 | \n",
" 训练集 | \n",
" 0.7815 | \n",
" 0.4335 | \n",
"
\n",
" \n",
" 2 | \n",
" 测试集 | \n",
" 0.7691 | \n",
" 0.4632 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 样本集 AUC KS\n",
"0 建模数据 0.7779 0.4224\n",
"1 训练集 0.7815 0.4335\n",
"2 测试集 0.7691 0.4632"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"新模型\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 样本集 | \n",
" AUC | \n",
" KS | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 建模数据 | \n",
" 0.7964 | \n",
" 0.4671 | \n",
"
\n",
" \n",
" 1 | \n",
" 训练集 | \n",
" 0.7985 | \n",
" 0.4696 | \n",
"
\n",
" \n",
" 2 | \n",
" 测试集 | \n",
" 0.7911 | \n",
" 0.4584 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 样本集 AUC KS\n",
"0 建模数据 0.7964 0.4671\n",
"1 训练集 0.7985 0.4696\n",
"2 测试集 0.7911 0.4584"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"模型系数
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 变量 | \n",
" 原变量WOE拟合系数 | \n",
" 新变量WOE拟合系数 | \n",
" 释义 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" age_in_years | \n",
" 0.0616 | \n",
" 0.3448 | \n",
" 年龄 | \n",
"
\n",
" \n",
" 1 | \n",
" credit_history | \n",
" 0.0827 | \n",
" 0.3867 | \n",
" - | \n",
"
\n",
" \n",
" 2 | \n",
" duration_in_month | \n",
" 0.0201 | \n",
" 0.3172 | \n",
" - | \n",
"
\n",
" \n",
" 3 | \n",
" present_employment_since | \n",
" 0.0846 | \n",
" 0.3183 | \n",
" - | \n",
"
\n",
" \n",
" 4 | \n",
" purpose | \n",
" 0.0363 | \n",
" 0.3457 | \n",
" - | \n",
"
\n",
" \n",
" 5 | \n",
" savings_account_and_bonds | \n",
" 0.0562 | \n",
" 0.3075 | \n",
" - | \n",
"
\n",
" \n",
" 6 | \n",
" status_of_existing_checking_account | \n",
" 0.0766 | \n",
" 0.3877 | \n",
" - | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 变量 原变量WOE拟合系数 新变量WOE拟合系数 释义\n",
"0 age_in_years 0.0616 0.3448 年龄\n",
"1 credit_history 0.0827 0.3867 -\n",
"2 duration_in_month 0.0201 0.3172 -\n",
"3 present_employment_since 0.0846 0.3183 -\n",
"4 purpose 0.0363 0.3457 -\n",
"5 savings_account_and_bonds 0.0562 0.3075 -\n",
"6 status_of_existing_checking_account 0.0766 0.3877 -"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"分数分箱
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"建模数据上分数分箱\n",
"原模型\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" MODEL_SCORE_BIN | \n",
" 样本数 | \n",
" 坏样本数 | \n",
" 好样本数 | \n",
" 坏样本比例 | \n",
" 样本数比例 | \n",
" 总坏样本数 | \n",
" 总好样本数 | \n",
" 平均坏样本率 | \n",
" 累计坏样本数 | \n",
" 累计好样本数 | \n",
" 累计样本数 | \n",
" 累计坏样本比例 | \n",
" 累计好样本比例 | \n",
" KS | \n",
" LIFT | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" (0.529, inf] | \n",
" 100 | \n",
" 69 | \n",
" 31 | \n",
" 0.690 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 69 | \n",
" 31 | \n",
" 100 | \n",
" 0.230 | \n",
" 0.044 | \n",
" 0.186 | \n",
" 2.300 | \n",
"
\n",
" \n",
" 1 | \n",
" (0.519, 0.529] | \n",
" 100 | \n",
" 54 | \n",
" 46 | \n",
" 0.540 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 123 | \n",
" 77 | \n",
" 200 | \n",
" 0.410 | \n",
" 0.110 | \n",
" 0.300 | \n",
" 2.050 | \n",
"
\n",
" \n",
" 2 | \n",
" (0.512, 0.519] | \n",
" 99 | \n",
" 43 | \n",
" 56 | \n",
" 0.434 | \n",
" 0.099 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 166 | \n",
" 133 | \n",
" 299 | \n",
" 0.553 | \n",
" 0.190 | \n",
" 0.363 | \n",
" 1.851 | \n",
"
\n",
" \n",
" 3 | \n",
" (0.504, 0.512] | \n",
" 100 | \n",
" 38 | \n",
" 62 | \n",
" 0.380 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 204 | \n",
" 195 | \n",
" 399 | \n",
" 0.680 | \n",
" 0.279 | \n",
" 0.401 | \n",
" 1.704 | \n",
"
\n",
" \n",
" 4 | \n",
" (0.495, 0.504] | \n",
" 101 | \n",
" 34 | \n",
" 67 | \n",
" 0.337 | \n",
" 0.101 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 238 | \n",
" 262 | \n",
" 500 | \n",
" 0.793 | \n",
" 0.374 | \n",
" 0.419 | \n",
" 1.587 | \n",
"
\n",
" \n",
" 5 | \n",
" (0.487, 0.495] | \n",
" 100 | \n",
" 28 | \n",
" 72 | \n",
" 0.280 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 266 | \n",
" 334 | \n",
" 600 | \n",
" 0.887 | \n",
" 0.477 | \n",
" 0.410 | \n",
" 1.478 | \n",
"
\n",
" \n",
" 6 | \n",
" (0.477, 0.487] | \n",
" 100 | \n",
" 9 | \n",
" 91 | \n",
" 0.090 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 275 | \n",
" 425 | \n",
" 700 | \n",
" 0.917 | \n",
" 0.607 | \n",
" 0.310 | \n",
" 1.310 | \n",
"
\n",
" \n",
" 7 | \n",
" (0.466, 0.477] | \n",
" 100 | \n",
" 15 | \n",
" 85 | \n",
" 0.150 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 290 | \n",
" 510 | \n",
" 800 | \n",
" 0.967 | \n",
" 0.729 | \n",
" 0.238 | \n",
" 1.208 | \n",
"
\n",
" \n",
" 8 | \n",
" (0.456, 0.466] | \n",
" 100 | \n",
" 7 | \n",
" 93 | \n",
" 0.070 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 297 | \n",
" 603 | \n",
" 900 | \n",
" 0.990 | \n",
" 0.861 | \n",
" 0.129 | \n",
" 1.100 | \n",
"
\n",
" \n",
" 9 | \n",
" (-inf, 0.456] | \n",
" 100 | \n",
" 3 | \n",
" 97 | \n",
" 0.030 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 300 | \n",
" 700 | \n",
" 1000 | \n",
" 1.000 | \n",
" 1.000 | \n",
" 0.000 | \n",
" 1.000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MODEL_SCORE_BIN 样本数 坏样本数 好样本数 坏样本比例 样本数比例 总坏样本数 总好样本数 平均坏样本率 \\\n",
"0 (0.529, inf] 100 69 31 0.690 0.100 300 700 0.3 \n",
"1 (0.519, 0.529] 100 54 46 0.540 0.100 300 700 0.3 \n",
"2 (0.512, 0.519] 99 43 56 0.434 0.099 300 700 0.3 \n",
"3 (0.504, 0.512] 100 38 62 0.380 0.100 300 700 0.3 \n",
"4 (0.495, 0.504] 101 34 67 0.337 0.101 300 700 0.3 \n",
"5 (0.487, 0.495] 100 28 72 0.280 0.100 300 700 0.3 \n",
"6 (0.477, 0.487] 100 9 91 0.090 0.100 300 700 0.3 \n",
"7 (0.466, 0.477] 100 15 85 0.150 0.100 300 700 0.3 \n",
"8 (0.456, 0.466] 100 7 93 0.070 0.100 300 700 0.3 \n",
"9 (-inf, 0.456] 100 3 97 0.030 0.100 300 700 0.3 \n",
"\n",
" 累计坏样本数 累计好样本数 累计样本数 累计坏样本比例 累计好样本比例 KS LIFT \n",
"0 69 31 100 0.230 0.044 0.186 2.300 \n",
"1 123 77 200 0.410 0.110 0.300 2.050 \n",
"2 166 133 299 0.553 0.190 0.363 1.851 \n",
"3 204 195 399 0.680 0.279 0.401 1.704 \n",
"4 238 262 500 0.793 0.374 0.419 1.587 \n",
"5 266 334 600 0.887 0.477 0.410 1.478 \n",
"6 275 425 700 0.917 0.607 0.310 1.310 \n",
"7 290 510 800 0.967 0.729 0.238 1.208 \n",
"8 297 603 900 0.990 0.861 0.129 1.100 \n",
"9 300 700 1000 1.000 1.000 0.000 1.000 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"新模型\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" MODEL_SCORE_BIN | \n",
" 样本数 | \n",
" 坏样本数 | \n",
" 好样本数 | \n",
" 坏样本比例 | \n",
" 样本数比例 | \n",
" 总坏样本数 | \n",
" 总好样本数 | \n",
" 平均坏样本率 | \n",
" 累计坏样本数 | \n",
" 累计好样本数 | \n",
" 累计样本数 | \n",
" 累计坏样本比例 | \n",
" 累计好样本比例 | \n",
" KS | \n",
" LIFT | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" (0.652, inf] | \n",
" 100 | \n",
" 68 | \n",
" 32 | \n",
" 0.680 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 68 | \n",
" 32 | \n",
" 100 | \n",
" 0.227 | \n",
" 0.046 | \n",
" 0.181 | \n",
" 2.267 | \n",
"
\n",
" \n",
" 1 | \n",
" (0.604, 0.652] | \n",
" 99 | \n",
" 63 | \n",
" 36 | \n",
" 0.636 | \n",
" 0.099 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 131 | \n",
" 68 | \n",
" 199 | \n",
" 0.437 | \n",
" 0.097 | \n",
" 0.340 | \n",
" 2.194 | \n",
"
\n",
" \n",
" 2 | \n",
" (0.562, 0.604] | \n",
" 101 | \n",
" 42 | \n",
" 59 | \n",
" 0.416 | \n",
" 0.101 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 173 | \n",
" 127 | \n",
" 300 | \n",
" 0.577 | \n",
" 0.181 | \n",
" 0.396 | \n",
" 1.922 | \n",
"
\n",
" \n",
" 3 | \n",
" (0.517, 0.562] | \n",
" 100 | \n",
" 39 | \n",
" 61 | \n",
" 0.390 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 212 | \n",
" 188 | \n",
" 400 | \n",
" 0.707 | \n",
" 0.269 | \n",
" 0.438 | \n",
" 1.767 | \n",
"
\n",
" \n",
" 4 | \n",
" (0.47, 0.517] | \n",
" 100 | \n",
" 33 | \n",
" 67 | \n",
" 0.330 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 245 | \n",
" 255 | \n",
" 500 | \n",
" 0.817 | \n",
" 0.364 | \n",
" 0.453 | \n",
" 1.633 | \n",
"
\n",
" \n",
" 5 | \n",
" (0.424, 0.47] | \n",
" 100 | \n",
" 23 | \n",
" 77 | \n",
" 0.230 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 268 | \n",
" 332 | \n",
" 600 | \n",
" 0.893 | \n",
" 0.474 | \n",
" 0.419 | \n",
" 1.489 | \n",
"
\n",
" \n",
" 6 | \n",
" (0.378, 0.424] | \n",
" 100 | \n",
" 12 | \n",
" 88 | \n",
" 0.120 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 280 | \n",
" 420 | \n",
" 700 | \n",
" 0.933 | \n",
" 0.600 | \n",
" 0.333 | \n",
" 1.333 | \n",
"
\n",
" \n",
" 7 | \n",
" (0.333, 0.378] | \n",
" 99 | \n",
" 11 | \n",
" 88 | \n",
" 0.111 | \n",
" 0.099 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 291 | \n",
" 508 | \n",
" 799 | \n",
" 0.970 | \n",
" 0.726 | \n",
" 0.244 | \n",
" 1.214 | \n",
"
\n",
" \n",
" 8 | \n",
" (0.283, 0.333] | \n",
" 101 | \n",
" 7 | \n",
" 94 | \n",
" 0.069 | \n",
" 0.101 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 298 | \n",
" 602 | \n",
" 900 | \n",
" 0.993 | \n",
" 0.860 | \n",
" 0.133 | \n",
" 1.104 | \n",
"
\n",
" \n",
" 9 | \n",
" (-inf, 0.283] | \n",
" 100 | \n",
" 2 | \n",
" 98 | \n",
" 0.020 | \n",
" 0.100 | \n",
" 300 | \n",
" 700 | \n",
" 0.3 | \n",
" 300 | \n",
" 700 | \n",
" 1000 | \n",
" 1.000 | \n",
" 1.000 | \n",
" 0.000 | \n",
" 1.000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MODEL_SCORE_BIN 样本数 坏样本数 好样本数 坏样本比例 样本数比例 总坏样本数 总好样本数 平均坏样本率 \\\n",
"0 (0.652, inf] 100 68 32 0.680 0.100 300 700 0.3 \n",
"1 (0.604, 0.652] 99 63 36 0.636 0.099 300 700 0.3 \n",
"2 (0.562, 0.604] 101 42 59 0.416 0.101 300 700 0.3 \n",
"3 (0.517, 0.562] 100 39 61 0.390 0.100 300 700 0.3 \n",
"4 (0.47, 0.517] 100 33 67 0.330 0.100 300 700 0.3 \n",
"5 (0.424, 0.47] 100 23 77 0.230 0.100 300 700 0.3 \n",
"6 (0.378, 0.424] 100 12 88 0.120 0.100 300 700 0.3 \n",
"7 (0.333, 0.378] 99 11 88 0.111 0.099 300 700 0.3 \n",
"8 (0.283, 0.333] 101 7 94 0.069 0.101 300 700 0.3 \n",
"9 (-inf, 0.283] 100 2 98 0.020 0.100 300 700 0.3 \n",
"\n",
" 累计坏样本数 累计好样本数 累计样本数 累计坏样本比例 累计好样本比例 KS LIFT \n",
"0 68 32 100 0.227 0.046 0.181 2.267 \n",
"1 131 68 199 0.437 0.097 0.340 2.194 \n",
"2 173 127 300 0.577 0.181 0.396 1.922 \n",
"3 212 188 400 0.707 0.269 0.438 1.767 \n",
"4 245 255 500 0.817 0.364 0.453 1.633 \n",
"5 268 332 600 0.893 0.474 0.419 1.489 \n",
"6 280 420 700 0.933 0.600 0.333 1.333 \n",
"7 291 508 799 0.970 0.726 0.244 1.214 \n",
"8 298 602 900 0.993 0.860 0.133 1.104 \n",
"9 300 700 1000 1.000 1.000 0.000 1.000 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"变量趋势
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"建模数据上变量趋势\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"压力测试
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 违约率 | \n",
" 抽样次数 | \n",
" 样本数 | \n",
" 好样本数 | \n",
" 坏样本数 | \n",
" 平均AUC | \n",
" 最大AUC | \n",
" 最小AUC | \n",
" AUC标准差 | \n",
" 95%置信区间AUC | \n",
" 平均KS | \n",
" 最大KS | \n",
" 最小KS | \n",
" KS标准差 | \n",
" 95%置信区间KS | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.01 | \n",
" 10 | \n",
" 30000 | \n",
" 29700 | \n",
" 300 | \n",
" 0.796355 | \n",
" 0.796509 | \n",
" 0.796180 | \n",
" 0.000100 | \n",
" 0.7962 - 0.7966 | \n",
" 0.4524 | \n",
" 0.453 | \n",
" 0.450 | \n",
" 0.000917 | \n",
" 0.4506 - 0.4542 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.07 | \n",
" 10 | \n",
" 4285 | \n",
" 3985 | \n",
" 300 | \n",
" 0.796457 | \n",
" 0.797091 | \n",
" 0.795574 | \n",
" 0.000406 | \n",
" 0.7957 - 0.7973 | \n",
" 0.4520 | \n",
" 0.453 | \n",
" 0.448 | \n",
" 0.001414 | \n",
" 0.4492 - 0.4548 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.13 | \n",
" 10 | \n",
" 2307 | \n",
" 2007 | \n",
" 300 | \n",
" 0.796276 | \n",
" 0.798156 | \n",
" 0.794307 | \n",
" 0.001112 | \n",
" 0.7941 - 0.7985 | \n",
" 0.4610 | \n",
" 0.463 | \n",
" 0.460 | \n",
" 0.001183 | \n",
" 0.4587 - 0.4633 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.19 | \n",
" 10 | \n",
" 1578 | \n",
" 1278 | \n",
" 300 | \n",
" 0.796568 | \n",
" 0.800143 | \n",
" 0.792447 | \n",
" 0.002056 | \n",
" 0.7925 - 0.8006 | \n",
" 0.4427 | \n",
" 0.445 | \n",
" 0.435 | \n",
" 0.003874 | \n",
" 0.4351 - 0.4503 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.25 | \n",
" 10 | \n",
" 1200 | \n",
" 900 | \n",
" 300 | \n",
" 0.796370 | \n",
" 0.802052 | \n",
" 0.789824 | \n",
" 0.003290 | \n",
" 0.7899 - 0.8028 | \n",
" 0.4488 | \n",
" 0.463 | \n",
" 0.436 | \n",
" 0.007705 | \n",
" 0.4337 - 0.4639 | \n",
"
\n",
" \n",
" 5 | \n",
" 0.31 | \n",
" 10 | \n",
" 967 | \n",
" 667 | \n",
" 300 | \n",
" 0.795370 | \n",
" 0.798233 | \n",
" 0.790690 | \n",
" 0.002113 | \n",
" 0.7912 - 0.7995 | \n",
" 0.4515 | \n",
" 0.455 | \n",
" 0.440 | \n",
" 0.004080 | \n",
" 0.4435 - 0.4595 | \n",
"
\n",
" \n",
" 6 | \n",
" 0.37 | \n",
" 10 | \n",
" 810 | \n",
" 510 | \n",
" 300 | \n",
" 0.797565 | \n",
" 0.801712 | \n",
" 0.790467 | \n",
" 0.002867 | \n",
" 0.7919 - 0.8032 | \n",
" 0.4603 | \n",
" 0.480 | \n",
" 0.434 | \n",
" 0.014100 | \n",
" 0.4327 - 0.4879 | \n",
"
\n",
" \n",
" 7 | \n",
" 0.43 | \n",
" 10 | \n",
" 697 | \n",
" 397 | \n",
" 300 | \n",
" 0.797799 | \n",
" 0.804446 | \n",
" 0.788640 | \n",
" 0.004820 | \n",
" 0.7884 - 0.8072 | \n",
" 0.4469 | \n",
" 0.469 | \n",
" 0.427 | \n",
" 0.011597 | \n",
" 0.4242 - 0.4696 | \n",
"
\n",
" \n",
" 8 | \n",
" 0.49 | \n",
" 10 | \n",
" 612 | \n",
" 312 | \n",
" 300 | \n",
" 0.793975 | \n",
" 0.805791 | \n",
" 0.778226 | \n",
" 0.008381 | \n",
" 0.7775 - 0.8104 | \n",
" 0.4473 | \n",
" 0.478 | \n",
" 0.425 | \n",
" 0.016499 | \n",
" 0.4150 - 0.4796 | \n",
"
\n",
" \n",
" 9 | \n",
" 0.55 | \n",
" 10 | \n",
" 545 | \n",
" 245 | \n",
" 300 | \n",
" 0.794740 | \n",
" 0.812531 | \n",
" 0.772388 | \n",
" 0.012315 | \n",
" 0.7706 - 0.8189 | \n",
" 0.4562 | \n",
" 0.489 | \n",
" 0.410 | \n",
" 0.022754 | \n",
" 0.4116 - 0.5008 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 违约率 抽样次数 样本数 好样本数 坏样本数 平均AUC 最大AUC 最小AUC AUC标准差 \\\n",
"0 0.01 10 30000 29700 300 0.796355 0.796509 0.796180 0.000100 \n",
"1 0.07 10 4285 3985 300 0.796457 0.797091 0.795574 0.000406 \n",
"2 0.13 10 2307 2007 300 0.796276 0.798156 0.794307 0.001112 \n",
"3 0.19 10 1578 1278 300 0.796568 0.800143 0.792447 0.002056 \n",
"4 0.25 10 1200 900 300 0.796370 0.802052 0.789824 0.003290 \n",
"5 0.31 10 967 667 300 0.795370 0.798233 0.790690 0.002113 \n",
"6 0.37 10 810 510 300 0.797565 0.801712 0.790467 0.002867 \n",
"7 0.43 10 697 397 300 0.797799 0.804446 0.788640 0.004820 \n",
"8 0.49 10 612 312 300 0.793975 0.805791 0.778226 0.008381 \n",
"9 0.55 10 545 245 300 0.794740 0.812531 0.772388 0.012315 \n",
"\n",
" 95%置信区间AUC 平均KS 最大KS 最小KS KS标准差 95%置信区间KS \n",
"0 0.7962 - 0.7966 0.4524 0.453 0.450 0.000917 0.4506 - 0.4542 \n",
"1 0.7957 - 0.7973 0.4520 0.453 0.448 0.001414 0.4492 - 0.4548 \n",
"2 0.7941 - 0.7985 0.4610 0.463 0.460 0.001183 0.4587 - 0.4633 \n",
"3 0.7925 - 0.8006 0.4427 0.445 0.435 0.003874 0.4351 - 0.4503 \n",
"4 0.7899 - 0.8028 0.4488 0.463 0.436 0.007705 0.4337 - 0.4639 \n",
"5 0.7912 - 0.7995 0.4515 0.455 0.440 0.004080 0.4435 - 0.4595 \n",
"6 0.7919 - 0.8032 0.4603 0.480 0.434 0.014100 0.4327 - 0.4879 \n",
"7 0.7884 - 0.8072 0.4469 0.469 0.427 0.011597 0.4242 - 0.4696 \n",
"8 0.7775 - 0.8104 0.4473 0.478 0.425 0.016499 0.4150 - 0.4796 \n",
"9 0.7706 - 0.8189 0.4562 0.489 0.410 0.022754 0.4116 - 0.5008 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"评分卡
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" variable | \n",
" bin | \n",
" points | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" basepoints | \n",
" NaN | \n",
" 538.0 | \n",
"
\n",
" \n",
" 23 | \n",
" age_in_years | \n",
" 36 | \n",
" 26.0 | \n",
"
\n",
" \n",
" 24 | \n",
" age_in_years | \n",
" [-inf,25.0) | \n",
" -11.0 | \n",
"
\n",
" \n",
" 25 | \n",
" age_in_years | \n",
" [25.0,30.0) | \n",
" -4.0 | \n",
"
\n",
" \n",
" 26 | \n",
" age_in_years | \n",
" [30.0,35.0) | \n",
" -3.0 | \n",
"
\n",
" \n",
" 27 | \n",
" age_in_years | \n",
" [35.0,inf) | \n",
" 6.0 | \n",
"
\n",
" \n",
" 11 | \n",
" credit_history | \n",
" no credits taken/ all credits paid back duly%,... | \n",
" -36.0 | \n",
"
\n",
" \n",
" 12 | \n",
" credit_history | \n",
" existing credits paid back duly till now | \n",
" -1.0 | \n",
"
\n",
" \n",
" 13 | \n",
" credit_history | \n",
" delay in paying off in the past | \n",
" -4.0 | \n",
"
\n",
" \n",
" 14 | \n",
" credit_history | \n",
" critical account/ other credits existing (not ... | \n",
" 19.0 | \n",
"
\n",
" \n",
" 6 | \n",
" duration_in_month | \n",
" [-inf,8.0) | \n",
" 33.0 | \n",
"
\n",
" \n",
" 7 | \n",
" duration_in_month | \n",
" [8.0,15.0) | \n",
" 5.0 | \n",
"
\n",
" \n",
" 8 | \n",
" duration_in_month | \n",
" [15.0,25.0) | \n",
" -0.0 | \n",
"
\n",
" \n",
" 9 | \n",
" duration_in_month | \n",
" [25.0,35.0) | \n",
" -4.0 | \n",
"
\n",
" \n",
" 10 | \n",
" duration_in_month | \n",
" [35.0,inf) | \n",
" -18.0 | \n",
"
\n",
" \n",
" 15 | \n",
" present_employment_since | \n",
" unemployed%,%... < 1 year | \n",
" -11.0 | \n",
"
\n",
" \n",
" 16 | \n",
" present_employment_since | \n",
" 1 <= ... < 4 years | \n",
" -0.0 | \n",
"
\n",
" \n",
" 17 | \n",
" present_employment_since | \n",
" 4 <= ... < 7 years | \n",
" 10.0 | \n",
"
\n",
" \n",
" 18 | \n",
" present_employment_since | \n",
" ... >= 7 years | \n",
" 5.0 | \n",
"
\n",
" \n",
" 19 | \n",
" purpose | \n",
" retraining%,%car (used) | \n",
" 22.0 | \n",
"
\n",
" \n",
" 20 | \n",
" purpose | \n",
" radio/television | \n",
" 9.0 | \n",
"
\n",
" \n",
" 21 | \n",
" purpose | \n",
" furniture/equipment%,%business%,%repairs | \n",
" -3.0 | \n",
"
\n",
" \n",
" 22 | \n",
" purpose | \n",
" domestic appliances%,%education%,%car (new)%,%... | \n",
" -9.0 | \n",
"
\n",
" \n",
" 0 | \n",
" savings_account_and_bonds | \n",
" ... < 100 DM%,%100 <= ... < 500 DM | \n",
" -5.0 | \n",
"
\n",
" \n",
" 1 | \n",
" savings_account_and_bonds | \n",
" 500 <= ... < 1000 DM%,%... >= 1000 DM | \n",
" 21.0 | \n",
"
\n",
" \n",
" 2 | \n",
" savings_account_and_bonds | \n",
" unknown/ no savings account | \n",
" 11.0 | \n",
"
\n",
" \n",
" 3 | \n",
" status_of_existing_checking_account | \n",
" ... < 0 DM%,%0 <= ... < 200 DM | \n",
" -17.0 | \n",
"
\n",
" \n",
" 4 | \n",
" status_of_existing_checking_account | \n",
" ... >= 200 DM / salary assignments for at leas... | \n",
" 13.0 | \n",
"
\n",
" \n",
" 5 | \n",
" status_of_existing_checking_account | \n",
" no checking account | \n",
" 33.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" variable \\\n",
"0 basepoints \n",
"23 age_in_years \n",
"24 age_in_years \n",
"25 age_in_years \n",
"26 age_in_years \n",
"27 age_in_years \n",
"11 credit_history \n",
"12 credit_history \n",
"13 credit_history \n",
"14 credit_history \n",
"6 duration_in_month \n",
"7 duration_in_month \n",
"8 duration_in_month \n",
"9 duration_in_month \n",
"10 duration_in_month \n",
"15 present_employment_since \n",
"16 present_employment_since \n",
"17 present_employment_since \n",
"18 present_employment_since \n",
"19 purpose \n",
"20 purpose \n",
"21 purpose \n",
"22 purpose \n",
"0 savings_account_and_bonds \n",
"1 savings_account_and_bonds \n",
"2 savings_account_and_bonds \n",
"3 status_of_existing_checking_account \n",
"4 status_of_existing_checking_account \n",
"5 status_of_existing_checking_account \n",
"\n",
" bin points \n",
"0 NaN 538.0 \n",
"23 36 26.0 \n",
"24 [-inf,25.0) -11.0 \n",
"25 [25.0,30.0) -4.0 \n",
"26 [30.0,35.0) -3.0 \n",
"27 [35.0,inf) 6.0 \n",
"11 no credits taken/ all credits paid back duly%,... -36.0 \n",
"12 existing credits paid back duly till now -1.0 \n",
"13 delay in paying off in the past -4.0 \n",
"14 critical account/ other credits existing (not ... 19.0 \n",
"6 [-inf,8.0) 33.0 \n",
"7 [8.0,15.0) 5.0 \n",
"8 [15.0,25.0) -0.0 \n",
"9 [25.0,35.0) -4.0 \n",
"10 [35.0,inf) -18.0 \n",
"15 unemployed%,%... < 1 year -11.0 \n",
"16 1 <= ... < 4 years -0.0 \n",
"17 4 <= ... < 7 years 10.0 \n",
"18 ... >= 7 years 5.0 \n",
"19 retraining%,%car (used) 22.0 \n",
"20 radio/television 9.0 \n",
"21 furniture/equipment%,%business%,%repairs -3.0 \n",
"22 domestic appliances%,%education%,%car (new)%,%... -9.0 \n",
"0 ... < 100 DM%,%100 <= ... < 500 DM -5.0 \n",
"1 500 <= ... < 1000 DM%,%... >= 1000 DM 21.0 \n",
"2 unknown/ no savings account 11.0 \n",
"3 ... < 0 DM%,%0 <= ... < 200 DM -17.0 \n",
"4 ... >= 200 DM / salary assignments for at leas... 13.0 \n",
"5 no checking account 33.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"模型报告文件储存路径:./cache/train/OnlineLearningDemo/OnlineLearning报告.docx\n",
"olcfg save to【./cache/train/OnlineLearningDemo/olcfg.json】success. \n",
"feature save to【./cache/train/OnlineLearningDemo/feature.csv】success. \n",
"model save to【./cache/train/OnlineLearningDemo/coef.json】success. \n",
"model save to【./cache/train/OnlineLearningDemo/card.csv】success. \n"
]
}
],
"source": [
"# 特征处理\n",
"cfg = {\n",
"# 模型系数,分箱信息等,请参考ol_resources_demo目录下文件\n",
"# 模型系数文件 coef.json(如果有常数项(截距)请用const作为key)\n",
"# 分箱信息文件 feature.csv(数值型的分箱信息请按升序排列)\n",
"# 生成评分卡所需信息 card.cfg() \n",
"\"path_resources\": \"/root/notebook/ol_resources_demo\",\n",
"# 项目名称,影响数据存储位置\n",
"\"project_name\": \"OnlineLearningDemo\",\n",
"\"y_column\": \"creditability\",\n",
"# 学习率\n",
"\"lr\": 0.01,\n",
"# 单次更新批大小\n",
"\"batch_size\": 64,\n",
"# 训练轮数\n",
"\"epochs\": 20,\n",
"\"jupyter_print\": True,\n",
"# 压力测试\n",
"\"stress_test\": True,\n",
"# 压力测试抽样次数\n",
"\"stress_sample_times\": 10,\n",
"\"columns_anns\":{\n",
" \"age_in_years\":\"年龄\"\n",
"}\n",
"}\n",
"\n",
"# 训练并生成报告\n",
"trainer = OnlineLearningTrainer(data=data, **cfg)\n",
"trainer.train()\n",
"trainer.report(epoch=3)\n",
"trainer.save()"
]
},
{
"cell_type": "markdown",
"id": "2421e9cc",
"metadata": {},
"source": [
"## 加载模型"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "2583f08b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"olcfg load from【./cache/train/OnlineLearningDemo/olcfg.json】success. \n",
"项目路径:【./cache/train/OnlineLearningDemo】\n",
"coef load from【./cache/train/OnlineLearningDemo/coef.json】success.\n",
"feature load from【./cache/train/OnlineLearningDemo/feature.csv】success.\n"
]
},
{
"data": {
"text/plain": [
"{'KS': 0.4584,\n",
" 'AUC': 0.7911,\n",
" 'Gini': 0.5822,\n",
" 'pic': }"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = OnlineLearningTrainer.load(\"./cache/train/OnlineLearningDemo/\")\n",
"prob = model.prob(test_data)\n",
"sc.perf_eva(test_data[\"creditability\"], prob, title=\"test\", show_plot=True)"
]
},
{
"cell_type": "markdown",
"id": "aa289b61",
"metadata": {},
"source": [
"## 计算psi"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "225fa7d7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"模型psi: 0.061\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" MODEL_SCORE_BIN | \n",
" psi | \n",
" 训练样本数 | \n",
" 测试样本数 | \n",
" 训练样本数比例 | \n",
" 测试样本数比例 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" (0.649, inf] | \n",
" 0.001 | \n",
" 70 | \n",
" 31 | \n",
" 0.099 | \n",
" 0.107 | \n",
"
\n",
" \n",
" 1 | \n",
" (0.602, 0.649] | \n",
" 0.001 | \n",
" 72 | \n",
" 32 | \n",
" 0.102 | \n",
" 0.110 | \n",
"
\n",
" \n",
" 2 | \n",
" (0.562, 0.602] | \n",
" 0.001 | \n",
" 71 | \n",
" 26 | \n",
" 0.100 | \n",
" 0.089 | \n",
"
\n",
" \n",
" 3 | \n",
" (0.519, 0.562] | \n",
" 0.002 | \n",
" 71 | \n",
" 25 | \n",
" 0.100 | \n",
" 0.086 | \n",
"
\n",
" \n",
" 4 | \n",
" (0.467, 0.519] | \n",
" 0.014 | \n",
" 69 | \n",
" 40 | \n",
" 0.097 | \n",
" 0.137 | \n",
"
\n",
" \n",
" 5 | \n",
" (0.421, 0.467] | \n",
" 0.004 | \n",
" 72 | \n",
" 24 | \n",
" 0.102 | \n",
" 0.082 | \n",
"
\n",
" \n",
" 6 | \n",
" (0.382, 0.421] | \n",
" 0.023 | \n",
" 71 | \n",
" 17 | \n",
" 0.100 | \n",
" 0.058 | \n",
"
\n",
" \n",
" 7 | \n",
" (0.337, 0.382] | \n",
" 0.001 | \n",
" 71 | \n",
" 27 | \n",
" 0.100 | \n",
" 0.093 | \n",
"
\n",
" \n",
" 8 | \n",
" (0.293, 0.337] | \n",
" 0.000 | \n",
" 71 | \n",
" 28 | \n",
" 0.100 | \n",
" 0.096 | \n",
"
\n",
" \n",
" 9 | \n",
" (-inf, 0.293] | \n",
" 0.014 | \n",
" 71 | \n",
" 41 | \n",
" 0.100 | \n",
" 0.141 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MODEL_SCORE_BIN psi 训练样本数 测试样本数 训练样本数比例 测试样本数比例\n",
"0 (0.649, inf] 0.001 70 31 0.099 0.107\n",
"1 (0.602, 0.649] 0.001 72 32 0.102 0.110\n",
"2 (0.562, 0.602] 0.001 71 26 0.100 0.089\n",
"3 (0.519, 0.562] 0.002 71 25 0.100 0.086\n",
"4 (0.467, 0.519] 0.014 69 40 0.097 0.137\n",
"5 (0.421, 0.467] 0.004 72 24 0.102 0.082\n",
"6 (0.382, 0.421] 0.023 71 17 0.100 0.058\n",
"7 (0.337, 0.382] 0.001 71 27 0.100 0.093\n",
"8 (0.293, 0.337] 0.000 71 28 0.100 0.096\n",
"9 (-inf, 0.293] 0.014 71 41 0.100 0.141"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"# points=[0, 0.2, 0.3, 0.4, 1]\n",
"points=None\n",
"psi = model.psi(train_data, test_data, points=points)\n",
"psi\n",
"# psi[\"psi\"].sum()"
]
}
],
"metadata": {
"celltoolbar": "编辑元数据",
"kernelspec": {
"display_name": "Python [conda env:analysis]",
"language": "python",
"name": "conda-env-analysis-py"
},
"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"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {
"height": "calc(100% - 180px)",
"left": "10px",
"top": "150px",
"width": "372.364px"
},
"toc_section_display": true,
"toc_window_display": true
},
"toc-autonumbering": false,
"toc-showcode": false,
"toc-showmarkdowntxt": false,
"toc-showtags": false
},
"nbformat": 4,
"nbformat_minor": 5
}