Part1 用户画像评测回顾与总结

1、为什么做用户画像评测?

将时钟拨回到2018年初,大家迫切想打破以往资讯推荐无章可循的局面,而今日的推荐算法也似乎演成了神话,用户意图这个词在WiFi管家团队被一再提及,继而AI推荐布局被推到了前台。

用户意图识别的优劣取决于对用户实时需求的了解程度,此事古来难。AI团队率先做的尝试是在一些特定场景下猜测用户意图,进行意图相关推荐,如住酒店用户,地铁上用户等,这是算法可以做的事情,那测试在这个过程中可以做些什么呢?算法验证相对滞后,有什么可以先行的呢?用户意图识别首要识别对用户场景,如果场景错了,后面的工作就无法关联起来。如,住酒店,是个动态场景,尝试进一步拆分成可衡量的静态场景,如,什么人(性别,工作,偏好等)?什么时间(出行时间)住什么酒店(酒店位置,级别等)?这些我们是有后套标签系统的,经过了解这些标签系统已经有些尝试应用,但是标签本身准确性却无从评估,因此,用户标签准确性评测就在懵懂中筹备开始了。

2、用户画像准确性怎么做?

感谢先行者浏览器团队,提供了最初的评测思路,他们的考虑很周全。而我在具体的实践过程中,根据业务的实际情况制定了最终的评测方案(下图),从第一轮标签提取开始,就暴露出各种细节问题,好在都一一解决了。

简单列下可供后来者借鉴的几个注意项: 视频资料学习分享 企(Q)鹅群 519970686

(1) 问卷设计的原则:每一个问卷题目与后台标签对应关系提前考虑好,有的一对一有的一对多。问卷的每一个选项要与对应标签的取值对应好关系,这会大大简化后期脚本处理工作。

(2) 问卷下发回收:最初下发了label数量>9的用户,用>8的用户补了1k,结果实际回收率不到50%,于是追加了>8的全量用户,总共4k多个,实际回收依然不足1k,而此间耗费了将近2周的时间。

(3) 关键字选取:整个过程关键字是imei,但下发问卷时,众测平台关键字却是qq,这就在数据处理上又需要多一层转换处理了。

(4) 标签系统提数:标签系统的数据是周期性更新,更新频率高,建议问卷回收后进行二次提数,尽可能减少时间差造成的数据不一致。

(5) 脚本处理:因为涉及的数据量比较大,涉及到比较多文件的处理,强烈建议装两个库,jupyter notebook(交互式笔记本,可及时编写和调试代码,很好用),还有一个大数据处理的pandas,对于excel的操作实在便利太多。

(6) 经纬度处理:经纬度数据没法下发问卷,因此问卷题目设计成问具体地址,大楼,小区等。数据转换接入了地图的逆地址解析接口,然后再对比具体位置信息,这里的对比也是纠结了1天时间,最终精确到2个中文字符的维度。

3、用户画像准确性怎么分析?

至问卷回收完毕,实际工作才完成一半,接下来就是远超预估的复杂繁琐的数据处理及分析过程了。我想用下面这张图来描述整个分析过程。

整个分析包括四部分:

(1) 黄框:活跃用户数据处理。

1.为什么要做?

活跃用户主要下发问卷前用,这里为什么还需要做分析呢?这里的分析工作是可以省掉的,方案最后会说,先来看这里的目标是什么。因为问卷没有收集imei数据,而lable标签是根据imei进行统计的,因此这里需要多做一层merge处理,以使问卷可以补足缺失的imei信息。

2.是否可优化?是否存在风险?

细心的读者可能已经发现,这里存在一个隐患!可能导致样本数量减少,因为用户的qq和imei其实不是一一对应的,可能存在一对一或一对多情况,如果下发imei用户更换qq完成了问卷,这里的merge就会导致部分样本数据反查不到imei数据从而丢失样本。庆幸的是本次测试丢失样本数不到10个,否则我可能要从头再来了。

3.如何规避?

在用户问卷设计中让用户主动反馈imei信息。前期设计没有考虑清楚key值的设计造成了这个隐患,同时还增加了分析的工作量。

(2) 蓝框:系统lable数据处理。

1.为什么要做?

细心的读者会发现,系统lable在最初已经提取了,用于做单个用户lable数量的过滤分析,这里还可以直接用原来的数据么?

答案是非常不建议!因为后台数据会周期性更新,最初提取的数据已经不能表征问卷用户当前的上报数据了。所以lable数据重新提取这一步不能省。

(3) 红框:问卷数据处理。

1.为什么要做?

问卷设计的原则是便于用户理解选择,与代码数据上报实现差异很大,所以这里的数据解析是必须的,也是结果分析最核心的部分。

2.做了什么?

这里我花费了大量的时间写脚本、调试,这里大量采用pandas,感谢它大大简化了我的代码量。为了便于大家熟悉了解pandas的用法,我这里会截取部分代码来看。

