【机器学习算法实战3】产品营销模型之建置及预测(CDA赛题)

一、案例介绍

这是CDA数据分析网站的一个赛题,A公司希望发掘用户购买产品的行为习惯,建立产品精准营销模型,对有意向的客户进行精准营销,增加收入,减少开支。将通过混淆矩阵(Confusion matrix)来评价分类模型的准确率,准确率越高,说明正确预测出响应营销效果越好。
本次实战以官方公布的评分标准accuracy为目标进行参数调优与建模。又探索了在不同成本收益模型下,选择不同的模型评估指标,最终得到最高的潜在盈利预测。
附赛题网址:https://contest.cda.cn/info/id/6.

重要事情说三遍~
想听我讲案例,请点这里,进入B站
想听我讲案例,请点这里,进入B站
想听我讲案例,请点这里,进入B站

二、框架

(一)赛题简介及数据预处理
(二)数据探索分析
(三)模型构建与评估
(四)预测与排名
(五)成本收益分析与模型重构

三、附部分代码及输出

(一)数据预处理(算法填充缺失值)

# 填充

cates=['用户地区', '性别', '使用累计时间','产品服务使用量', '是否使用信用卡付月费','是否为活跃用户']

x_cates=['产品使用分数', '年龄', '点数余额','估计薪资']

dummies_f7=[ region_features,sex_features,usetime_features,service_features,credict_features,active_features,fill_data[x_cates] ]

for i in range(6):

    print('填充有缺失值的特征:',cates[i])
    print('第一步:构造特征与标签--------------------')

    Y=y_data[cates[i]]  #Serise
    Y_train=Y[Y!='99'] #没有缺失值,用于建模
    Y_test=Y[Y=='99']  #缺失值,待预测   
    
    objs=[ region_features,sex_features,usetime_features,service_features,credict_features,active_features,fill_data[x_cates] ]
    df=pd.concat(objs,axis=1)    
    ob=list(dummies_f7[i].columns)
    X=df.drop(labels=ob,axis=1)
    X_train=X[Y!='99']
    X_test=X[Y=='99']


    print('第二步:建模与预测填充------------------------')
    times=time()
    xgb_fill=xgboost.XGBClassifier(max_depth=3,n_estimators=190)
    xgb_fill.fit(X_train,Y_train)
    Y_predict=xgb_fill.predict(X_test)
    print('运行时间:%s'% datetime.datetime.fromtimestamp(time()-times).strftime("%M:%S:%f"))
    #预测结果赋值到缺失值地方
    y_data[ cates[i] ][ y_data[ cates[i] ]=='99' ]=Y_predict
    
    #保存模型
    j=str(i)
    modelname=r'xgb_fill_'+j+'.model'
    model_file = open(modelname, 'wb')
    pickle.dump(xgb_fill, model_file)
    model_file.close()

(二)数据探索分析(特征筛选)
【机器学习算法实战3】产品营销模型之建置及预测(CDA赛题)_第1张图片
(三)模型构建与评估
【机器学习算法实战3】产品营销模型之建置及预测(CDA赛题)_第2张图片
(四)预测与排名

#构造特征空间

data=pd.read_csv('./clean_df_test.csv',index_col='Unnamed: 0')

model_load_file = open(r'ohe_keyf.model', 'rb')
ohe_keyf_r = pickle.load(model_load_file)
model_load_file.close()

cates=['用户地区', '性别','产品服务使用量', '是否为活跃用户']
result=ohe_keyf_r.transform( data[cates] )
df_catefeature=pd.DataFrame(result.toarray(),columns=ohe_keyf_r.get_feature_names())

cates=['产品使用分数', '年龄', '点数余额']
objs=[df_catefeature,data[cates]]
X=pd.concat(objs,axis=1)

#导入预测模型
model_load_file = open(r'best_2_XGBClassifier.model', 'rb')
xgb_2_r = pickle.load(model_load_file)
model_load_file.close()

#预测并保存

Y_pre=xgb_2_r.predict(X)

data['Predicted_Results']=Y_pre
results=data[['客户ID','Predicted_Results']]
results.to_csv('./results_xgb_2.csv',index=False)

results.Predicted_Results.value_counts()

【机器学习算法实战3】产品营销模型之建置及预测(CDA赛题)_第3张图片
(五)产品收益分析与模型重构
【机器学习算法实战3】产品营销模型之建置及预测(CDA赛题)_第4张图片

你可能感兴趣的:(机器学习,Python,数据挖掘)