DS篇||怎样一步步成为数据科学家?(转)
本文原出处:http://blog.csdn.net/Gavin_123/article/details/77877405
最近在学习数据科学,遇到了很多相关的问题,在网上也搜索了很多答案,感觉受益匪浅,现在想在自己的博客中把我遇到的精华问题和答案整理在自己的博客中,供自己以后参考,也方便大家查阅。
1. 【求职转行】想往数据分析,偏statistic方向转行,有什么推荐的在线网路课程(MOOC),平台和相关书籍呢?
希望可以把这个贴子推广给所有想学习或者想从事数据科学方向的朋友,楼上的朋友已经说的比较详细了,我作为偏统计方向的分析师也在这里说一下自己的一些学习方向和方法,希望对大家有帮助。
我认为从事Data analytics或Data Science需要具备以下技能:
Programming (Hack)
这个方面比较广泛,并不是纯粹指编程技能,要不然对于非CS的同学会觉得遥不可及。几个点说一下:
1. Linux, Bash, 后台相关的命令
一个成熟的数据从业者应该懂得灵活的运用数据寻找,获取,安装,Debug,分享,团队合作,Linux是知名的开源系统,在这个系统下环境的配置将变得非常容易和透明。各种包的安装也会事半功倍,建议是用虚拟机建一个Ubuntu系统来处理自己的数据,再利用pip,conda,git等命令来安装包,链接github,clone优秀的案例并push自己的发现。这里推荐两个学习资源,当然你也可以参考网上的各种博客和官方教程。
Linux:
https://www.linkedin.com/learning/linux-bash-shell-and-scripts
Github:
https://www.linkedin.com/learning/learning-git-and-github
2. SQL和资料库相关的技能
资料库是另外一个比较重要的部分,想像一下你不可能一直使用Excel去处理数据,毕竟超过十万行的数据用Excel就比较吃力了。这个时候SQL就是必须要用的,可以说这个是一个核心技能。有的人可能会说SQL非常简单,但是当你实际应用的时候你会发现你在学校学的那些简单Query完全就跟不上需求了。下面说一些基本的Query,大家看看掌握的情况:
o where, group by, order by, having, like, count, sum, min, max, distinct, if, join, left join, limit, and, or, cast, row_number, substr, convert, contact
除了基本的SQL,这里我指相关的relational资料库(MySQL, PostgreSQ等),如果你想分析一些unstructured的数据,比如文字或者image等等,你可以学习一下NoSQL,本人只用过MongoDB和Cassandra,也是主流的两个资料库。感兴趣的可以自己学习一下,这里我觉得两个学习资源不错,一个是codecademy的课程,可以互动式的学习SQL的code,一个是老牌的w3schools的SQL教程,非常的全面。另外MongoDB有自己的线上University,大家有兴趣也可以关注一下。
codecademy:
https://www.codecademy.com/learn/learn-sql
w3schools:
https://www.w3schools.com/sql
MongoDB Univeristy
https://university.mongodb.com.
3. Python/R语言
是否具备code的能力是数据分析的一个分水岭,senior的数据分析师会至少精通一种数据分析语言,并且如果想做数据挖掘,网路爬虫,交互可视化等等都是需要一定的代码处理和理解能力的。这里主要说Python和R,两者在数据分析领域可以说是各有千秋。
先说一下Python,就我理解Python是一种万能的语言,适用性非常强,除了数据分析还能够做很多的事情,比如编写程序,网站开发,深度学习等等。如果你决定使用Python,那么你需要了解的点主要是各种包的搜索和调用,函数的编写和嵌套,数据类型的把握(list, tuple, series, dict),条件判断,循环迭代等等。最好的开发环境我推荐Anaconda。
其次说一下R,它是一个统计学家编写的语言,所以对于各类统计函数的调用,绘图,模型验证,R有著先天的优势。很多参数都可以通过summary直接导出,有的时候在做模型选择优化的时候会觉得得心应手。如果你在使用R,那么了解数据结构(matrix, array, data.frame, list),数据读取,画图(ggplot2),统计函数(mean, median, sd, var, scale)等就是你的重点了解方向。开发环境建议使用Rstudio。
当然除了我上述的很多功能,两种语言都非常强大,从小的数学计算到大型的deep learning模型,都可以实现。只是两者有明显的使用习惯的区别,建议初学者先选择一种入手,等熟悉之后再双管齐下,最后做到灵活的运用不同的语言到不同的project中去。
现在说一下素材推荐,其实这两种语言最好都是结合我后面将要说的统计知识来一起学习,这样可以更加深入的理解代码和实际问题之间的关系。当然,这里先介绍一下我认为不错的素材,后面说统计方面的时候会更深入的推荐一下。我们上面说了很多线上课程,这里我想先说一下书,个人比较喜欢看书LOL。第一本推荐学习python的宝典:ORELLY的《Learning Python》,相当全面,但是也很厚。另外两本《Python Cookbook》和《Python for Data Analysis》也是重点推荐的。我个人的方法是,分析主要看《Python for Data Analysis》,数据结构看《Python Codebook》,《Learning Python》作为你的字典一样的存在,所有的问题都可以回去找。这样一个组合可以让你在学习Python和数据分析过程中事半功倍。
《Learning Python》:
http://shop.oreilly.com/product/0636920028154.do
《Python Codebook》:
http://shop.oreilly.com/product/0636920027072.do
《Python for Data Analysis》:
http://shop.oreilly.com/product/0636920023784.do
除了上述书籍我在说一下线上课程,首先是codecademy和DataCamp都有互动式的课程可以让你瞬间上手编程,其次LinkednIn Learning也有相关的Essential Training课程,如果你已经有了LinkedIn的Premium,那么这些课程都是免费的,学习之后还可以获得LinkedIn的certificate,对于找工作来说是非常棒的。除了上述的当然还有Coursera,udemy, Udacity和edx,大家可以根据自己的感觉来学习,当然还是要注意自己的学习成本,不要贪多不厌。
codecademy:
https://www.codecademy.com/learn/learn-python
DataCamp:
https://www.datacamp.com/courses/tech:python.
LinkedIn:
http://www.linkedin.com/learning/python-3-essential-training
edX:
https://www.edx.org/course/analytics-python-columbiax-bamm-101x
Ok, Python的素材就先说到这里,后面的统计和机器学习部分还会介绍一些python相关的教程。下面我们来说一下R,首先不得不提的就是非常著名的《R in action》一书,它可以算是R语言大数据的101教材了。如果你没有任何编程背景,那么通过这本书入门的时候可以搭配R CRAN的官方文档和数问dataquestion等线上问题集。不管怎么说,我觉得这是一本入门R语言分析的好书。其实还有一本R与统计相关的实战书,我放在后面推荐给大家。线上教程方面就更多了,还是首推DataCamp的互动式课程,然后其他的主流MOOC上也有很多,大家自己可以根据之前介绍python的网址自行搜索。
《R in action》:
http://kek.ksu.ru/eos/DataMining/1379968983.pdf.
DataCamp:
https://www.datacamp.com/courses/free-introduction-to-r
Statistics(Foundation)
Ok,总算写完了Programming的部分,感觉还是有很多没有涉及到,但是这个话题就是非常复杂的,有的时候code参杂著统计,统计擦杂著machine learning,还有visualization和各种domain信息的乱入,导致想分的特别细去介绍数据科学是非常的困难。但是我还是希望用这种逻辑让你明白,这是一个复合型的事业,你想要走的更远就必须不断的学习,让我们一起努力吧,我会在后面的部分尽量补充好相关的教材推荐。