数据科学家实操之路

摘要: Kaggle最近进行了一项旨在评估数据科学和机器学习当前发展状况的调查。 他们收到了将近17000份答卷,并利用这些答卷做出了大量的分析。

Kaggle最近进行了一项旨在评估数据科学和机器学习当前发展状况的调查。 他们收到了将近17000份答卷,并利用这些答卷做出了大量的分析。对于调查结果的分析报告,我并不感兴趣,我只是想看看这些调查结果是否对我这种想知道如何成为数据科学家的人来说是否有用。

如果你对分析过程并不感兴趣,而只想看看17000个行业专业人士的说法,那么请跳到本文的最后一节阅读结论。 否则,请继续阅读下文,看看我是如何得出结论的。

1. 导入和预处理

1.1. 导入数据

library(data.table)library(dplyr, warn.conflicts =FALSE)library(ggplot2)library(tibble)results <- as.tibble(suppressWarnings(fread("../input/multipleChoiceResponses.csv")))

1.2. 数据预处理

在分析过程中遇到的许多职位和专业的名字都很长,因此,我缩短了其中一些名字的长度,这样可以让图表更具可读性。我删除了其中的非法字符,并将工作满意度转换为数字。

results$CurrentJobTitleSelect[results$CurrentJobTitleSelect =="Software Developer/Software Engineer"]<-"Software Engineer"
results$CurrentJobTitleSelect[results$CurrentJobTitleSelect =="Operations Research Practitioner"]<-"Operations Research"results$MajorSelect[results$MajorSelect =="Engineering (non-computer focused)"]<-"Engineering"
results$MajorSelect[results$MajorSelect =="Information technology, networking, or system administration"]<-"Information technology"
results$MajorSelect[results$MajorSelect =="Management information systems"]<-"Information systems"results_names <-names(results)
results_names[results_names =="WorkMethodsFrequencyA/B"]<-"WorkMethodsFrequencyABTesting"
results_names[results_names =="WorkMethodsFrequencyCross-Validation"]<-"WorkMethodsFrequencyCrossValidation"names(results)<- results_namesresults$JobSatisfaction <-suppressWarnings(as.numeric(substr(results$JobSatisfaction, start =1, stop =2)))

1.3. 主题

在整个分析过程中,我需要显示多个数据,因此,我这里要提一下这个可以让图表变得更漂亮的东西。我将在大多数的图表中都使用这个主题。

jack_theme <- theme(plot.background = element_rect(fill ="#eeeeee"),panel.background = element_rect(fill ="#eeeeee"),legend.background = element_rect(fill ="#eeeeee"),legend.title = element_text(size =12, family ="Helvetica", face ="bold"),legend.text = element_text(size =9, family ="Helvetica"),panel.grid.major = element_line(size =0.4, linetype ="solid", color ="#cccccc"),panel.grid.minor = element_line(size =0),plot.title = element_text(size =20, family ="Helvetica", face ="bold", hjust =0.5, margin = margin(b =20)),axis.title = element_text(size =14, family ="Helvetica", face ="bold"),axis.title.x = element_text(margin = margin(t =20)),axis.title.y = element_text(margin = margin(r =20)),axis.ticks = element_blank(),plot.margin = unit(c(1,1,1,1),"cm"))

2. 开始

2.1. 编程语言

许多新手问自己的第一个问题是他们应该学习哪种编程语言。 在这个图表中,我们可以看到各个职位的被调查者们是如何看待Python和R语言的。

results %>%rename(Language = LanguageRecommendationSelect, title = CurrentJobTitleSelect)%>%filter(Language =="R"| Language =="Python")%>%filter(title !="")%>%group_by(title, Language)%>%count()%>%ggplot(aes(title, n, color = Language))+ggtitle("Python vs. R by Job Title")+labs(x ="Job Title", y ="Count")+geom_point(size =4)+jack_theme +theme(axis.text.x = element_text(angle =330, hjust =0),axis.title.x = element_text(margin = margin(t =12)))



