今天就跟大家聊聊有关怎么用python进行客户价值分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一个完整的数据分析项目由如下几个步骤组成:
1)数据获取:分为本地文本文件、数据库链接、爬虫技术等方式获取数据;
2)数据存储:存到本文本文件、数据库、分布式文件系统等;
3)数据预处理:据经验,占80%的工作量。可以使用Numpy和Pandas这两个工具库;
4)建模与分析:这一阶段首先要清楚数据的结构,结合项目需求来选取模型,常见的数据挖掘模型有如下图所示:
该阶段常用工具库分为如下两个:
(1)scikit-learn-适用Python实现的机器学习算法库。scikit-learn可以实现数据预处理、分类、回归、降维、模型选择等常用的机器学习算法。
(2)Tensorflow-适用于深度学习且数据处理需求不高的项目。
5)可视化分析:Python目前主流的可视化工具有Matplotlib、Seaborn、Pyecharts等。
在整个数据分析流程,无论是数据提取、数据预处理、数据建模和分析,还是数据可视化,Python目前已经可以很好地支持我们的数据分析工作。有了python入门基础后,我们接下来我们以“航空公司客户价值分析为例”,体验简要实际分析过程。
假设数据是之前已将采集或记录好的,那我们从将数据导入和预处里开始。
缺失及异常数值的处理,代码如下:
import numpy as np
import pandas as pd
airline_data = pd.read_csv('../data/air_data.csv', encoding='gb18030') #导入航空数据
print('原始数据的形状为:',airline_data.shape)
## 去除票价为空的记录
exp1 = airline_data["SUM_YR_1"].notnull()
exp2 = airline_data["SUM_YR_2"].notnull()
exp = exp1 & exp2
airline_notnull = airline_data.loc[exp,:]
print('删除缺失记录后数据的形状为:',airline_notnull.shape)
#只保留票价非零的,或者平均折扣率不为0且总飞行公里数大于0的记录。
index1 = airline_notnull['SUM_YR_1'] != 0
index2 = airline_notnull['SUM_YR_2'] != 0
index3 = (airline_notnull['SEG_KM_SUM']> 0) & \
(airline_notnull['avg_discount'] != 0)
airline = airline_notnull[(index1 | index2) & index3]
print('删除异常记录后数据的形状为:',airline.shape)
选取并构建LRFMC模型的特征
## 选取需求特征
airline_selection = airline[["FFP_DATE","LOAD_TIME",
"FLIGHT_COUNT","LAST_TO_END",
"avg_discount","SEG_KM_SUM"]]
## 构建L特征
L = pd.to_datetime(airline_selection["LOAD_TIME"]) - \
pd.to_datetime(airline_selection["FFP_DATE"])
L = L.astype("str").str.split().str[0]
L = L.astype("int")/30
## 合并特征
airline_features = pd.concat([L, airline_selection.iloc[:,2:]],axis = 1)
print('构建的LRFMC特征前5行为:\n',airline_features.head())
标准化LRFMC模型的特征
from sklearn.preprocessing import StandardScaler
data = StandardScaler().fit_transform(airline_features)
np.savez('../data/airline_scale.npz',data)
print('标准化后LRFMC五个特征为:\n',data[:5,:])
以上三段代码我们归结为数据预处理,从这个阶段可以看出,其中最重要环节是“选取需求特征“,因此分析前提是要明确需求,需求调研和选取特征是我们所有工作的根本。所以我们还需懂得领域知识或由这个方面的人员或领域专家协助分析工作。标准化后,另存一份,一遍后续进行各类测试时,避免所有数据从头再来。
用某种算法,对客户数据进行客户分群,如下航空客户价值分析K-Means聚类分析代码:
客户价值分析K-Means聚类分析代码
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans #导入kmeans算法
airline_scale = np.load('../data/airline_scale.npz')['arr_0']
k = 5 ## 确定聚类中心数
#构建模型
kmeans_model = KMeans(n_clusters = k,n_jobs=4,random_state=123)
fit_kmeans = kmeans_model.fit(airline_scale) #模型训练
kk=kmeans_model.cluster_centers_ #查看聚类中心
kmeans_model.labels_ #查看样本的类别标签
kk=kmeans_model.cluster_centers_ #查看聚类中
cc_exp = np.savetxt('../data/renwu/cc.txt',kk,fmt="%.18e")
cc.txt文件内容如下:
[[ 0.05184321 -0.22680493 -0.00266815 2.19136467 -0.23125594]
[-0.31368082 -0.57402062 1.68627205 -0.1733275 -0.53682451]
[ 0.48333235 2.48322162 -0.7993897 0.30863251 2.42474345]
[-0.7002121 -0.16114387 -0.41489162 -0.25513359 -0.16095881]
[ 1.16067608 -0.08691922 -0.37722423 -0.15590586 -0.09484481]]
#统计不同类别样本的数目
r1 = pd.Series(kmeans_model.labels_).value_counts()
print('最终每个类别的数目为:\n',r1)
3 24659
4 15740
1 12125
2 5336
0 4184
将以上数据结合特征属性、领域知识进行分析后聚类结果如下。其中L代表入会时间,R代表最近乘机距进的时间长度,F代表飞行次数,M代表总飞行历程,C代表平均折扣系数。
从以上案例可以看出,一个数据分析案例中,数据采集和预处理按70%-80%左右工作量或时间。数据准备好了后的重点是模型和训练阶段,该阶段代码量不多但需要懂得什么算法适合什么场景,选择统计学算法还是机器学习类算法,也是考研一个数据分析是内功的阶段。选择对了合适的算法挖掘其中价值有很大的帮助。最后阶段领域知识综合应用和分析,当然领域知识的掌握或领域专家的参与贯穿到整个分析过程,回过头来还是明确分析需求是重中之重。
在学习数据挖掘的过程中,我们也体会到算法很多,专门学习也需要较长的时间。根据个人的体会,如果不再是学生是阶段,正确学习方法也许是先明确需求,根据算法用途再确定合适的算法,接下来就只针对该算法深入学习研究并应用。
看完上述内容,你们对怎么用python进行客户价值分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。