简介

毕设帮助,开题指导,资料分享,疑问解答(见文末)

背景

某金融公司新推出的理财产品,预测客户是否会接受新的产品,并提高产品的销售量。

数据内容

根据公司提供的用户数据,包括职业、婚姻状态房产、年龄、违约情况等数据。与近期购买的详细资料,包括金额、购买频率,时间等相关数据。

数据分析目标

根据客户的信息,将客户进行分类打上标签,预测该用户是否会购买理财产品以及是否需要对该用户进行主动销售。

数据分析思路

对客户进行精准营销可以提高产品的销售。那么对产品分析转换为对客户的分析。

考虑客户是否能接受新的产品,可以从两方面着手分析。

  • 依据往期客户数据进行是否购买预测,二分类回归问题。
  • 根据客户价值进行划分,对高价值客户加大营销力度。
  • 根据结果可以对客户进行分群划分,降低营销成本。

数据分析

数据预处理

数据观察

IO1 = r'MyData\Yian_Cinformation1782.csv'
IO2= r'MyData\Yian_details1782.csv'
data1 = pd.read_csv(IO, header=None, names=(['id','name','age','job','marital','education','default','balance','housing','loan','contact','day','month','duration','campaign','pdays','previous','poutcome','address','y'])
data2 = pd.read_csv(IO2)

根据业务常识,客户基本信息删除如ID,姓名等无关维度。
还款明细提取总计金额,购买时间,购买产品数等维度。

数据清洗

客户资料文本数据较多,去除缺失的数据以免影响结果。

数据分析

文本数值化 ,本次基本信息中主要处理的是职业,学历,地址等文本信息。

data1.groupby(['job']).describe()

根据业务经验将对应的职业划分打分。

def Replace (X,columns):a = X.groupby([columns],as_index=False)[columns].agg({'cnt':'count'})for i in a[columns]:X[columns] = X[columns].replace(i,a[(a[columns]== i )].index.tolist()[0])return (X)def Len(X,columns):for i in X[columns]:X[columns] = X[columns].replace(i,len(i))return (X)

将文本转化为数值

def Sigmoid (X):return (1.0 / (1 + np.exp(-float(X)))

数据归一化

相关性分析

数据处理之后,选择相关性最强的前17位维度进行分析观测

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns  corrmat = data.corr()
k = 17
plt.figure(figsize=(12,9))
cols = corrmat.nlargest(k, 'y')['y'].index
cm = np.corrcoef(data[cols].values.T)
sns.set(font_scale=1.25,font='SimHei')
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', cmap='YlOrBr_r',annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)plt.show()

提取维度

data1客户分析,将相关性较低的维度数据删除。
data2贷款记录,提取R,F,M。

import datetime as dt
now = dt.datetime(2017,11,14)#查看交易最早-最晚日期
print(data2['Borrowing_date'].min())
print(data2['Borrowing_date'].max())#构造交易时间间隔变量 hist
data2['hist'] = now - df['Borrowing_date']
data2['hist'].astype('timedelta64[D]')
data2['hist'] = data2['hist'] / np.timedelta64(1,'D')
data2.head()#生成R F M 特征变量   agg()分组函数
customer = data2.groupby('customer_id').agg(['hist':'min',             #Recency'customer_id':'count',    #Frequency'tran_amount':'sum'])     #Monetary
#对变量重命名
customer.rename(columns = {'hist':'recency''customer_id':'frequency''tran_amount':'monetary'},inplace = True)

特征工程

验衍生出新的维度。

  • a. 统计每个客户使用的不同产品量,1列(目的:分析产品总数与是否购买关联)
  • b.统计每个客户近期的产品购买频率。(目的:分析客户的近期的资金需求量)
  • c. 统计客户借款金额与还款的差值。(目的:分析客户贷款产品的需求度)

对已有数据进行观测分析
eg:分析借贷时间可以针对销售时间进行调整。

plt.subplots(figsize=(12,9))
sns.countplot(x='month',,hue='day',data=data1)

特征筛选

本次维度较少,但是为了提高模型预测准确率,对数据进行特征整合。
考虑因子分析与主成分分析,根据模型准确率选择使用。

RMF分析
K-Means聚类算法对客户数据进行分群

from sklearn.externals import joblib
from sklearn.cluster import KMeans
k=5
kmodel=KMeans(n_clusters=k,n_jobs=4)
kmodel.fit(customer)
r1=pd.Series(kmodel.labels_).value_counts()
r2=pd.DataFrame(kmodel.cluster_centers_)
r3=pd.Series(['group1','group2','group3','group4','group5',])
r=pd.concat([r3,r1,r2],axis=1)r.columns=['聚类类别','聚类个数']+list(customer.columns)
r.to_csv(KMeans_result,encoding = 'utf_8_sig',index=False)

通过观测客户数及聚类中心,划分客户分类。

labels = np.array(list(customer.columns))
dataLenth = 5
r4=r2.T
r4.columns=list(customer.columns)
fig = plt.figure()
y=[]
for x in list(customer.columns):dt= r4[x]dt=np.concatenate((dt,[dt[0]]))y.append(dt)
ax = fig.add_subplot(111, polar=True)
angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
ax.plot(angles, y[0], 'b-', linewidth=2)
ax.plot(angles, y[1], 'r-', linewidth=2)
ax.plot(angles, y[2], 'g-', linewidth=2)
ax.plot(angles, y[3], 'y-', linewidth=2)
ax.plot(angles, y[4], 'm-', linewidth=2)
plt.rcParams['font.sans-serif']=['SimHei']
ax.legend(r3,loc=1)
ax.set_thetagrids(angles * 180/np.i, labels, fontproperties="SimHei")
ax.set_title("Customer_loan", va='bottom', fontproperties="SimHei")
ax.grid(True)
plt.show()

综合分析
根据2次结果综合考虑,将5类客户打上标签,划分价值群。

预测建模
二分类问题考虑逻辑回归与随机森林进行训练。
交叉验证

from sklearn import cross_validation
X = data1
Y1 = X['y']
X1 = X.drop(['y'],axis = 1)
X1_train, X1_test, y1_train, y1_test = \
cross_validation.train_test_split( X1, Y1, test_size=0.3, random_state=0)

设置early stop round 提前停止迭代参数,防止过拟合,其他参数采用随机搜索寻优。

def LR(X_train, X_test, y_train, y_test):   from sklearn.linear_model import LogisticRegressionlor = LogisticRegression(penalty='l1',C=100,multi_class='ovr') lor.fit(X_train, y_train)predicted= lor.predict(X_test)score = accuracy_score(y_test, predicted)return (score) def RF(X_train, X_test, y_train, y_test):  from  sklearn.ensemble  import  RandomForestClassifiermodel= RandomForestClassifier(n_estimators=100)model.fit(X_train, y_train)predicted= model.predict(X_test)score = accuracy_score(y_test, predicted)return (score)

最后 - 技术解答 - 毕设帮助

毕业设计之 --- 基于大数据分析的金融产品销售预测分析相关推荐

  1. 大数据统计分析毕业设计_基于大数据分析的电子信息类专业毕业设计成绩影响因素研究...

    基于大数据分析的电子信息类专业毕业设计成绩影响因素 研究 温芳琴 [期刊名称] <佳木斯教育学院学报> [年 ( 卷 ), 期] 2019(000)011 [摘要] 通过收集苏州科技大学天 ...

  2. 毕业设计之 ---- 基于大数据挖掘的岗位薪资水平分析

    文章目录 前言 数据预处理 爬虫爬取数据 数据清洗 数据分析 数据可视化分析 最后 - 技术解答 - 项目帮助 前言 今天向大家介绍一个基于大数据分析的毕业设计项目,基于大数据挖掘的岗位薪资水平分析. ...

  3. 毕业设计之 ---基于大数据分析的航空公司客户价值分析

    文章目录 0 前言 1 数据分析背景 2 分析策略 2.1 航空公司客户价值分析的LRFMC模型 2.2 数据 2.3 分析模型 3 开始分析 3.1 数据预处理 3.1.1 数据预览 3.1.2 数 ...

  4. 毕业设计之 --- 基于大数据分析的股票预测系统

    文章目录 0 前言 1 课题意义 1.1 股票预测主流方法 2 什么是LSTM 2.1 循环神经网络 2.1 LSTM诞生 2 如何用LSTM做股票预测 2.1 算法构建流程 2.2 部分代码 3 实 ...

  5. 基于大数据分析的学生综合测评系统

    1.1 研究背景 在大数据时代背景下,需要处理的各种数据或信息量非常大,必须要借助于相关的技术和手段来对大量的数据实施整合和管理,同时各项活动的开展和各种决策的制定往往离不开大数据的分析,因此大数据分 ...

  6. 基于大数据分析技术在会计方面的研究

    第一节 摘 要 在现如今大数据时代的背景下,有越来越多的企业正经受着数据网络的考验,其中很突出的就是管理會计,作为企业财务中一个重要的组成部分,是持续为企业整合和加工财务资料的职务,管理会计正为企业发 ...

  7. (附源码)计算机毕业设计SSM基于大数据的汽车流量监控

    (附源码)计算机毕业设计SSM基于大数据的汽车流量监控 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(I ...

  8. 基于大数据分析的葡萄酒品质鉴别系统设计与实现

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 葡萄酒品鉴既是一门科学,也是一门艺术.品鉴葡萄酒,首先当然要能鉴别酸.甜.苦.咸.鲜五种基本味道,它 ...

  9. 基于大数据分析的安全管理平台技术研究及应用

    http://www.venustech.com.cn/NewsInfo/531/25566.Html [内容摘要]本文首先通过介绍大数据的起因,给出了大数据的定义和特征描述,并简要说明了当前大数据的 ...

  10. java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码、数据库)

    java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也 ...

最新文章

  1. 系统架构的过程 浮现式设计
  2. 逆天了:Nature一篇论文57000位作者,更厉害的是,大多数作者都是游戏玩家
  3. Jmeter使用之:高效组织接口自动化用例技巧
  4. 人脸识别大规模爆发!
  5. On Tutorial with Caffe--a Hands DIY DL for Vision
  6. 10 个最佳的网站分析方法
  7. let 和const
  8. Web Hacking 101 中文版 十八、内存(二)
  9. nginx.conf配置文件简单说明
  10. python怎么开始_Python自己学习怎么开始?
  11. linux 6.5端口开启关闭,linux CentOS6.5 防火墙(关闭除提供系统服务以外的端口)...
  12. ThinkPhp 使用 PHP_XLSXWriter 代替 PHPExcel 百万级数据单次导出
  13. git添加远程库遇到的问题
  14. python 空对象,在Python中创建一个空对象
  15. Nb iot php_NB-IoT是什么
  16. python数据结构之匿名函数lambda
  17. office 办公软件使用笔记
  18. Axure RP 9”已损坏,无法打开。 您应该将它移到废纸篓。
  19. C++ 计算多边形的面积,计算IOU
  20. GUI窗口不显示图片背景图片,和布局后不显示组件,的根本原因和解决办法

热门文章

  1. linux中怎样隐藏文件,Linux下如何隐藏文件
  2. CHM文档编辑制作及电子书的相关问题 - txfast的日志 - 网易博客 http://txfast.blog.163.com/blog/static/40536042200832065417/
  3. W11系统VMware网卡vmnet8显示未识别的网络
  4. win7更新错误代码80072efe的解决方法
  5. 数学函数在线绘图方法—geogebra3D、2D
  6. python假分数约分_数学中假分数怎么约分
  7. 易语言 服务器抓包,易语言调用wincap实现网卡抓包
  8. python format 用法详解
  9. 数字信号和模拟信号抗干扰能力分析
  10. 基于asp.net725原创(古代)文学交流网站系统