还未阅读第一篇的小可爱,在这里可以直接跳转
数据分析案例:利用BP神经网络算法进行用户行为分析(一)
分析方法与过程
热水器用户用水事件划分与识别案例的总体流程如下图所示。
图1 热水器用户用水识别建模总体流程
热水器用户用水事件划分与识别案例主要包括以下5个步骤。
(1) 对热水用户的历史用水数据进行选择性抽取,构建专家样本。
(2) 对步骤(1)形成的数据集进行数据探索分析与预处理,包括探索水流量的分布情况,删除冗余属性,识别用水数据的缺失值,并对缺失值作处理,根据建模的需要进行属性构造等。根据以上处理,对用水样本数据建立用水事件时间间隔识别模型和划分一次完整的用水事件模型,再在一次完整用水事件划分结果的基础上,剔除短暂用水事件缩小识别范围等。
(3) 在步骤(2)得到的建模样本数据基础上,建立洗浴事件识别模型,对洗浴事件识别模型进行模型分析评价。
(4) 对步骤(3)形成的模型结果应用并对洗浴事件划分进行优化。
(5) 调用洗浴事件识别模型,对实时监控的热水器流水数据进行洗浴事件自动识别。
数据探索分析
在热水器的使用过程中,热水器的状态会经常发生改变,比如开机和关机、由加热转到保温、由无水流到有水流、水温由50℃变为49℃等。而智能热水器在状态发生改变或者水流量非零时,每两秒会采集一条状态数据。由于数据的采集频率较高,并且数据来自大量用户,数据总量非常大。本案例对原始数据采用无放回随机抽样法抽取200家热水器用户从2014年1月1日至2014年12月31日的用水记录作为原始建模数据。由于用户不仅使用热水器来洗浴,而且包括了洗手、洗脸、刷牙、洗菜、做饭等用水行为,所以热水器采集到的数据来自各种不同的用水事件。
热水器采集的用水数据包含12个属性:热水器编码,发生时间,开关机状态,加热中,保温中,有无水流,实际温度,热水量,水流量,节能模式,加热剩余时间和当前设置温度。其解释说明如表1所示。
表1 热水器数据属性说明
探索分析热水器的水流量状况,其中有无水流和水流量属性最能直观体现热水器的水流量情况,对这两个属性进行探索分析,如代码清单1所示。
代码清单1 探索分析热水器的水流量状况
import pandas as pdimport matplotlib.pyplot as pltinputfile = './demo/data/original_data.xls' # 输入的数据文件data = pd.read_excel(inputfile) # 读取数据# 查看有无水流的分布# 数据提取lv_non = pd.value_counts(data['有无水流'])['无']lv_move = pd.value_counts(data['有无水流'])['有']# 绘制条形图fig = plt.figure(figsize=(6 ,5)) # 设置画布大小plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示plt.rcParams['axes.unicode_minus'] = Falseplt.bar(left=range(2), height=[lv_non,lv_move], width=0.4, alpha=0.8, color='skyblue')plt.xticks([index for index in range(2)], ['无','有'])plt.xlabel('水流状态')plt.ylabel('记录数')plt.title('不同水流状态记录数')plt.show()plt.close()# 查看水流量分布water = data['水流量']# 绘制水流量分布箱型图fig = plt.figure(figsize=(5 ,8))plt.boxplot(water, patch_artist=True, labels = ['水流量'], # 设置x轴标题 boxprops = {'facecolor':'lightblue'}) # 设置填充颜色plt.title('水流量分布箱线图')# 显示y坐标轴的底线plt.grid(axis='y')plt.show()
*代码请联系客服领取,联系方式见文末
通过代码清单1得到不同水流状态的记录的条形图,如图2所示,无水流状态的记录明显比有水流状态的记录要多。
图2 不同水流状态记录条形图
通过代码清单1得到不同水流状态的记录的条形图,如图3所示,箱体贴近0,说明无水流量的记录较多,水流量的分布与水流状态的分布一致。
图3 水流量分布箱线图
用水停顿时间间隔定义为一条水流量不为0的流水记录同下一条水流量不为0的流水记录之间的时间间隔。根据现场实验统计,两次用水的过程的用水停顿的间隔时长一般在不大于4分钟。为了探究用户真实用水停顿时间间隔的分布情况,统计用水停顿的时间间隔并做频率分布表。通过频率分布表分析用户用水停顿时间间隔的规律性,具体的数据如表2所示。
表2 用水停顿时间间隔频数分布表(单位:分钟)
分析表2可知,停顿时间间隔为0~0.3分钟的频率很高,根据日常用水经验可以判断其为一次用水时间中的停顿;停顿时间间隔为6~13分钟的频率较低,分析其为两次用水事件之间的停顿间隔。两次用水事件的停顿时间间隔分布在3~7分钟。根据现场实验统计用水停顿的时间间隔近似。
本文由“壹伴编辑器”提供技术支持
利用BP神经网络算法进行用户行为分析(三)-数据探索分析,将于本周三推送