Action1:drop冗余数据

经验:感谢pandas,定义droplist,通过dataframe的drop方法,两行代码:

Action2:按lableid重新定义列名

Action3:常规各列数据处理(举个栗子)

(4)绿框:diff结果分析

1.做了什么?

在脚本处理上经纬度会更复杂,但思路大同小异,便于解说,这里以常规数据举例。

关键点1:利用dataframe将一行取出来存成array:

关键点2:定义diffresult文件列名:

关键点3:遍历每一列数据,过滤掉不存在lable:

关键点4:循环遍历比较系统数据和用户数据:

在本part最后,再总结下不足,主要有如下三方面: 视频资料学习分享 企(Q)鹅群 519970686

(1) 样本覆盖全面性不够:覆盖具有局限性,不能代表所有的用户;

(2) 无法全自动化监控:问卷设计及提数暂时无法自动化,也就仅限于一次摸底;

(3) 样本数量不足:单个用户的标签不全,导致标签整体数量偏少。

Part2 pandas使用总结

1、jupyter环境准备(web交互式笔记本,python快速编码运行调试神器)。

(1)pip install jupyter

解决:下载ipython-5.7.0-py2-none-any.whl,notebook-5.5.0-py2.py3-none-any.whl放到python的Scripts目录下,pip install xxx.whl。

(2)再次pipinstall jupyter

(3)使用jupyter notebook

new-选择对应类型可打开交互式笔记本界面。

2、Pandas擅长做什么?

(1)快速读写csv、excel、sql,以原表数据结构存储,便捷操作处理行、列数据;

(2)数据文档行列索引快速一键重定义;

(3)强大的函数支持大数据文件的快速统计分析;

(4)可以对整个数据结构进行操作,不必一行行循环读取……

如果您有上述需求,不妨继续往下看。

3、pandas安装

(1)安装:一般用pip,安装第三方库前不妨先更新下pip。

python -m pip install -U pip

pip install pandas

(2)导入

import pandas as pd

(3) 帮助

查看python第三方库帮助,利用python自带pydoc文档生成工具

Step1:配置pydoc服务

Cmd下python –m pydoc –p 1234

Step2:浏览器打开http://localhost:1234/

4、Pandas数据结构

series:带标签的一维数组,标签可以重定义。

dataframe:二维表格性数组,导入读取的csv、excel就是这种结构,可以直接对行列做操作。

举个例子:

读取表格——得到类型是DataFrame的二维数组question_data:

其中的一列df[‘num’]就是一维数组series,像个竖起来的list。

5、pandas的数据处理

(1)数据检索处理。

(a)查询首尾;

(b)查询某行,列;

注意:iloc、loc、ix(尽量用ix,避免搞不清楚index和行号)。

loc:主要通过index索引行数据。df.loc[1:]可获取多行,df.loc[[1],[‘name’,’score’]]也可获取某行某列iloc:主要通过行号索引行数据。与loc的区别,index可以定义,行号固定不变,index没有重新定义的话,index与行号相同。

ix:结合loc和iloc的混合索引。df.ix[1],df.ix[‘1’]。

(c)按条件查询指定行和列;

(d)多条件查询;

(2)数据增删改处理。

(a)增删行;

(b)增删列;

(c)行列数据相连:参看(3)(c)。

(3)多表数据处理;

(a)merge;

eg:合并两张表:

stu_score1 = pd.merge(df_student, df_score, on='Name')——内连接,交集。

stu_score1

stu_score2 =pd.merge(df_student, df_score, on='Name',how='left')——左连接,以左边为准。

stu_score2

how参数:inner(默认),left,right,outer,分别为内、左、右、外连接,inner为交集,outer为并集。

(b)join——how原则同merge,默认how=‘left’

主用于索引拼接列,两张表不同列索引合并成一个DataFram,比较少用。

(c)concat——axis=0,按行合并,axis=1,按列合并

stu_score2 = pd.concat([df_student,df_score], axis=0)。

stu_score2

(4)数据统计处理;

(a)df.describe()

根据某列计算一系列统计值,df[‘xxx’].describe(),返回如下数据表:

(b)df.set_index(‘列a’)与df.reset_index(‘列a’)

需要对某列数据处理时可以通过set_index()设为索引,再用df.sort_index()进行排序,然后再通过reset_index()设回数据。

(5)文件读写处理; 视频资料学习分享 企(Q)鹅群 519970686

以csv为例

df = pd.read_csv("D:/pandas_test.csv", encoding='utf-8')

df.to_csv(r"D:\test.csv", index=False,sep=',', encoding='utf_8_sig')

写文件时设置encoding='utf_8_sig'可解决中文乱码问题。

(6)数据集批量处理。

(a)apply和applymap

df[‘’].apply(函数)对某列数据应用函数,df.applymap(函数)对整个表应用函数。

(b)groupby

根据某列或某几列分组,本身没有任何计算,返回,用于做分组后的数据统计,如:

