机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

案例介绍

桑坦德银行(Santander Bank)创立于1857年,是西班牙最大银行、欧洲第二大银行。它的业务和服务包括零售银行、商业银行、投资银行、私人银行、保险、资产管理、私人投资等。本案例根据桑坦德银行提供的客户数据,预测客户未来的交易行为。

  • 代码实现:Python

  • 数据来源: Santander

数据描述

隐去了客户个人信息的数据集,包括数值特征变量、二值target变量、字符型ID_code变量。我们的任务是预测检验集里的target值。

加载包

导入库

from sklearn.model_selection import train_test_split
from sklearn.model_selection import StratifiedKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from catboost import CatBoostClassifier,Pool
from IPython.display import display
import matplotlib.patches as patch
import matplotlib.pyplot as plt
from sklearn.svm import NuSVR
from scipy.stats import norm
from sklearn import svm
import lightgbm as lgb
import xgboost as xgb
import seaborn as sns
import pandas as pd
import numpy as np
import warnings
import time
import glob
import sys
import os
import gc
from sklearn.model_selection import train_test_split
from sklearn.model_selection import StratifiedKFoldfrom IPython.display import display
import matplotlib.patches as patch
import matplotlib.pyplot as pltfrom scipy.stats import normimport seaborn as sns
import pandas as pd
import numpy as np
import warnings
import time
import glob
import sys
import os
import gc

设置

# for get better result chage fold_n to 5
fold_n=5
folds = StratifiedKFold(n_splits=fold_n, shuffle=True, random_state=10)warnings.filterwarnings('ignore')
plt.style.use('ggplot')
np.set_printoptions(suppress=True)
pd.set_option("display.precision", 15)

版本

print('pandas: {}'.format(pd.__version__))
print('numpy: {}'.format(np.__version__))
print('Python: {}'.format(sys.version))

pandas: 0.22.0

numpy: 1.14.1

Python: 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]

问题定义

在这里,我们要帮助银行方面识别哪些客户将在未来做一个特定的交易,不论交易金额是多少。具体上说,我们的任务是预测检验集的target的值,它是一个二值变量。

探索性数据分析

在这一节,我们将使用图形和数值技术探索数据的意义。主要包括:

  • 数据收集

  • 可视化

  • 数据预处理

  • 数据清洗

显示数据所在目录里的文件。

print(os.listdir("../input/"))

[‘test.csv’, ‘test.csv.zip’, ‘train.csv’, ‘train.csv.zip’]

print(os.listdir("e:/kaggle_exercises/santander/input/"))

导入训练集与检验集。

train= pd.read_csv("../input/train.csv")
test = pd.read_csv('../input/test.csv')
train= pd.read_csv("e:/kaggle_exercises/santander/input/train.csv")
test = pd.read_csv('e:/kaggle_exercises/santander/input/test.csv')
print(train.shape), print(test.shape)

(200000, 202)

(200000, 201)

显示训练集前5行,观察数据结构。

print(train.head(5))



数据集的内存使用大小为300M, 为了减少内存开销,我们打算缩减一半大小的数据量。为此,我们定义一个减少内存使用的函数。

