位置: IT常识 - 正文

【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)(数据挖掘技术介绍)

编辑:rootadmin
【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)

项目地址:Datamining_project: 数据挖掘实战项目代码

目录

一、背景和挖掘目标

1、问题背景

2、原始数据

3、挖掘目标

二、分析方法与过程

1、初步分析

2、总体流程

第一步:数据抽取

第二步:探索分析

第三步:数据的预处理

         第四步:构建专家样本

         第五步:   构建用水事件行为识别模型

 三、总结和思考

一、背景和挖掘目标1、问题背景智能家居是利用先进的技术,融合个性需求,将与家居生活有关的各个子系统有机地结合在一起,通过网络化综合智能控制和管理,实现“以人为本”的全新生活体验。企业若能深入了解其产品在不同用户群的使用习惯,开发新功能,就能开拓新市场,实现产品的智能化。根据家居的智能化,分析客户行为,识别不同客户群的特征、加深对客户的理解等。(以热水器为例,分析客户行为)针对不同的客户群提供个性化产品、改进新产品的智能化的研发和制定相应的营销策略。2、原始数据

推荐整理分享【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)(数据挖掘技术介绍),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:数据挖掘入门教程,数据挖掘实战教程,数据挖掘技术介绍,数据挖掘 实战,数据 挖掘,数据挖掘视频教程,数据挖掘经典教程,数据挖掘 实战,内容如对您有帮助,希望把文章链接给更多的朋友!

用户用水数据表:包括了洗浴、洗手、洗脸、洗菜、做饭等用水行为

3、挖掘目标根据热水器采集到的数据,划分一次完整用水事件;在划分好的一次完整用水事件中,识别出洗浴事件。二、分析方法与过程1、初步分析热水器在状态发生改变或者有水流状态时,每2秒会采集一条流水数据。因为用户行为不仅仅只有洗浴还存在其他的用水事件:比如洗手、洗菜等,所以热水器采集的数据来自各种不同的用水事件。基于热水器采集的数据,根据水流量和停顿时间间隔划分为不同大小的时间区间,每个区间是一个可理解的一次完整用水事件,并以热水器一次完整用水事件作为一个基本事件。从独立的用水事件中识别出其中属于洗浴的事件。2、总体流程

第一步:数据抽取采用无放回随机抽样法抽取200家热水器用户,从2014年1月1日至2014年12月31日的用水记录作为原始建模数据。

属性名称

属性说明

热水器编码

热水器出厂编号

发生时间

记录热水器处于某状态的时刻

开关机状态

热水器是否开机

即热

即时加热

加热中

热水器处于对水进行加热的状态

保温中

热水器处于对水进行保温的状态

有无水流

热水水流量大于等于10L/min为有水,否则为无

实际温度

热水器中热水的实际温度

热水量

热水器热水的含量

【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)(数据挖掘技术介绍)

水流量

热水器热水的水流速度  单位:L/min

节能模式

热水器的一种节能工作模式

预约洗

预约一个时间使用热水

即时洗

不预约直接使用热水器

加热剩余时间

加热到设定温度还需多长时间

当前设置温度

热水器加热时热水能够到达的最大温度

第二步:探索分析

为了探究用户真实用水停顿时间间隔的分布情况,统计用水停顿的时间间隔并作频率分布直方图。

 停顿时间间隔为0~0.3分钟的频率很高,根据日常用水经验可以判断其为一次用水时间中的停顿;停顿时间间隔为6~13分钟的频率较低,分析其为两次用水事件之间的停顿间隔。两次用水事件的停顿时间间隔分布在3~7分钟与现场实验统计用水停顿的时间间隔近似。 

第三步:数据的预处理1、数据规约属性规约:因“热水器编号”、“即热”、“即时洗” 、“有无水流” 、“预约洗”、 “节能模式”对建模无作用,可以去除。数值规约:当热水器“开关机状态”为“关”且水流量为0时,说明热水器不处于工作状态,数据记录可以规约掉。

2、数据变换

一次完整用水事件的划分:用水状态记录中,水流量不为0表明用户正在使用热水;而水流量为0时用户用热水发生停顿或者用热水结束。水流量为0的状态记录之间的时间间隔如果超过一个阈值T,则从该段水流量为0的状态记录向前找到最后一条水流量不为0的用水记录作为上一次用水事件的结束;向后找到水流量不为0的状态记录作为下一个用水事件的开始。

