Pyhton--家用电器用户行为分析与事件识别--多层神经网络

问题背景

如果你是一个家电公司的,你要卖热水器,但是不同的地区气候、不同区域、用户的差别都会导致使用不同,你为了能因地制宜,因人而异的挣更多钱,你需要了解用户的热水器使用习惯。由于你们公司热水器能记录用户热水器的温度,开机,加热等状态数据,所以你获得了原始的一些热水器数据。
数据来源:
https://github.com/apachecn/python_data_analysis_and_mining_action/tree/master/chapter10/data

挖掘目标

  1. 根据热水器采集到的数据,划分一次完整用水事件
  2. 在划分好的一次完整用水事件中,识别出洗浴事件

这属于识别分类 0-1二分类问题与实践一中偷电用户的识别相类似,不过数据更难以处理。

数据提取

  • 智能热水器在状态发生改变或者水流量非零时,每两秒会采集一条状态数据。
  • 本案例抽取200家热水器用户从2014年1月1日至2014年12月31日的用水记录。
    在这里插入图片描述

数据探索

用水停顿时间间隔为一条流量不为0的流水记录同下一条水流量不为0的流水记录之间的时间间隔
在这里插入图片描述
上表可知,停顿时间间隔为0-0.3分钟的频率很高,根据日常用水经验可以判断为一次用水事件中的停顿;停顿时间为6-13分钟的频率较低,分析其为两次用水事件之间的停顿间隔。两次用水事件的停顿时间间隔分布在3-7分钟。

数据预处理

数据规约

  • 属性规约:去除“机器编号”、“有无水流”(水流量可以表示)、“节能模式”(都为关)
  • 数值规约:“开关机状态”为“关”且水流量为0时,说明热水器不处于工作状态,数据记录可以删除

数据变换

本案例首先需要从原始记录中划分哪些连续的记录是一次完整的用水事件,一次完整的用水事件是根据水流量和停顿时间间隔的阈值去划分的,所以还建立阈值寻优模型
在这里插入图片描述

一次完整用水事件的划分模型

在用水记录中,水流量不为0表示正在使用热水;水流量为0是用户用水发生停顿或者用水结束。如果水流量为0的记录之间的时间间隔超过一个阈值T,则划分为一个用水事件
在这里插入图片描述
一次完整用水事件的划分步骤如下:

  1. 读取数据记录,识别到第一条水流量不为0的数据记录记为R1,按顺序识别接下来的一条水流量不为0的数据记录R2
  2. 若gapi>T,则Ri+1与Ri及之间的数据记录不能划分到同一次用水事件。同时将Ri+1记录作为新的读取数据记录的开始,返回步骤1);若gap_i<T,则将R_{i+1}与R_i及之间的数据记录划分到同一次用水事件,并记录截接下来的水流了不为0数据记录为R_{i+2}$
  3. 循环执行步骤2),直到数据记录读取完毕,结束事件划分。 Python代码实现用水事件的划分:
#-*- coding:utf-8 -*-
#用水事件划分
import pandas as pd

threshold=pd.Timedelta(minutes=4) #阈值为4分钟
inputfile='../data/water_heater.xls' #输入数据路径,需要使用excel格式
outputfile='../tmp/dividsequence.xls' #输出数据路径,需要使用excel格式

data=pd.read_excel(inputfile)
data[u'发生时间']=pd.to_datetime(data[u'发生时间'],format='%Y%m%d%H%M%S')
data=data[data[u'水流量']>0] #只要水流量大于0的记录
d=data[u'发生时间'].diff()>threshold #相邻时间做差分,比较是否大于阈值
data[u'事件编号']=d.cumsum(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值