正如我们所看到的,在几乎所有的场景中,初学者对Python的喜欢程度都超过了R,对于数据科学家、软件开发人员和机器学习工程师来说,尤其如此。 不过,统计学家更喜欢R。研究员也更喜欢R,但我认为这是由于样本太小的原因导致的。

2.2. 专业和可能的职位

我还没上大学,所以还没有选择专业。 但是,我在直觉上认为,有些专业比其他专业更具担任某些职位的可能性。 下面的图表可以用来证实或反驳我的观点,我们来看下某个专业的人们有多大的比例从事某个职位。

results %>%rename(Major = MajorSelect, title = CurrentJobTitleSelect)%>%filter(title !="", Major !="")%>%group_by(title, Major)%>%summarize(n = n())%>%mutate(freq = n /sum(n)*100)%>%ggplot(aes(x = title, y = freq, fill = Major, label =ifelse(freq >8,round(freq),"")))+ggtitle("Major vs. Job Title")+labs(x ="Job Title", y ="Frequency (%)")+geom_bar(stat ="identity", position = position_stack())+geom_text(position = position_stack(vjust =0.5))+scale_y_continuous(expand =c(0,0))+jack_theme +theme(axis.title.x = element_text(margin = margin(t =8)),axis.text.x = element_text(angle =320, hjust =0))


我的直觉基本上是正确的,专业是预测某人未来会从事哪些工作的最好依据。其中一些趋势是显而易见的:计算机科学专业的人倾向于成为计算机科学家、程序员和软件工程师,而数学专业则倾向于成为统计学家和预测模型师。大部分物理学专业都进入了研究领域,而非计算机科学工程专业的人则称自己为工程师。

我个人非常喜欢这个图表,每个专业的人都涵盖了所有的职位。对我来说,这表明不管你在学校里学的是什么专业,只要有激情,你就可以做好你想做的事。

3. 学什么

3.1. 学习资源

调查问卷中有一个问题是关于学习资源对学习数据科学的用处有多大。在下一张图表中,我绘制了每个学习资源受欢迎程度和有用性之间的关系。受欢迎度是回答这个问题的人数,有用性则是答案和回答者数量的的加权平均值。如果答案是“非常有用”,则权重为1,“有点有用”权重为0.5,如果没有用处,则权重为零。在这个图表中,我们不仅可以看到哪里的资源最有用,而且可以知道哪里的资源被过度使用或利用不足。