#-*- coding: utf-8 -*-#用水事件划分import pandas as pdthreshold = pd.Timedelta('4 min') #阈值为分钟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() + 1 #通过累积求和的方式为事件编号data.to_excel(outputfile)

用水事件阈值寻优:根据水流量和停顿时间间隔的阈值划分一次完整的用水事件。

# -*- coding: utf-8 -*-# 阈值寻优import numpy as npimport pandas as pdinputfile = 'data/water_heater.xls' # 输入数据路径,需要使用Excel格式n = 4 # 使用以后四个点的平均斜率threshold = pd.Timedelta(minutes=5) # 专家阈值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的记录def event_num(ts): d = data[u'发生时间'].diff() > ts # 相邻时间作差分,比较是否大于阈值 return d.sum() + 1 # 这样直接返回事件数dt = [pd.Timedelta(minutes=i) for i in np.arange(1, 9, 0.25)]h = pd.DataFrame(dt, columns=[u'阈值']) # 定义阈值列h[u'事件数'] = h[u'阈值'].apply(event_num) # 计算每个阈值对应的事件数h[u'斜率'] = h[u'事件数'].diff() / 0.25 # 计算每两个相邻点对应的斜率# df_test['col_name'].rolling(ma).mean()新版本 ---->pd.rolling_mean(df_test['col_name'], ma) 旧版本# pd.rolling_mean(h[u'斜率'].abs(), n)h[u'斜率指标'] = h[u'斜率'].rolling(n).mean() # 采用后n个的斜率绝对值平均作为斜率指标ts = h[u'阈值'][h[u'斜率指标'].idxmin() - n]# 注:用idxmin返回最小值的Index,由于rolling_mean()自动计算的是前n个斜率的绝对值平均# 所以结果要进行平移(-n)if ts > threshold: ts = pd.Timedelta(minutes=4)print(ts)

 属性构造:根据用水行为,需构造四类指标:时长指标、频率指标、用水的量化指标以及用水的波动指标。

属性解释:

候选洗浴事件:从大量的一次完整用水事件中筛选规则剔除可以明显判定不是洗浴的事件 筛选掉非常短暂的用水事件:一次完整的用水事件满足其中任意一个条件,就被判定为短暂用水事件,其筛选条件为:1、一次用水事件中总用水量(纯热水)小于y升;2、用水时长小于100秒;3、总用水时长小于120秒。

3、缺失值的处理

因存在网络故障等原因,导致用水数据状态记录缺失的情况,需要对缺失的数据状态记录进行添加。其添加方法:用水状态记录缺失的情况下,填充一条状态记录使水流量为0,发生时间加2秒,其余属性状态不变。

第四步:构建专家样本

第五步:构建用水事件行为识别模型1、洗浴识别模型

根据建模样本数据和用户记录的包含用水的用途、用水开始时间、用水结束时间等属性的用水日志,建立BP神经网络模型识别洗浴事件。

# -*- coding: utf-8 -*-# 建立、训练多层神经网络,并完成模型的检验from __future__ import print_functionimport pandas as pdinputfile1 = '../data/train_neural_network_data.xls' # 训练数据inputfile2 = '../data/test_neural_network_data.xls' # 测试数据testoutputfile = '../tmp/test_output_data.xls' # 测试数据模型输出文件data_train = pd.read_excel(inputfile1) # 读入训练数据(由日志标记事件是否为洗浴)data_test = pd.read_excel(inputfile2) # 读入测试数据(由日志标记事件是否为洗浴)y_train = data_train.iloc[:, 4].as_matrix() # 训练样本标签列x_train = data_train.iloc[:, 5:17].as_matrix() # 训练样本特征y_test = data_test.iloc[:, 4].as_matrix() # 测试样本标签列x_test = data_test.iloc[:, 5:17].as_matrix() # 测试样本特征from keras.models import Sequentialfrom keras.layers.core import Dense, Dropout, Activationmodel = Sequential() # 建立模型model.add(Dense(11, 17)) # 添加输入层、隐藏层的连接model.add(Activation('relu')) # 以Relu函数为激活函数model.add(Dense(17, 10)) # 添加隐藏层、隐藏层的连接model.add(Activation('relu')) # 以Relu函数为激活函数model.add(Dense(10, 1)) # 添加隐藏层、输出层的连接model.add(Activation('sigmoid')) # 以sigmoid函数为激活函数# 编译模型,损失函数为binary_crossentropy,用adam法求解model.compile(loss='binary_crossentropy', optimizer='adam', class_mode="binary")model.fit(x_train, y_train, nb_epoch=100, batch_size=1) # 训练模型model.save_weights('../tmp/net.model') # 保存模型参数r = pd.DataFrame(model.predict_classes(x_test), columns=[u'预测结果'])pd.concat([data_test.iloc[:, :5], r], axis=1).to_excel(testoutputfile)model.predict(x_test) 2、模型检验

