金融產(chǎn)品銷售預(yù)測(cè)分析

背景:某金融公司新推出的理財(cái)產(chǎn)品,預(yù)測(cè)客戶是否會(huì)接受新的產(chǎn)品急鳄,并提高產(chǎn)品的銷售量谤民。
數(shù)據(jù):根據(jù)公司提供的用戶數(shù)據(jù),包括職業(yè)疾宏、婚姻狀態(tài)房產(chǎn)张足、年齡、違約情況等數(shù)據(jù)坎藐。與近期購(gòu)買的詳細(xì)資料为牍,包括金額、購(gòu)買頻率岩馍,時(shí)間等相關(guān)數(shù)據(jù)碉咆。
目標(biāo):根據(jù)客戶的信息,將客戶進(jìn)行分類打上標(biāo)簽蛀恩,預(yù)測(cè)該用戶是否會(huì)購(gòu)買理財(cái)產(chǎn)品以及是否需要對(duì)該用戶進(jìn)行主動(dòng)銷售疫铜。

貸款產(chǎn)品分析


【一】思路&流程

對(duì)客戶進(jìn)行精準(zhǔn)營(yíng)銷可以提高產(chǎn)品的銷售。那么對(duì)產(chǎn)品分析轉(zhuǎn)換為對(duì)客戶的分析双谆。
——考慮客戶是否能接受新的產(chǎn)品壳咕,可以從兩方面著手分析。
1>依據(jù)往期客戶數(shù)據(jù)進(jìn)行是否購(gòu)買預(yù)測(cè)顽馋,二分類回歸問(wèn)題谓厘。
2>根據(jù)客戶價(jià)值進(jìn)行劃分,對(duì)高價(jià)值客戶加大營(yíng)銷力度寸谜。
根據(jù)結(jié)果可以對(duì)客戶進(jìn)行分群劃分竟稳,降低營(yíng)銷成本。

流程圖

【二】數(shù)據(jù)處理

1>數(shù)據(jù)探索
IO1 = r'C:\Users\Ziger\Desktop\Yian_Cinformation1782.csv'
IO2= r'C:\Users\Ziger\Desktop\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)

根據(jù)業(yè)務(wù)常識(shí),客戶基本信息刪除如ID,姓名等無(wú)關(guān)維度住练。
還款明細(xì)提取總計(jì)金額地啰,購(gòu)買時(shí)間,購(gòu)買產(chǎn)品數(shù)等維度讲逛。


2>清洗數(shù)據(jù)

客戶資料文本數(shù)據(jù)較多亏吝,去除缺失的數(shù)據(jù)以免影響結(jié)果。


清洗data1后
3>數(shù)據(jù)處理

文本數(shù)值化 盏混,本次基本信息中主要處理的是職業(yè)蔚鸥,學(xué)歷,地址等文本信息许赃。

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

根據(jù)業(yè)務(wù)經(jīng)驗(yàn)將對(duì)應(yīng)的職業(yè)劃分打分止喷。

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)

將文本轉(zhuǎn)化為數(shù)值

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

數(shù)據(jù)歸一化

4>相關(guān)性分析

數(shù)據(jù)處理之后,選擇相關(guān)性最強(qiáng)的前17位維度進(jìn)行分析觀測(cè)

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()
相關(guān)性分析
5>提取維度

data1客戶分析混聊,將相關(guān)性較低的維度數(shù)據(jù)刪除弹谁。
data2貸款記錄,提取R,F,M句喜。

import datetime as dt
now = dt.datetime(2017,11,14)

#查看交易最早-最晚日期
print(data2['Borrowing_date'].min())
print(data2['Borrowing_date'].max())

#構(gòu)造交易時(shí)間間隔變量 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()分組函數(shù)
customer = data2.groupby('customer_id').agg(['hist':'min',             #Recency
                                          'customer_id':'count',    #Frequency
                                          'tran_amount':'sum'])     #Monetary
#對(duì)變量重命名
customer.rename(columns = {'hist':'recency'
                           'customer_id':'frequency'
                           'tran_amount':'monetary'},inplace = True)
6>特征工程

驗(yàn)衍生出新的維度预愤。
a. 統(tǒng)計(jì)每個(gè)客戶使用的不同產(chǎn)品量,1列(目的:分析產(chǎn)品總數(shù)與是否購(gòu)買關(guān)聯(lián))
b.統(tǒng)計(jì)每個(gè)客戶近期的產(chǎn)品購(gòu)買頻率咳胃。(目的:分析客戶的近期的資金需求量)
c. 統(tǒng)計(jì)客戶借款金額與還款的差值植康。(目的:分析客戶貸款產(chǎn)品的需求度)
.........等
對(duì)已有數(shù)據(jù)進(jìn)行觀測(cè)分析
eg:分析借貸時(shí)間可以針對(duì)銷售時(shí)間進(jìn)行調(diào)整。

plt.subplots(figsize=(12,9))
sns.countplot(x='month',,hue='day',data=data1)
借貸時(shí)間分析
7>特征篩選

