一、导言
居民在使用家用热水器的过程中,会因为地区气候、不同区域和用户年龄性别差异等原因形成不同的使用习惯。家用企业若能深入了解其产品在不同用户群的使用习惯,开发符合客户需求何时哦那个习惯的功能,就能开拓新市场。
本篇文章将依据BP神经网络算法构建洗浴事件识别模型,进而对不同地区的用户的洗浴事件进行识别,然后根据识别结果比较不同客户群提供最合适的个性化产品,改进新产品的智能化研发并制定相应的营销策略。
二、数据探索分析
探索分析热水器的流量状况,其中“有无水流”和“水流量”属性最能直观体现热水器的水流量情况,对这两个属性进行探索分析。
import pandas as pd
import matplotlib.pyplot as plt
inputfile ='./data/original_data.xls' #'./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'] = False
plt.bar([0,1], 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('不同水流状态记录数(3001)')
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('水流量分布箱线图(3001)')
# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
得到如下的条形图和箱型图
由此可知无水流状态的记录明显比有水流状态的记录要多。箱体贴近0,说明无水流量的记录较多,水流量的分布与水流量状态的分布一致。
三、数据预处理
3.1 属性归约
热水器采集的用水数据较多,针对分析的主要对象为热水器用户,因此将删除冗余属性,例:“热水器编号”“有无水流”“节能模式”。
import pandas as pd
import numpy as np
data = pd.read_excel('./data/original_data.xls')
print('初始状态的数据形状为:', data.shape)
# 删除热水器编号、有无水流、节能模式属性
data.drop(labels=["热水器编号","有无水流","节能模式"],axis=1,inplace=True)
print('删除冗余属性后的数据形状为:', data.shape)
data.to_csv('./data/water_heart.csv',index=False)
结果如下
3.2 划分用水事件
热水器用户的用水数据储存在数据库中,记录了各种各样的用水事件,包括洗浴、洗手、刷牙、洗脸、洗衣、洗菜等,本案例要在大量的状态记录中划分出哪些连续的数据时一次完整的用水事件。用水时间划分主要分为两个步骤,即确定单次