# Get all column names that begin with "LearningPlatformUsefulness"
platforms <-grep("^LearningPlatformUsefulness",names(results), value=T)names <-c()
popularities <-c()
scores <-c()for(platform in platforms){usefulness <- results %>%group_by_(platform)%>%count()# Popularity = the number of people who responded to this questionpopularity <- usefulness[[2]][2]+ usefulness[[2]][3]+ usefulness[[2]][4]# Usefulness = a weighted average determining the usefulness of this platformscore <-(usefulness[[2]][2]*0+ usefulness[[2]][3]*0.5+ usefulness[[2]][4]*1)/ popularitynames <-c(names,gsub("LearningPlatformUsefulness","", platform))popularities <-c(popularities, popularity)scores <-c(scores, score)}scores_df <-data.frame(Popularity = popularities,Usefulness = scores,Name =names)ggplot(scores_df, aes(x = Usefulness, y = Popularity))+ggtitle("Effectiveness of Learning Methods")+geom_point()+geom_text(aes(label = Name, family ="Helvetica"), nudge_y =200)+jack_theme



从上图中我们可以看出一些浅显的结果。 播客、时事通讯和会议在有用性方面是最低的,而Kaggle竞赛、Stack Overflow、在线课程,以及项目的得分最高。 我们也可以看到,虽然很多人喜欢看YouTube教程和阅读博客帖子,但这可能并不是学习数据科学最有效的方法。

3.2. 重要的工作技能

对于哪些技能在工作中最重要这个问题,我们可以使用与创建上一个图相类似的方法来创建一张新的图。在这张新图中,我同样绘制了流行度与有用性之间的关系,看看哪些技术在现实世界中使用得最多。

# Get all column names that begin with "JobSkillImportance" and end in a letter
platforms <-grep("^JobSkillImportance.*[A-z]$",names(results), value=T)names <-c()
popularities <-c()
scores <-c()for(platform in platforms){usefulness <- results %>%group_by_(platform)%>%count()# Popularity = the number of people who responded to this questionpopularity <- usefulness[[2]][2]+ usefulness[[2]][3]+ usefulness[[2]][4]# Usefulness = a weighted average determining the usefulness of this platformscore <-(usefulness[[2]][2]*1+ usefulness[[2]][3]*0.5+ usefulness[[2]][4]*0)/ popularitynames <-c(names,gsub("JobSkillImportance","", platform))popularities <-c(popularities, popularity)scores <-c(scores, score)}scores_df <-data.frame(Popularity = popularities,Usefulness = scores,Name =names)ggplot(scores_df, aes(x = Usefulness, y = Popularity))+ggtitle("Important Skills on the Job")+geom_point()+geom_text(aes(label = Name, family ="Helvetica"), nudge_y =12)+jack_theme


有趣的是,MOOC在实用性方面得分最低,即使是在线课程在最后一个问题中也达到了第二高的分数。 因此,虽然课程对学习数据科学很有帮助,但其他一些学习资源对于提高你的工作技能也非常有用。 我们可以看到,对于提高数据科学工作的技能而言,有关Python、高级统计和可视化工具方面的知识的排名最高。

3.3. 现实世界中的工具

调查问卷中有一个问题是询问受访者使用某种技术的频繁程度。 我没有把这个做成一个散点图,而是把数据放在一个有多个职位的表格中,因为这些答案在本质上已经反应了受欢迎水平。

# Get all column names that begin with "WorkToolsFrequency" and end in a letter
platforms <-grep("^WorkToolsFrequency.*[A-z]$",names(results), value=T)
positions <-c("All","Data Scientist","Software Engineer","Researcher","Machine Learning Engineer")technologies <-matrix("",10,length(positions))colnames(technologies)<- positions
rownames(technologies)<-1:10i <-1for(position in positions){names <-c()popularities <-c()if(position =="All"){position_results <- results}else{position_results <- results %>% filter(CurrentJobTitleSelect == position)}for(platform in platforms){usefulness <- position_results %>%group_by_(platform)%>%count()# Popularity = the number of people who responded to this questionpopularity <- usefulness[[2]][2]+ usefulness[[2]][3]+ usefulness[[2]][4]+ usefulness[[2]][5]# Usefulness = a weighted average determining how much this tool was usedscore <-(usefulness[[2]][2]*1+ usefulness[[2]][3]*0.67+ usefulness[[2]][4]*0.33+ usefulness[[2]][5]*0)/ popularitynames <-c(names,as.character(gsub("WorkToolsFrequency","", platform)))popularities <-c(popularities, popularity * score)}scores_df <-data.frame(Popularity = popularities,Name =names)technologies[, i]<-head(as.character((scores_df %>% arrange(desc(Popularity)))$Name), n =10)i <- i +1}technologies


从这个表格中可以看出,Python、SQL、R、Jupyter、Unix和TensorFlow无处不在。而Spark、Hadoop和Tableau是数据科学家所特有的,NoSQL是软件工程师所特有的,MATLAB只有研究人员和机器学习工程师使用。 虽然其中一些结果可能很容易被猜到,但是对于那些希望在将来从事这些工作的人来说,这确实是一个很有用的表格。

3.4. 重要的工作方法

我们再一次使用了制作之前的表格的方法,但是把工作中使用的技能替换成了方法。 在这里,我们可以看到受访者使用的前10种方法。

# Get all column names that begin with "WorkToolsFrequency" and end in a letter
methods <-grep("^WorkMethodsFrequency.*[A-z]$",names(results), value=T)
positions <-c("All","Data Scientist","Software Engineer","Researcher","Machine Learning Engineer")technologies <-matrix("",10,length(positions))colnames(technologies)<- positions
rownames(technologies)<-1:10i <-1for(position in positions){names <-c()popularities <-c()if(position =="All"){position_results <- results}else{position_results <- results %>% filter(CurrentJobTitleSelect == position)}for(method in methods){usefulness <- position_results %>%group_by_(method)%>%count()# Popularity = the number of people who responded to this questionpopularity <- usefulness[[2]][2]+ usefulness[[2]][3]+ usefulness[[2]][4]+ usefulness[[2]][5]# Usefulness = a weighted average determining how much this tool was usedscore <-(usefulness[[2]][2]*1+ usefulness[[2]][3]*0.67+ usefulness[[2]][4]*0.33+ usefulness[[2]][5]*0)/ popularitynames <-c(names,as.character(gsub("WorkMethodsFrequency","", method)))popularities <-c(popularities, popularity * score)}scores_df <-data.frame(Popularity = popularities,Name =names)technologies[, i]<-head(as.character((scores_df %>% arrange(desc(Popularity)))$Name), n =10)i <- i +1}technologies
-所有人数据科学家软件工程师研究人员机器学习工程师
1数据可视化数据可视化数据可视化数据可视化交叉验证
2交叉验证交叉验证交叉验证交叉验证神经网络
3逻辑回归逻辑回归神经网络神经网络数据可视化
4决策树随机森林逻辑回归逻辑回归卷积神经网络
5随机森林决策树决策树主成分分析自然语言处理
6时序分析时序分析时序分析时序分析逻辑回归
7神经网络文本分析文本分析卷积神经网络随机森林
8主成分分析集成方法随机森林决策树决策树
9文本分析主成分分析自然语言处理支持向量机主成分分析
10邻近算法GBMA/B测试自然语言处理集成方法

从这个表格中可以看出,每个人都在使用数据可视化、交叉验证、逻辑回归和决策树。自然语言处理和神经网络对于机器学习工程师来说使用更为频繁,而软件工程师是唯一一个经常使用A/B测试的职业。

4. 结论

如果你是一位数据科学新手,并且想入门,那么我们以上的分析为你提供了以下这些建议:

  1. 学习Python。Python和R都已经有数十年的历史了,但是正如我们在第一个图表中看到的那样,Python获得了全胜。这个结果也在第四张图中得到了支持,绝大多数的参与者都认为Python是工作中最重要的技能。我相信你很难找到一家完全不使用Python的公司,所以你应该好好学习。
  2. 计算机科学或数学专业。正如我在“专业和职位图”之后所提到的,任何一个专业在每个工作角色中都存在。然而,从图中的比例来看,计算机科学专业和数学专业的人数几乎在每一个角色中都是最多的。虽然这不是必需的,但拥有这两个专业中的任何一个或同时拥有两个专业的学历会给你带来很大的优势。
  3. 参加项目、参加课程,并参与Kaggle比赛。从“最佳学习资源的图表”中我们可以很清楚的看到,参加项目、参加在线课程以及参与Kaggle比赛是学习数据科学三个最有用的资源。
  4. 了解最流行的工具。数据科学相关的工具和库很多很多,但是这次调查让我们看到了被认为是最重要的工具和库。推荐最多的工具是Python、SQL、R、Jupyter和Unix,最值得推荐的方法是数据可视化、交叉验证,逻辑回归,决策树和随机森林。

文章原标题《How to Become a Data Scientist》,作者: Jack Cook,译者:夏天,审校:主题曲。

原文链接

干货好文,请关注扫描以下二维码:



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快报:Java跌惨!Python背后或有推手?网友:心态已崩!

“愿你出走半生&#xff0c;归来仍学Python&#xff01;”最近Python的slogan正在“变化”。原因是来自于PYPL官方发布2019年7月编程语言指数榜&#xff0c;Python连续半年夺冠&#xff0c;并且本月市场份额超高的28.08%。这简直是遇神杀神&#xff0c;遇佛杀佛的灭霸节奏&…

mybatis源码深度解析_30天消化MyBatis源码解析笔记,吊打面试官,offer接到手软

MyBatis 是一个优秀的 Java 持久化框架&#xff0c;SSM 框架组合(Spring SpringMVC Mybatis)&#xff0c;依赖 MyBatis 搭建的项目更是数不胜数&#xff0c;在互联网公司的使用中&#xff0c;占据了大片江山&#xff0c;你在使用 MyBatis 吗&#xff1f;会使用你真的了解 MyB…

从司法领域看阿里云产业AI策略:生态联盟,技术赋能

摘要&#xff1a; 在日前结束的云栖大会深圳峰会上&#xff0c;除了阿里云全面进军IoT的战略宣布之外&#xff0c;持续不断的生态签约成了另一大亮点&#xff1a;全天的IoT合伙作伴签约&#xff0c;围绕“ET大脑”的千里马计划&#xff0c;以及司法领域重要IT服务商通达海的合作…

word表格怎么缩小上下间距_如何缩小word表格中的行距

自己绘制表格&#xff0c;然后在表格属性里可以设置www.51dongshi.com防采集。word行距缩小的方法&#xff1a;本次操作以Dell电脑为例&#xff0c;具体操作步骤如下&#xff1a;产品名称&#xff1a;Dell产品型号&#xff1a;Dell 灵越5000系统版本&#xff1a;Windows 10软件…

全球云端数据仓库领导者 MaxCompute 将于本月10日正式开服美东节点

摘要&#xff1a; 作为全球云端数据仓库的领导者&#xff0c;阿里云MaxCompute为满足更多客户的业务需求&#xff0c;不断加快全球化部署的节奏。本月10日&#xff0c;美东&#xff08;弗吉尼亚&#xff09;节点会正式上线。届时&#xff0c;将会以最新版本产品向用户提供大数据…

给面试官讲明白:一致性Hash的原理和实践

戳蓝字“CSDN云计算”关注我们哦&#xff01;来源 | 靳刚同学作者 | 靳刚“一致性hash的设计初衷是解决分布式缓存问题&#xff0c;它不仅能起到hash作用&#xff0c;还可以在服务器宕机时&#xff0c;尽量少地迁移数据。因此被广泛用于状态服务的路由功能”01—分布式系统的路…

mysql如何逻辑删除_mysql逻辑删除如何恢复

在项目中&#xff0c;一般会遇到这种情况&#xff1a;逻辑删除以及多关联不删除逻辑删除(软删除)&#xff1a;逻辑删除就是对要被删除的数据打上一个删除标记&#xff0c;通常使用一个is_deleted字段标示行记录是不是被删除(或者使用一个status字段代表所谓的“删除”状态)&…

手把手,教你用MaxCompute+OpenSearch搭建分布式搜索引擎

摘要&#xff1a; 最近&#xff0c;经常有客户咨询如何低成本搭建高性能的海量数据搜索引擎&#xff0c;比如实现公众号检索、影讯检索等等。由于客户的数据在阿里云上&#xff0c;所以希望找到云上解决方案。笔者开始调研一些云上产品&#xff0c;很多人向我推荐了OpenSearch&…

再获绿色等级5A称号!揭开腾讯数据中心节能环保黑科技

9月3日北京&#xff0c;腾讯目前位于深圳最大的数据中心&#xff0c;“腾讯光明中国移动|万国数据数据中心二期”荣获运行5A绿色数据中心称号&#xff0c;达到了“数据中心绿色等级评估”的最高等级。该数据中心绿色分级评估由ODCC联合中国信通院、绿色网格TGGC发起&#xff0c…

MaxCompute_2_MaxCompute数据迁移文档

摘要&#xff1a; 乍一看标题会以为是不是作者写错了怎么会有从MaxCompute到MaxCompute迁移数据的场景呢在实际使用中已经有客户遇到了这种场景比如两个网络互通的专有云环境之间数据迁移、公共云数加DataIDE上两个云账号之间数据迁移、还有网络不通的两个MaxCompute项目数据迁…

printf 指针地址_指针搞都不懂,好意思说自己会C语言?

C语言面试必问知识点之「指针」一、指针相关概念指针与地址我们使用的计算机&#xff0c;系统为了更好地管理我们的内存&#xff0c;就为内存区的每一个字节都分配一个唯一编号&#xff0c;这就是“地址”。指针的实质就是地址&#xff0c;就是这一个个编号。指针变量变量在编译…

开启数据科学职业生涯的8个基本技巧

摘要&#xff1a; 本文为数据科学家开创数据科学事业铺平了道路。只要按照这八个小贴士来做&#xff0c;你就能让自己的职业生涯有一个良好的开端。Nick Bostrom&#xff08;译者注&#xff1a;Nick Bostrom是牛津大学哲学系的教授&#xff0c;是人类未来研究院的创始人和主任。…

WIAC上,华为展区都有点儿啥?

戳蓝字“CSDN云计算”关注我们哦&#xff01;谈及计算产业的变迁&#xff0c;我们了解到其先后经历了大型计算机、小型机/x86服务器阶段&#xff0c;并同时开创了敏捷、创新、体验好、省成本的Cloud 1.0以及Cloud 2.0时代&#xff0c;在云计算、5G与AI等创新技术不断叠加发展的…

【技术系列】浅谈GPU虚拟化技术(第一章)

摘要&#xff1a; GPU深度好文系列&#xff0c;阿里云技术专家分享 第一章 GPU虚拟化发展史 GPU的虚拟化发展历程事实上与公有云市场和云计算应用场景的普及息息相关。如果在10年前谈起云计算&#xff0c;大部分人的反应是“不知所云“。但是随着云计算场景的普及&#xff0c;概…

php如何删除数据mysql数据库_php如何删除数据库

php如何删除数据库1、首先查看有哪些数据库2、使用php删除test2<?php $dbhost localhost; // mysql服务器主机地址$dbuser root; // mysql用户名$dbpass root; // mysql用户名密码$conn mysqli_connect($dbhost, $dbuser, $dbpass);if(! $conn ){die(连接失败: . mysq…

Mac 神兵利器(二) 极简软件清单

摘要&#xff1a; 作为一个非常爱好折腾的Mac重度用户&#xff0c;在尝试了不少于50次重装系统经历以及安装了几乎所有软件类别的N多软件后&#xff0c;决定分享一下自己的软件清单。 选择app的三个原则&#xff1a; 尽量使用系统原生软件&#xff0c;比如日历&#xff0c;提醒…

解决 idea 运行 Spring Boot 项目启动慢的问题

同事win10启动Spring Boot工程只要3秒左右&#xff0c;我的启动要30秒。开始以为是CPU差距太大&#xff0c;后来才觉得不是这样&#xff01; 解决方案 hostname命令查看自己的 hostname 注意修改 hosts 文件时&#xff0c;ip 与域名之间要换成两个 tab 键。 127.0.0.1 PC-2…

亚马逊首席科学家李沐「实训营」国内独家直播,马上报名 !

开学了&#xff0c;别人家的学校都开始人工智能专业的学习之旅了&#xff0c;你呢&#xff1f;近年来&#xff0c;国内外顶尖科技企业的 AI 人才抢夺战愈演愈烈。华为开出200万年薪吸引 AI 人才&#xff0c;今年又有 35 所高校新增人工智能本科专业&#xff0c;众多新生即将开展…

Windows Server Version 1709 管理之入门篇

摘要&#xff1a; 相信有部分同学们会有这样的体验&#xff0c;在公有云上购买了Windows Server Version 1709数据中心版的虚拟机&#xff0c;通过远程连接进去之后&#xff0c;里面全是黑乎乎的一个命令行&#xff0c;其它啥也没有。这&#xff0c;一脸懵懂啊。 相信有部分同学…

切面是异步还是同步操作‘_细说JS异步发展历程

知其然知其所以然&#xff0c;首先了解三个概念&#xff1a;1.什么是同步&#xff1f;所谓同步&#xff0c;就是在发出一个"调用"时&#xff0c;在没有得到结果之前&#xff0c;该“调用”就不返回。但是一旦调用返回&#xff0c;就得到返回值了。换句话说&#xff0…