本次維度較少展懈,但是為了提高模型預(yù)測(cè)準(zhǔn)確率销睁,對(duì)數(shù)據(jù)進(jìn)行特征整合。
考慮因子分析與主成分分析存崖,根據(jù)模型準(zhǔn)確率選擇使用冻记。


【三】RMF分析

1>用SPSS封裝模型進(jìn)行預(yù)測(cè)
2>K-Means聚類算法對(duì)客戶數(shù)據(jù)進(jìn)行分群
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=['聚類類別','聚類個(gè)數(shù)']+list(customer.columns)
r.to_csv(KMeans_result,encoding = 'utf_8_sig',index=False)

通過(guò)觀測(cè)客戶數(shù)及聚類中心,劃分客戶分類来惧。

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.pi, labels, fontproperties="SimHei")
ax.set_title("Customer_loan", va='bottom', fontproperties="SimHei")
ax.grid(True)
plt.show()
3>綜合分析

根據(jù)2次結(jié)果綜合考慮冗栗,將5類客戶打上標(biāo)簽,劃分價(jià)值群违寞。


【四】建模預(yù)測(cè)

二分類問(wèn)題考慮邏輯回歸與隨機(jī)森林進(jìn)行訓(xùn)練。
交叉驗(yàn)證

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)

設(shè)置early stop round 提前停止迭代參數(shù)偶房,防止過(guò)擬合趁曼,其他參數(shù)采用隨機(jī)搜索尋優(yōu)。

def LR(X_train, X_test, y_train, y_test):   
    from sklearn.linear_model import LogisticRegression
    lor = 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  RandomForestClassifier
    model= RandomForestClassifier(n_estimators=100)
    model.fit(X_train, y_train)
    predicted= model.predict(X_test)
    score = accuracy_score(y_test, predicted)
    return (score)

優(yōu)化參數(shù)棕洋,提高預(yù)測(cè)的準(zhǔn)確率挡闰。


【五】總結(jié)分析

1>銷售策略

①考慮模型預(yù)測(cè)結(jié)果,對(duì)預(yù)測(cè)會(huì)購(gòu)買的客戶進(jìn)行營(yíng)銷。
②RFM分群后摄悯,針對(duì)資金量高赞季,購(gòu)買頻繁的高價(jià)值客戶進(jìn)行定向宣傳。
③考慮特殊維度的影響力奢驯,改變銷售策略申钩。(如:貸款熱門時(shí)間段,貸款人年齡)

2>不足


②數(shù)據(jù)缺失值與異常值較少瘪阁,但本身維度較少撒遣,特征工程中選擇面較少。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末管跺,一起剝皮案震驚了整個(gè)濱河市义黎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌豁跑,老刑警劉巖廉涕,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異艇拍,居然都是意外死亡狐蜕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門淑倾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)馏鹤,“玉大人,你說(shuō)我怎么就攤上這事娇哆∨壤郏” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵碍讨,是天一觀的道長(zhǎng)治力。 經(jīng)常有香客問(wèn)我,道長(zhǎng)勃黍,這世上最難降的妖魔是什么宵统? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮覆获,結(jié)果婚禮上马澈,老公的妹妹穿的比我還像新娘。我一直安慰自己弄息,他們只是感情好痊班,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著摹量,像睡著了一般涤伐。 火紅的嫁衣襯著肌膚如雪馒胆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天凝果,我揣著相機(jī)與錄音祝迂,去河邊找鬼。 笑死器净,一個(gè)胖子當(dāng)著我的面吹牛型雳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掌动,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼四啰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了粗恢?” 一聲冷哼從身側(cè)響起柑晒,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眷射,沒(méi)想到半個(gè)月后匙赞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妖碉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年涌庭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欧宜。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坐榆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冗茸,到底是詐尸還是另有隱情席镀,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布夏漱,位于F島的核電站豪诲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挂绰。R本人自食惡果不足惜屎篱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葵蒂。 院中可真熱鬧交播,春花似錦、人聲如沸践付。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荔仁。三九已至伍宦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乏梁,已是汗流浹背次洼。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遇骑,地道東北人卖毁。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像落萎,于是被迫代替她去往敵國(guó)和親亥啦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 設(shè)了個(gè)定時(shí)器练链,每一秒鐘向后臺(tái)請(qǐng)求一次數(shù)據(jù)并刷新tablesorter翔脱,同時(shí)讓tablesorter以第5列數(shù)字倒序...
    KardelShaw閱讀 901評(píng)論 0 0
  • 問(wèn)世間情為何物,直教鵲橋難度相思苦 畫的有點(diǎn)渣媒鼓。届吁。。 給大家看下原圖好了 玲瓏骰子安紅豆 入骨相思君知否绿鸣?
    清寒w閱讀 441評(píng)論 19 12
  • 現(xiàn)在學(xué)會(huì)了心理暗示潮模,所以做很多事情亮蛔,都會(huì)給自己心理暗示。跟自己對(duì)話擎厢,暗示自己“無(wú)論成敗究流,都是一條好漢”。 一 前些...
    枚橙roro閱讀 1,801評(píng)論 7 2