大数据文摘作品汇编:王梦泽、丁辉、达洁琼、Aileen数据科学团队持续稳定增长,这也意味着经常有新的数据科学家和实习生加入团队。我们聘用的每一位数据科学家都有不同的技能组合,但他们都拥有强大的分析背景,并且能够将这些背景应用到实际的业务案例中。例如,团队中的大多数人都学习过计量经济学,这为概率论和统计学提供了坚实的基础。典型的数据科学家必须处理大量数据,因此良好的编程技能必不可少。然而,我们的新数据科学家的背景往往各不相同。编程环境千差万别,因此新数据科学家的编程语言背景涵盖R、MatLab、Java、Python、STATA、SPSS、SAS、SQL、Delphi、PHP到C#和C++。了解多种不同的编程语言有时是必要的,但是我们更喜欢在大多数项目中使用一种编程语言,这样我们就可以更轻松地进行项目协作。由于没有人无所不知,一种独特的编程语言让我们有机会互相学习。我们公司比较喜欢用Python。在开源社区的大力支持下,Python已经成为数据科学的利器。Python简单易用的语法、强大的数据处理能力,以及优秀的开源统计库,如Numpy、Pandas、Scikit-learn、Statsmodels等,让我们能够完成从探索性分析到构建统计的各种任务楷模。可扩展的大数据管道和机器学习算法。仅对于那些松散的统计模型,我们有时会同时使用Python和R,其中Python负责大量数据处理,而R负责统计建模。我的理念是边做边学,因此为了帮助新的数据科学家使用Python进行数据科学研究,我们创建了Python数据科学(速成)课程(PythonDataScience(Crash)Course)。本课程的目标是让我们的新员工(和其他部门的同事)能够按照自己的节奏,以互动的方式学习解决实际业务问题。同时,更有经验的数据科学家可以回答任何问题,但不要低估在StackOverflow或图书馆文档中寻找答案的技能,我们当然愿意教新的数据科学家这项技能!在文章中,我们将分阶段介绍这门实践课程。第一阶段:学习Python的基础知识很明显。第一步是学习Python软件,即学习Python语法和基本操作。幸运的是,如果您能很好地处理代码缩进,Python语法并不那么困难。我在使用Java编程语言的时候不需要注意缩进,但是后面开始使用Python的时候,很容易在缩进上出错。那么,如何开始学习Python?由于我们更喜欢边做边学,因此我们总是通过CodecademyPython课程开始招聘新员工。Codecademy提供交互式Python课程体验,无需担心安装软件的麻烦,直接在浏览器中即可学习使用Python。CodecademyPython课程大约13小时,完成后,您应该能够使用Python进行简单的操作。提示:数据科学家也可以在Codecademy上学习SQL,这也是一门很重要的课程。Phase2:在Anaconda环境中本地安装Python在完成Codecademy课程后,我们显然会想要开始编写自己的代码。但是,由于我们不会继续在浏览器中运行Python,因此我们需要在本地计算机上安装Python。Python是开源的,可从www.python.org免费下载。不过正式版只包含标准的Python库,里面包含了文本文件、日期时间、基本算术运算等功能。Python标准库对于多样化的数据科学分析来说不够全面,但是开源社区已经创建了很好的库来扩展Python在数据科学研究方面的能力。为避免必须单独下载和安装所有库,我建议使用AnacondaPython发行版。Anaconda其实就是Python结合了大量的库,所以不需要手动安装。此外,Anaconda附带一个简单的命令行工具,可在必要时安装新库或更新现有库。提示:尽管Anaconda默认涵盖了几乎所有优秀的库,但仍有一些未包含在内。您可以使用condainstallpackage_name或pipinstallpackage_name语句安装新包。比如我们在项目中经常会用到进度条库tqdm。因此,我们需要先执行pipinstalltqdm语句,完成Anaconda的全新安装。第三阶段:使用PyCharm简单编码安装完Python后,我们就可以在本地电脑上运行Python代码了。打开编写Python代码的编辑器,打开命令行运行新建的Python文件,路径为pythonC:\Users\thom\new_file.py。为了让事情更简单一些,我更喜欢在Pychanm环境中编写Python代码。PyCharm是所谓的集成开发环境,支持开发人员编写代码。它通过提供一个简单的运行脚本按钮来处理运行程序等常规任务,此外,它还通过提供自动完成和实时错误检查来提高效率。如果你在某处忘记了空格或使用了未定义的变量名,PyCharm会发出警告提示。想要使用Git等版本控制系统就项目进行协作吗?PyCharm会帮助你。无论如何,使用Pycham可以在编写Python程序时节省大量的时间,魅力名副其实。阶段4:解决模拟业务问题1.定义研究问题假设现在经理提出了他面临的业务问题,他希望能够预测用户在公司网站。可能性。在给出一些想法后,我们提出可以根据用户的页面浏览量来预测订阅转化的概率。此外,您还构建了以下假设:更多的页面浏览量会导致用户订阅的可能性增加。为了检验假设是否成立,我们需要从网络分析师那里获得两个数据集:(1)Session数据集包含所有用户的所有页面浏览量。user_id:用户标识符session_number:会话编号(按升序排列)session_start_date:会话开始日期时间unix_timestamp:会话开始unix时间戳campaign_id:将用户带到站点的活动的ID域:(子)用户在会话域中访问entry:会话的入口页面referral:推荐的网站,例如:google.compageviews:会话期间的页面浏览量transactions:会话期间的交易量(2)Engagement数据集包含所有用户的所有参与活动。user_id:唯一的用户标识符site_id:生成参与的站点的IDengagement_unix_timestamp:参与发生时的unix时间戳engagement_type:参与类型,例如时事通讯订阅custom_properties:参与的其他属性不幸的是,我们有两个独立的数据集,因为它们来自不同的系统。但是,这两个数据集可以通过唯一的用户标识符user_id来匹配。我已经把我用来解决业务问题的最终代码放在了GitHub上,但是我强烈建议你在自己解决问题之后再看代码。此外,您还可以找到创建两个虚构数据集的代码。代码链接:https://github.com/thomhopmans/themarketingtechnologist/tree/master/7_data_science_in_python2。使用Pandas进行简单的数据处理无论我们应用任何统计模型来解决问题,我们都需要提前清洗和处理数据。例如,我们需要为会话数据集中的每个用户查找有关他们的黑客活动的数据(如果有的话)。这需要加入user_id上的两个数据集并删除***活动之后的所有其他活动数据。CodecademyPython课程已经向您展示了如何逐行读取文本文件。Python非常适合数据管理和预处理,但不适合数据分析和建模。Python的Pandas库克服了这个问题。Pandas为(数字)表和时间序列提供数据结构和操作。因此,Pandas使使用Python数据科学变得更加容易!3.使用pd.read_csv()读取数据集Python代码的第一步是在Python中加载两个数据集。Pandas提供了一个易于使用的函数来读取.csv文件:read_csv()。本着学习的精神,我们建议您自己弄清楚如何阅读这两个数据集。***,您应该构建两个单独的DataFrame,每个数据集一个。提示:在这两个文件中我们有不同的分隔符。此外,请务必查看read_csv()中的date_parser选项以将UNIX时间戳转换为正常的日期时间格式。4.过滤无用数据任何(大)数据问题的下一步都是缩小问题规模。在我们的例子中,有许多列与我们的问题无关,例如会话的媒介/来源。因此,我们在Dataframes上应用索引和选择以仅保留相关列,例如user_id(加入这两个DataFrame所必需的)、每个会话和活动的日期(在此之前搜索***activity和会话)和pageviews(对于假设验证)。此外,我们过滤掉DataFrame中的所有非***活动。可以通过查找每个user_id的最早日期来完成。究竟如何?使用GroupBy:拆分应用组合逻辑!Pandas中最大的操作之一是合并、连接和序列化表。它允许我们执行从简单的左连接和合并到复杂的外部连接的任何操作。因此,可以根据用户的唯一标识符组合会话和活动DataFrame。5.删除***活动之后的所有会话在上一步中使用简单的合并,我们将***活动的时间戳添加到每个会话中。通过将会话时间戳与***活动时间戳进行比较,您应该能够过滤掉无用的数据并减少问题的规模。6.添加因变量y:参与/订阅活动转化如上所述,我们要预测页面浏览量对转化概率(即***活动)的影响。因此,我们的因变量y是一个二进制变量,表示会话中是否发生了转换。由于我们进行了上述过滤(即在黑客活动后删除所有非***活动和会话),根据定义,这种转换是在每个用户的最近会话中进行的。同样,使用GroupBy:split-apply-combine逻辑,我们可以创建一个包含观察的新列,如果它是用户的最后一次会话,则为1,否则为0。7.添加参数X:访问的累计总和我们的独立变量是页面访问。但是,我们不能简单地计算会话中的综合浏览量,因为早期会话中的综合浏览量会影响转化概率。因此,我们创建一个新列来计算用户页面访问的累计总和。这是我们的自变量X。8.通过Pandas库使用StatsModels拟合逻辑回归我们最终得到一个包含单个离散X列和单个二进制Y列的小型DataFrame。并使用(二元)逻辑回归模型来估计基于一个或多个自变量的因变量的二元响应概率。StatsModels是Python的统计和计量经济学库,提供用于参数估计和统计测试的工具。所以它包含逻辑回归函数也就不足为奇了。那么,如何通过StatsModels来拟合逻辑回归模型呢?请百度...提示1:不要忘记在逻辑回归中添加一个常量。技巧2:另一个适合逻辑回归等统计模型的优秀库是scikit-learn。9.Matplotlib或Seaborn可视化拟合逻辑回归模型后,我们可以预测每次累积访问的转化概率。但是,我们无法仅通过提供一些原始数据将最新发现的结果传达给管理层。因此,数据科学家的重要任务之一就是清晰有效地呈现他的结果。在大多数情况下,这意味着提供我们的可视化结果,因为我们都知道一张图片胜过千言万语……Python包含了几个优秀的可视化库,其中最著名的是MatplotLib。Seaborn是另一个建立在MatplotLib之上的伟大图书馆。MatplotLib的语法对于以前使用过MatLab的用户来说可能很熟悉。然而,我们更喜欢Seaborn,因为它提供更漂亮的图表和外观问题。我们通过Seaborn得到了模型拟合的可视化效果,如下图:我们可以很好的利用这个可视化效果来证明我们的假设是否成立。10.验证假设第一步是验证我们提出的假设是否正确。回想一下,我们认为更多的页面流量会导致更高的黑客活动可能性。首先,我们可以从之前的可视化结果中看出假设成立。否则,预测概率不会单调增加。然而,我们可以从拟合模型总结中得出相同的结论,如下所示。LogitRegressionResults===================================================================================Dep.Variable:is_conversionNo.Observations:12420Model:LogitDfResiduals:12418Method:MLEDfModel:1Date:Tue,27Sep2016PseudoR-squ.:0.3207Time:21:44:57Log-Likelihood:-5057.6converged:TrueLL-Null:-7445.5LLRp-value:0.000========================================================================================coefstderrzP>|z|[95.0%Conf.Int.]--------------------------------------------------------------------------------const-3.89890.066-59.4590.000-4.027-3.770pageviews_cumsum0.20690.00452.7490.0000.1990.215=========================================================================================我们可以看到在统计结果中,显着性水平为1时pagesviews_cumsum系数为正%。所以,这足以说明我们的假设成立了,来吧!此外,您刚刚用Python完成了第一个数据科学分析!:)是不是很棒?试一试!原文链接:https://www.themarketingtechnologist.co/helping-our-new-data-scientists-start-in-python-a-guide-to-learning-by-doing/【本文为原文翻译专栏组织大数据文摘微信公众号《大数据文摘(id:BigDataDigest)》】点此查看作者更多好文