def reduce_mem_usage(df):start_mem_usg = df.memory_usage().sum() / 1024**2 print("Memory usage of properties dataframe is :",start_mem_usg," MB")NAlist = [] # Keeps track of columns that have missing values filled in. for col in df.columns:if df[col].dtype != object:  # Exclude strings# Print current column typeprint("******************************")print("Column: ",col)print("dtype before: ",df[col].dtype)# make variables for Int, max and minIsInt = Falsemx = df[col].max()mn = df[col].min()# Integer does not support NA, therefore, NA needs to be filledif not np.isfinite(df[col]).all(): NAlist.append(col)df[col].fillna(mn-1,inplace=True)  # test if column can be converted to an integerasint = df[col].fillna(0).astype(np.int64)result = (df[col] - asint)result = result.sum()if result > -0.01 and result < 0.01:IsInt = True# Make Integer/unsigned Integer datatypesif IsInt:if mn >= 0:if mx < 255:df[col] = df[col].astype(np.uint8)elif mx < 65535:df[col] = df[col].astype(np.uint16)elif mx < 4294967295:df[col] = df[col].astype(np.uint32)else:df[col] = df[col].astype(np.uint64)else:if mn > np.iinfo(np.int8).min and mx < np.iinfo(np.int8).max:df[col] = df[col].astype(np.int8)elif mn > np.iinfo(np.int16).min and mx < np.iinfo(np.int16).max:df[col] = df[col].astype(np.int16)elif mn > np.iinfo(np.int32).min and mx < np.iinfo(np.int32).max:df[col] = df[col].astype(np.int32)elif mn > np.iinfo(np.int64).min and mx < np.iinfo(np.int64).max:df[col] = df[col].astype(np.int64)    # Make float datatypes 32 bitelse:df[col] = df[col].astype(np.float32)# Print new column typeprint("dtype after: ",df[col].dtype)print("******************************")# Print final resultprint("___MEMORY USAGE AFTER COMPLETION:___")mem_usg = df.memory_usage().sum() / 1024**2 print("Memory usage is: ",mem_usg," MB")print("This is ",100*mem_usg/start_mem_usg,"% of the initial size")return df, NAlist
  • 减少训练集使用的内存
train, NAlist = reduce_mem_usage(train)
print("_________________")
print("")
print("Warning: the following columns have missing values filled with 'df['column_name'].min() -1': ")
print("_________________")
print("")
print(NAlist)

Memory usage of properties dataframe is : 308.2276153564453 MB

MEMORY USAGE AFTER COMPLETION:

Memory usage is: 154.30458068847656 MB

This is 50.06189354903625 % of the initial size

  • 减少检验集使用的内存
test, NAlist = reduce_mem_usage(test)
print("_________________")
print("")
print("Warning: the following columns have missing values filled with 'df['column_name'].min() -1': ")
print("_________________")
print("")
print(NAlist)

数据集域

print(train.columns)

print(len(train.columns))

202

print(train.info())

print(train.describe())

可视化

直方图

目标变量target是0-1型二值变量,我们画出它的频数直方图和饼图。

f,ax=plt.subplots(1,2,figsize=(18,8))
train['target'].value_counts().plot.pie(explode=[0,0.1],autopct='%1.1f%%',ax=ax[0],shadow=True)
ax[0].set_title('target')
ax[0].set_ylabel('')
sns.countplot('target',data=train,ax=ax[1])
ax[1].set_title('target')
plt.show()


我们发现,target的数据是不平衡的,即,0值占绝大多数(90%).

未完待续

