UniversalBank客户财务状况数据集和聚类分析

摘要:

合集:AI案例-ML-泛金融业
AI问题:聚类问题
数据集:UniversalBank客户财务状况数据集
数据集价值:用于客户细分、贷款违约预测、营销分析等任务。
解决方案:聚类分析

一、问题描述

UniversalBank.csv 数据集常用于教学和数据分析任务,尤其是在银行或金融领域的客户分析中。该数据集通常包含关于银行客户的信息,列出多种与客户背景和行为相关的变量。用于预测基于年龄、经验、收入、地点、家庭、教育、现有抵押贷款、信用等因素的个人贷款批准情况。这类数据通常用于客户细分、贷款违约预测、营销分析等任务。

二、数据集内容

数据结构

UniversalBank.csv的字段包括:

1. ID: 客户的唯一标识符(整数类型)。
2. Age: 客户的年龄(整数类型)。
3. Experience: 客户的工作经验(以年计,整数类型)。
4. Income: 客户的年收入(以美元为单位,整数类型)。
5. ZIP Code: 客户的邮政编码(整数类型)。
6. Family: 客户的家庭成员数量(整数类型)。
7. CCAvg: 客户每月信用卡消费的平均金额(浮点类型)。
8. Education: 客户的最高学历,分为三个等级(整数类型:1-本科,2-硕士,3-博士)。
9. Mortgage: 客户的房贷金额(整数类型)。
10. Personal Loan: 二进制变量,表示银行是否对个人进行贷款授信(1表示授信,0表示没有)。
11. Securities Account: 二进制变量,表示客户是否持有证券账户(1表示持有,0表示没有)。
12. CD Account: 二进制变量,表示客户是否持有定期存款账户(1表示持有,0表示没有)。
13. Online: 二进制变量,表示客户是否使用网上银行(1表示使用,0表示没有使用)。
14. CreditCard: 二进制变量,表示客户是否持有银行的信用卡(1表示持有,0表示没有)。

数据样例

IDAgeExperienceIncomeZIP CodeFamilyCCAvgEducationMortgagePersonal LoanSecurities AccountCD AccountOnlineCreditCard
1251499110741.61001000
24519349008931.51001000
339151194720111000000
43591009411212.72000000
53584591330412000001
63713299212140.4215500010

三、K近邻分类算法

K近邻(K-Nearest Neighbors,简称KNN)算法是一种基于实例的学习方法,其核心思想是如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中,大多数属于某一个类别,则该样本也属于这个类别。

K近邻算法的关键在于k值的选取,以及合适的度量函数。

需要指出的是,KNN在做预测时的计算量和训练集规模相关,因为待测试数据需要和训练集中的每个数据对象计算距离。如果训练集很大,则做分类决策时计算量将非常大。

源码解析

  1. 导入必要的库 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier
  2. 建立数据集,数据预处理
    • 使用 pd.read_csv 读取数据集。
    • 将目标变量 Personal Loan 分离出来,作为 y
    • 去掉无关特征 IDZIP Code,剩下的特征作为 X
    • 使用 train_test_split 将数据集划分为训练集和测试集,测试集占比30%。
    df = pd.read_csv('UniversalBank.csv') # 读取CSV文件 y = df['Personal Loan'] # 目标变量。银行是否对个人进行贷款授信。 X = df.drop(['ID', 'ZIP Code', 'Personal Loan'], axis=1) # 特征变量,去掉ID和ZIP Code列 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) # 数据集划分
  3. 采用两种weights参数建立KNN模型,并评估
    • 使用 for 循环遍历两种不同的 weights 参数:uniformdistance
    • 对于每种 weights 参数,创建一个 KNeighborsClassifier 实例,并使用训练数据进行训练。
    • 使用 score 方法计算模型在测试集上的准确度,并输出结果。
    n_neighbors = 5 # K值 for weights in ['uniform', 'distance']: knn = KNeighborsClassifier(n_neighbors, weights=weights) # 创建KNN分类器 knn.fit(X_train, y_train) # 训练模型 acc = knn.score(X_test, y_test) # 评估模型 print('%s 准确度: %s' % (weights, acc)) # 输出准确度

安装

conda create -n datamining python=3.10  
conda activate datamining
conda install pandas numpy scikit-learn

主要开发包版本号

scikit-learn              1.5.2           py310hf2a6c47_1    conda-forge

执行

python knn.py distance 准确度: 0.9173333333333333

四、获取案例套装

需要登录后才允许下载文件包。登录 需要登录后才允许下载文件包。登录

发表评论