group_results = total_result.groupby(['lable', 'diff_value']).size()返回每个分组的个数,常用的有max(),min(),mean()

如上是本次脚本分析涉及到的功能,此外,pandas还有作图功能,这次暂未用到,就不展开说啦。

用户画像准确性评测初探 ——拨开python大数据分析的神秘面纱相关推荐

  1. 程度性数据python分析_用户画像准确性评测初探——拨开python大数据分析的神秘面纱...

    导读 本文主要包括两部分内容,第一部分会对零零散散进行了两个多月的用户画像评测做个简要回顾和总结,第二部分会对测试中用到的python大数据处理神器pandas做个整体介绍. Part1用户画像评测回 ...

  2. Python大数据分析实战:豆瓣电影Top250中的最佳导演是谁?

    在之前写的一篇文中中,已经采用urllib和BeautifulSoup的方式抓取了豆瓣电影TOP250的导演.编剧.演员.上映时间和地区.语言.短评数.影评数.多少人想看.多少人看过等22个字段. 接 ...

  3. 干货!小白入门Python数据科学全教程 Python大数据分析

    本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工程师 ...

  4. Python 大数据分析疫情:如何实现实时数据爬取及 Matplotlib 可视化?

    作者 | 杨秀璋 来源 | CSDN博客专家Eastmount 责编 | 夕颜 思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图 ...

  5. 毕设设计之 ---基于python大数据分析的北上广住房数据分析

    文章目录 前言 分析展示 一.北上广租房房源分布可视化 二.北上广内区域租金分布可视化 三.房源距地铁口租金的关系可视化 四.房屋大小与租金关系可视化 结论 租个人房源好还是公寓好 北上广深租房时都看 ...

  6. python大数据分析实例-如何用Python分析大数据(以Twitter数据挖掘为例)

    原标题:如何用Python分析大数据(以Twitter数据挖掘为例) 来源:艾翻译(http://www.itran.cc/) 原文标题:Twitter Data Mining: A Guide to ...

  7. Python大数据分析(二):大数据技术基础

    文章目录 (一)Linux系统和大数据 (二)Hadoop (1)Hadoop包含哪些模块? (2)Hadoop的生态成员 (3)哪些人在使用Hadoop? (三)Spark (1)Scala (2) ...

  8. python大数据分析实例-Python实现的大数据分析操作系统日志功能示例

    本文实例讲述了Python实现的大数据分析操作系统日志功能.分享给大家供大家参考,具体如下: 一 代码 1.大文件切分 import os import os.path import time def ...

  9. Python大数据分析与挖掘实战微课版答案 Python大数据分析与挖掘实战课后答案 例题 课后作业 python题目 python题库 数据分析与挖掘题库 数据分析与挖掘项目

    (在此仅展示题目,所有数据.代码.答案.习题等点我头像,在资源中!!!) 以下关于pandas 数据预处理说法正确的是(). A. pandas没有做哑变量的函数 B. 在不导入其他厍的情况下,仅仅使 ...

最新文章

  1. 宏基因组实战6. 不比对快速估计基因丰度Salmon
  2. 拖拽的原生和jQuery写法
  3. delphi dbgrideh 遍历每一个单元格_用Python解数独[1]:求每个单元格的行值域
  4. C# AppDomain
  5. 给老婆普及计算机知识
  6. 育果医生CEO马于堃:互联网医疗行业与产品的本质
  7. python3.6安装tesserocr
  8. BUPT 2012复试机考 4T
  9. .NET开发框架(一)-框架介绍与视频演示
  10. sql删除元组_Lecture #02: 中级SQL
  11. jdk1.7 String switch的实现
  12. 祝贺 Java 走过创新的 25 年
  13. uboot命令及内核启动参数
  14. httpsession 是一样的吗_理解HTTP session原理及应用
  15. Winform读报工具
  16. 《Windows内核原理与实现笔记》(一)Windows系统结构和基本概念
  17. Cinema 4d 软件介绍
  18. 大年初九,浅显学习之卷积
  19. word排版快捷指令_常用的Word快捷键大全
  20. ff7重制版青魔法_《FF7重制》敌方招式获取方式与效果

热门文章

  1. [衣裳饰品]谈谈西装、手工西装和西装定制_时尚资讯_天涯论坛
  2. 用AI算法起中文名字 ---- 传统起名字方法(1):姓名与传统文化
  3. linux命令怎么输入乘号,linux expr命令参数及用法详解---linux手工命令行计数器
  4. 3M微型投影机在不久后将出现在三星手机上
  5. 解决——》No qualifying bean of type ‘XXX‘ available
  6. java听课笔记8面向对象(下)
  7. python批量将excel转成pdf_使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!
  8. 使用Ajax实现异步文件下载(支持IE)
  9. 淘淘商城第20讲——展示后台管理系统首页面
  10. Unity 布料模拟插件Magica Cloth