银行客户交易行为预测:如何降低内存的使用量相关推荐

  1. 天池案例赛--银行产品认购预测

    大赛是以银行产品认购预测为背景,根据记录的用户信息来推测该银行的用户是否会购买银行的产品. 赛题提供的数据集有3万条(训练集2.25万,测试集0.75万),包括20个特征变量,本文构建了XGBoost ...

  2. 银行排队信息预测系统数学建模

    参加软件学院的一个项目,大概内容是银行的排队信息查询,预测,通过这个给客户一个有用的建议:选择附近的哪个银行更为合理.带队老师把数学建模的任务丢给了我.接下来我的几天时间就这么被吞噬了.        ...

  3. Pytorch高效降低内存 torch.utils.checkpoint()的使用

    文章目录 一.Checkpoint 机制 二. torch.utils.checkpoint() 介绍 1.官网文档 2.源代码: 3 .补充 4.说明 三. 几个使用示例 3. 1 示例1 3.2 ...

  4. 【数据分析】基于XGboost(决策树)的银行产品认购预测--小林月

    目录 一.数据探索: 1.1 读取数据 1.2查看数据 1.3 数据预处理 二.字段描述 2.1 非离散型数据 2.2离散数值字段 三.数据建模 四.评估指标: 4.1:混淆矩阵 4.2: 准确率,回 ...

  5. Spark ML(lib)实验:利用银行营销数据集预测客户是否订阅产品

    一.实验描述 数据集来源于UCI的银行营销数据集(UCI Machine Learning Repository: Bank Marketing Data Set).数据与葡萄牙一家银行机构的直接营销 ...

  6. python信用卡违约_Python数据分析及可视化实例之银行信用卡违约预测(24)

    1.项目背景: 银行体系对于信用可违约进行预测,原始数据集如下: 2.分析步骤: (1)数据清洗(Data Cleaning) (2) 探索性可视化(Exploratory Visualization ...

  7. python信用卡违约预测分析_Python数据分析及可视化实例之银行信用卡违约预测(24)...

    1.项目背景: 银行体系对于信用可违约进行预测,原始数据集如下: 2.分析步骤: (1)数据清洗(Data Cleaning) (2) 探索性可视化(Exploratory Visualization ...

  8. antimalware service executable占用内存过高_SQLServer占用服务器内存过高,更改这个设置就能降低内存使用率

    前两天我的服务器突然告警提示我的内存占用过高,使用率高达94.3%.当时我就有点纳闷了,服务器配置 互联网服务器 是4核8G的,只装了4个应用程序,其中就有SQL SERVER2012,而且使用频率也 ...

  9. ws2812 程序设计与应用(2)DMA 控制 PWM 占空比(双缓存降低内存消耗)

    本文开发环境: MCU型号:STM32F103C8T6 IDE环境: MDK 5.27 代码生成工具:STM32CubeMx 5.6.1 HAL库版本:STM32Cube_FW_F1_V1.8.0 本 ...

  10. 基于Python的银行信用卡欺诈预测模型设计 文档+任务书+项目源码及数据

    目录 第一章 引言 3 1.1研究背景及意义 3 1.2研究现状 3 1.3行文思路及框架 4 第二章 数据探索性分析 6 2.1目标变量 6 2.2特征分布 6 2.3特征与标签相关性分析 8 2. ...

最新文章

  1. 差点就被联通客服给营销了...
  2. 在 VirtualBox 中 CentOS 网络设置
  3. php apache配置测试端口,详解安装配置Windows版apache服务器及压力测试
  4. 怎么潜入别人家_小学生发明防雾口罩,别人家的孩子是怎么养成的?
  5. 计算机课的情感目标是什么意思,教案中情感目标是什么.doc
  6. iplat-ui源码解读
  7. 美国政府发布关键海事行业的网络安全规划
  8. Inside the Linux Operating System[1]
  9. linux ping 获取网络状态,Shell - 长 ping 脚本监控网络状态
  10. 台达触摸屏编程软件_松下PLC远程编程调试流程
  11. 大意导致Java访问DB2库时导出SQLCODE=-301, SQLSTATE=07006错误
  12. 吴恩达深度学习课程第二章第一周编程作业
  13. 《软件方法》第1章 建模和UML
  14. FAST FW150R软件版本升级解决一些网页无法加载问题
  15. matlab中灰色模型代码,灰色模型matlab代码
  16. MySQL计算同比和环比
  17. pycharm关闭拼写检查
  18. 菜鸟学IT之Hadoop综合大作业
  19. Ubuntu无法上网问题解决
  20. JS如何取得URL里的参数?

热门文章

  1. php emoji处理微信表情
  2. Linux下安装mongodb详细过程
  3. jquery统计字数的小功能
  4. “OSPF” Router-ID
  5. 自建CA生成证书详解
  6. IPv6 to IPv4过渡技术——手工隧道和GRE隧道配置实例
  7. HDOJ--2094--产生冠军
  8. verilog语法实例学习(3)
  9. Mac 10.12使用free命令(fish)
  10. 五个步骤,搭建企业的“大数据视野”