通过某热水器用户记录了两周的热水器用水日志,将前一周的数据作为训练数据,后一周的数据作为测试数据。根据该热水器用户提供的用水日志与多层神经网络模型识别结果的比较,总共21条检测数据,准确识别了18条数据,模型对洗浴事件的识别准确率为85.5%。

 三、总结和思考根据上述模型划分的结果,发现有时候会将两次(或多次)洗浴划分为一次洗浴,因为在实际情况中,存在着一个人洗完澡后,另一个人马上洗的情况,这中间过渡期间的停顿间隔小于阈值。针对两次(或多次)洗浴事件被合并为一次洗浴事件的情况,需要进行优化,对连续洗浴事件作识别,提高模型识别精确度。判断连续洗浴的方法:对每次用水事件,建立一个连续洗判别指标。连续洗判别指标初始值为0,每当有一个属性超过设定的阈值,就给该指标加上相应的值,最后判别连续洗指标是否超过给定的阈值,如果超过给定的阈值,认为该次用水事件为连续洗事件。
本文链接地址:https://www.jiuchutong.com/zhishi/300516.html 转载请保留说明!

上一篇:调戏chatGPT(二)下围棋

下一篇:【Node.js+koa--后端管理系统】设计动态发布、修改、查询、删除接口(nodejs hook)

  • 红米手机相册图标没了(红米手机相册图片放到桌面)

    红米手机相册图标没了(红米手机相册图片放到桌面)

  • oppo手机接不到电话怎么办(oppo手机接不到电话但可以打电话)

    oppo手机接不到电话怎么办(oppo手机接不到电话但可以打电话)

  • 拼多多评价置顶规则(拼多多评价置顶是商家控制的么)

    拼多多评价置顶规则(拼多多评价置顶是商家控制的么)

  • mac多选的快捷键(mac多选的快捷键是什么)

    mac多选的快捷键(mac多选的快捷键是什么)

  • usb legacy是什么意思(usbcharging是什么意思)

    usb legacy是什么意思(usbcharging是什么意思)

  • 三星w2020是单卡还是双卡(三星w20 单卡)

    三星w2020是单卡还是双卡(三星w20 单卡)

  • 钉钉为什么没有直播回放(钉钉为什么没有打卡的界面)

    钉钉为什么没有直播回放(钉钉为什么没有打卡的界面)

  • qq音乐自动切歌是为什么(qq音乐自动切歌怎么关)

    qq音乐自动切歌是为什么(qq音乐自动切歌怎么关)

  • 同步最近聊天记录至本机什么意思(同步最近聊天记录至本机和漫游的区别)

    同步最近聊天记录至本机什么意思(同步最近聊天记录至本机和漫游的区别)

  • 电脑迅雷下载速度0怎么回事(电脑迅雷下载速度晚上变慢)

    电脑迅雷下载速度0怎么回事(电脑迅雷下载速度晚上变慢)

  • 小米电视盒子4c和4se有什么区别(小米电视盒子4c和4s有什么区别)

    小米电视盒子4c和4se有什么区别(小米电视盒子4c和4s有什么区别)

  • 华为p30拍视频防抖吗(华为手机拍视频防抖功能怎么打开)

    华为p30拍视频防抖吗(华为手机拍视频防抖功能怎么打开)

  • 华为手机延长锁屏时间(华为手机延长锁屏时间怎么设置)

    华为手机延长锁屏时间(华为手机延长锁屏时间怎么设置)

  • 快手小店必须要有淘宝店吗(快手小店必须要营业执照吗)

    快手小店必须要有淘宝店吗(快手小店必须要营业执照吗)

  • 合同扫描件怎么弄一份(合同扫描件怎么发)

    合同扫描件怎么弄一份(合同扫描件怎么发)

  • mate20充电器多少瓦(华为mate20充电器多少a)

    mate20充电器多少瓦(华为mate20充电器多少a)

  • oppoa9可以用快充吗(oppoa9支不支持快充)

    oppoa9可以用快充吗(oppoa9支不支持快充)

  • airpods2外观区别(airpods2外观细节图)

    airpods2外观区别(airpods2外观细节图)

  • 华为p30应用建议怎么关闭(华为p30应用建议怎么删除)

    华为p30应用建议怎么关闭(华为p30应用建议怎么删除)

  • 微信怎么制作动态表情包(微信怎么制作动态文字)

    微信怎么制作动态表情包(微信怎么制作动态文字)

  • 金立gn5001s是什么型号(金立gn5007)

    金立gn5001s是什么型号(金立gn5007)

  • 58求职申请能删除吗(58怎么删除求职申请)

    58求职申请能删除吗(58怎么删除求职申请)

  • 小米5xotg功能怎么开启

    小米5xotg功能怎么开启

  • 深度解析ArrayList使用(深度解析冯德伦最后为什么选了舒淇)

    深度解析ArrayList使用(深度解析冯德伦最后为什么选了舒淇)

  • 计提个人所得税会计分录怎么写
  • 发票章是否需要到税务局备案
  • 建设单位施工现场补助
  • 疫情期间生活服务业免征增值税截止时间
  • 冲回多提的坏账准备分录为
  • 企业年报股东及出资信息要怎么填写
  • 以前年度损益调整影响哪个科目
  • 加油站企业规模大小怎么划分
  • 公司员工出差发工资吗
  • 单独计价入账的土地是无形资产吗
  • 由母公司承担子公司债务的财务处理怎么做?
  • 发票勾选平台已经勾选统计确认,报税平台看不见
  • 增值税负数如何计算
  • 合同预付款要不要开发票?
  • 简易计税的收入怎么做账
  • 当期应税销售收入是含税还是不含税
  • 兼营小规模纳税人增值税优惠
  • 小规模纳税人和小微企业区别
  • 高新技术企业优惠政策叠加
  • 收到银行承兑汇票计入什么科目
  • 房地产公司基础设施建设费包括哪些费用
  • 理发店财务分析报告
  • 无租使用房产怎么缴纳房产税土地税
  • 关税税率表包括哪些税种
  • 发票认证信息怎么填
  • 不动产增值税计算公式
  • 公允价值变动借方是增还是减
  • 企业信息公示社保信息怎么填,公司没有交
  • 桌面或文件夹内无图标
  • 事业单位财政补助和全额拨款有什么区别
  • 增值税当月申报次月缴纳吗
  • 现金流量表的编制基础是权责发生制
  • 营业外支出与营业收入之比应小于1%的说明
  • 进程调度算法例题分析
  • 安装prophet
  • msmpeng.exe 是什么
  • php函数传递参数方式
  • 电子发票记账清单入账
  • 企业应付账款的会计分录
  • 企业年报股东出资信息
  • 企业付给个人工资怎么算
  • 小企业需要做计算机吗
  • 经营户个人所得税
  • 注册资金只能增加不能减少吗
  • 认缴出资额就是营业执照上的注册资金
  • 欠款在公司注销怎么处理
  • 小规模纳税人和一般纳税人的界定标准
  • 研发费用形成无形资产的摊销怎么处理
  • 股东投资款超过注册资金的案例
  • 印花税的计税依据及税率
  • 企业如何运用内部招募
  • 民非企业怎么给员工交五险
  • 第二个季度
  • 费用报销流程及制度
  • 成本类科目借贷规则
  • 物流行业货币资金占比
  • centos6.5下mysql 5.7.19 安装配置方法
  • win7开机提示便签损坏
  • Mac系统怎么设置开机密码
  • blg是什么文件
  • ubuntu 18.04怎么用
  • windows 8.1 with update
  • linux 进入命令
  • cocos2dx游戏有哪些
  • unity as
  • unity物体移动速度怎么设置
  • dos命令查看磁盘分区
  • c#委托的理解
  • unity3d Human skin real time rendering with blood and water drop effect真实模拟人皮实时渲染之血液和水珠掉落效果
  • 黑马程序员培训怎样
  • 安卓手机如何查
  • 税务局冲红发票
  • 关注龙江医保
  • 南京电费余额查询
  • 个税申报表明细怎么打印
  • 国家税务总局16号文件
  • 如何计算环保税减征政策
  • 100万元的人民币
  • 企业月度统计表在哪里查找
  • 税务 稽查局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设