【Python】实训9:家用热水器用户行为分析与事件识别(所谓的神经网络,BP)

【Python】实训9:家⽤热⽔器⽤户⾏为分析与事件识别(所谓的神经⽹
络,BP)
实训1清洗运营商客户数据
1.训练要点
(1)掌握去重的原理与⽅法。
(2)掌握缺失值与异常值的识别与处理
2.需求说明
某运营商提供了不同⽤户3个⽉的使⽤信息,共900000条数据,共34个特征列、1个标签列,其中存在- -定的重复值、缺失值与异常值。其字段说明如表9-17所⽰。
3.实现步骤
(1)识别与处理数据中的重复值。
(2)识别与处理数据中的缺失值。
(3)识别与处理数据中的异常值。
实训2筛选客户运营商数据
1.训练要点
(1)掌握类别型特征内部类别合并的⽅法。
(2)掌握哑变量处理⽅法。
2.需求说明
在原始的数据中,每个⽤户有3⾏的数据,对应着同⼀个ID的3个⽉信息。原始数据的特征有35个,其中与⽤户⼿机情况相关的数据均为类别型,例如⼿机品牌有633种,⼿机型号有5973种,操作系统描述有47种。
3.实现思路及步骤
(1)将数据处理为⼀个⽤户⼀条记录,保留每位⽤户每⽉的费⽤、通话时长等信息,并求出对应特征3个⽉的⽅差、中位数。
(2)合并⽤户的⼿机品牌与操作系统特征内部数据,删除⼿机型号特征。
(3)对⼿机型号与操作系统特征做哑变量处理。
实训3构建神经⽹络预测模型
1.训练要点
(1)掌握数据集划分⽅法。
(2)掌握数据标准化⽅法。
(3)掌握神经⽹络算法的使⽤。
2.需求说明
使⽤神经⽹络模型,构建客户流失模型,能够分析⽤户的历史数据和当前数据,提取辅助决策的关键性数据,并从中发现隐藏关系和模式,进⽽预测未来可能发⽣的⾏为。
3.实现思路及步骤
(1)标准差标准化数据。
(2)构建神经⽹络模型。
(3)评价神经⽹络模型。
吐槽
抱着做事情有始有终的原则,我写了这篇博客。
当然,寒假的学习效率,且没有对应课程督促下的状态,⼤家应该都是⽐较清楚的
可毕竟在草稿箱⾥待了⼀个⽉了,随便写写,发表得了…
代码
完整代码?不存在的。
⽽且就我查资料的经验⽽⾔,真正意义上的参考代码,⽹上应该还是没有的
学生证制作以下是实训1部分的所谓参考代码
#第九章实训
import pandas as pd
import numpy as np
detail = pd.read_csv('./第九章实验数据/实训数据/USER_INFO_M.csv',
index_col=0,encoding ='gbk')
#(1)识别与处理数据中的重复值。
print('进⾏去重操作前订单详情表的形状为:',detail.shape)
detail.drop_duplicates(inplace =True)
print('进⾏去重操作后订单详情表的形状为:',detail.shape)
#(2)识别与处理数据中的缺失值。
水火箭制作方法
#print('参看数据具体信息:',detail.info())
naRate =(detail.isnull().sum()/detail.shape[0]*100).astype('str')+'%'
瓦斯抽放系统
print('detail每个特征缺失的率为:\n',naRate)
#删除⼿机品牌类有缺失的两个数据
#(在90万数据⾯前删除两个影响不明显,当然这⾥也可以随便给这两个⽤户写个⼿机品牌,处理⽅法不唯⼀)
detail.dropna(axis =0,how ='any',subset=['MANU_NAME'],inplace =True)
#此时可以考虑直接删除其他有缺失的项⽬(这时的特征缺失率⾜够⼤,可以直接删除了)
detail.dropna(axis =1,how ='any',inplace =True)
print('处理完缺失值后订单详情表的形状为:',detail.shape)
#(3)识别与处理数据中的异常值。
##定义异常值识别与处理函数
print("处理前:")
print('INNET_MONTH最⼩值为:', detail['INNET_MONTH'].min())
print('INNET_MONTH最⼤值为:', detail['INNET_MONTH'].max())
def outRange(Ser1):
QL = Ser1.quantile(0.25)
QU = Ser1.quantile(0.75)
IQR = QU-QL
Ser1.loc[Ser1>(QU+1.5*IQR)]= QU
Ser1.loc[Ser1<(QL-1.5*IQR)]= QL
return Ser1
## 处理销售量和售价的异常值
detail['INNET_MONTH']= outRange(detail['INNET_MONTH'])
##查看处理后的销售量和售价的最⼩值,最⼤值发热体
print("处理后:")
print('INNET_MONTH最⼩值为:', detail['INNET_MONTH'].min())
print('INNET_MONTH最⼤值为:', detail['INNET_MONTH'].max())
当时写代码时候,正值期末,做这种细致活颇⽆耐⼼,本想假期有空再来补充,怎想寒假的⾃⼰,毫⽆兴致呀~诺,结果
进⾏去重操作前订单详情表的形状为: (900000, 34)
进⾏去重操作后订单详情表的形状为: (899904, 34)
detail每个特征缺失的率为:
USER_ID 0.0%
INNET_MONTH 0.0%
IS_AGREE 0.0%
AGREE_EXP_DATE 48.96066691558211%
CREDIT_LEVEL 0.0%
u盘制造VIP_LVL 34.58268882014082%
ACCT_FEE 0.0%
CALL_DURA 0.0%
NO_ROAM_LOCAL_CALL_DURA 0.0%
NO_ROAM_GN_LONG_CALL_DURA 0.0%
GN_ROAM_CALL_DURA 0.0%
CDR_NUM 0.0%
NO_ROAM_CDR_NUM 0.0%
NO_ROAM_LOCAL_CDR_NUM 0.0%
NO_ROAM_GN_LONG_CDR_NUM 0.0%
GN_ROAM_CDR_NUM 0.0%
P2P_SMS_CNT_UP 0.0%
TOTAL_FLUX 0.0%
LOCAL_FLUX 0.0%
GN_ROAM_FLUX 0.0%
CALL_DAYS 0.0%
CALLING_DAYS 0.0%
CALLED_DAYS 0.0%
CALL_RING 0.0%
CALLING_RING 0.0%
CALLED_RING 0.0%
CUST_SEX 3.810073074461276%
CERT_AGE 3.886081181992746%
CONSTELLATION_DESC 3.886081181992746%
MANU_NAME 0.00022224592845459073%
MODEL_NAME 0.0%
OS_DESC 4.243230389019273%
TERM_TYPE 0.0%
IS_LOST 66.63633009743262%
htc a310dtype: object
处理完缺失值后订单详情表的形状为: (899902, 27)
处理前:
INNET_MONTH最⼩值为: -251
INNET_MONTH最⼤值为: 249
处理后:
INNET_MONTH最⼩值为: 1.0
INNET_MONTH最⼤值为: 107.0
也不长篇⼤论吐槽些什么了,就是有这么⼀句话⾮常想放到这⾥:⼈的记忆不可靠!

本文发布于:2024-09-22 13:33:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/182310.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   处理   特征   识别   缺失   代码
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议