文科生学习大数据处理的四步走(in Python)
之前写过几篇文科生学编程以及大数据处理的小文章。有时会收到豆友的来信,问到底要怎么学大数据处理?
我想了想,结合自己的学习体会,做个简单的分享吧。不一定适合每个人,但是,可能对于很大一部分文科生来说,有参考价值。
步骤一:学好基础编程
不以任务为导向,全面的学习一个编程语言的基础知识。怎么叫全面呢?拿python举例。从“hello world”、变量类型等入手,一直学到面向对象的编程。关于面向对象的编程(OOP),争议比较大。我多说两句。跟国内文科类院系讲编程的老师聊过,基本上没人讲OOP。不是因为老师们都不会,而是讲起来比较费劲,学生理解起来要花较多时间,而真正到课堂的最终目标——数据可视化、简单的数据统计分析等任务来说,又很少会用到OOP。加之文科生本来对编程就有畏难情绪,因此,老师们尽量把课堂知识简化到调用包、搭配使用不同软件/工具来让“编程”学习看起来比较有趣。
但是,一旦进入机器学习和深度学习,OOP的相关应用就俯拾皆是。比如每次的实例化,都是调用一个对象。另外,在机器学习的很多手把手的教程里,都会出现自制的Object(通常用来画图,或者把整个流程管道化)。有些教程的文字讲解部分,也会涉及OOP中类的继承等功能性问题,因此,没有扎实的OOP常识,会很快就遇到瓶颈。当然,OOP只是举个例子,目的是说明:学好编程基本功的重要性。
注意,这里的编程基本功并不包括各种扩展包,因此学起来还是很快的。以python为例,学习基础编程,并不需要学习numpy, pandas,scipy, matplotlib和 seaborn。理由如下:
1. numpy的学习最好结合线性代数一起学,这个后面会说到
2. pandas是建立在numpy之上的,所以也不着急学
3. scipy 最好结合统计一起学
4. matplotlib 和 seaborn,在机器学习中会大量用到,边用边学,现学现用,用啥学啥,比较高效。
步骤二:上手几个机器学习的项目
github或者各种有代码示例的机器学习教程上的项目,找几个来做做。
重在理解机器学习的流程,掌握几种最基本的算法(如:linear/logistic regrassion, random forest, SGD等)、可用的评价指标(各种loss function, utility function, recall, precision, f1 score, sensitivity等) 和模型选择、模型调试(GridSearch, RandomSearch)等基础知识。同时,熟悉你所用的框架及其代码规范(如:fit, predict, transform等函数的基本用法),并掌握过拟合/欠拟合时的模型调试方向。
在上手机器学习项目的同时,你会有很多机会用到各种包,比如numpy, matplotlib等。虽然没学过,但是可以通过修改代码参数,快速掌握项目中用到的相关包的基本功能,特别是画图的代码操作。除非你以后的方向是数据可视化,否则,可能很少有人会系统学习画图的相关代码知识。如果不是特别追求完美、漂亮,那么,画图方面,我的建议是:够用就行。基本上跑过几个项目后,常用的画图代码你已经耳熟手熟了。
步骤三:学线性代数
这一步是绕不过去的。但是,为什么放在这个地方呢?原因有二。1)放在一开始的话,文科生可能根本意识不到线性代数知识有什么用?因此,没有学习的动力。2)放在更后面的话,没有办法深入理解各种算法的内在差异,所谓的“学会机器学习/深度学习”其实只是能胡乱套用集中模型,做不到 “根据具体的应用场景选用合适的算法”。本质上依旧是乱打乱撞。
线性代数怎么学呢?视频的,书籍的,网上的资源一大把,可汗学院啊,3b1b啊,太多了,就不罗嗦了。这里想说的是,结合线性代数,可以开始学numpy了。numpy的很多属性和功能都与线性代数知识密不可分。比如np.eye(3)就是返回一个3*3的单位矩阵。之前一直不理解eye是什么梗,后来知道单位矩阵在数学里简写为 大写的I,谐音是eye,so 。。。至于列向量、行向量等概念,也与A_1darray[np.newaxis, ;], A_1darray[:, np.newaxis]等代码遥相呼应。
微积分其实也就是导数和偏导数这部分要学,就不单独列出了。
步骤四:回到项目,精研算法
拿之前做过的机器学习项目,或者再找几个进阶的项目,从算法的角度重新考虑模型选择和模型调试问题,结合之前学过的线性代数和微积分知识,打开算法的黑盒子,真正掌握机器学习。
其实,一旦你敲过几套项目的代码,学了基本的线性代数和微积分知识,后面的路就宽了。所以,就写到这里吧。万事开头难~希望对大家有点用处。
热门话题 · · · · · · ( 去话题广场 )
- 锦绣芳华追剧手记596篇内容 · 48.5万次浏览
- 想做的事,别等“以后”1.0万+篇内容 · 774.3万次浏览
- 夏日限定的绿色美学1321篇内容 · 47.7万次浏览
- 抬头看看,这个刚诞生的夏天427篇内容 · 70.5万次浏览
- 重新养一遍自己,可真好啊3319篇内容 · 503.4万次浏览
- 中年人感悟特别多1603篇内容 · 755.4万次浏览
- 哪个瞬间你发现自己被琐碎地爱着?792篇内容 · 178.4万次浏览
- 你有哪些“终不似,少年游”的经历?3692篇内容 · 140.0万次浏览
赞
最后一段,感觉并不宽啊,适合用来机器学习的社会科学数据太少了。现在文本分析这么流行,我觉得很大一部分原因是文本数据相对容易获取,一般人很难搞到高质量的大数据。
看到线性代数然后就哭了
初学python,感觉不管可视化还是数据分析,代码要比R略微麻烦。比如R中的类别变量(不管数字型还是文字型)可以直接作为factor投入到回归模型,Python貌似必须先通过LabelEncoder等进行处理后才能放入模型。
这个方法也适合工科,虽然有一定基础了但是也需要边用边学
文科学编程,有工作单位看好吗
老实说,一入分析从此就踏上了数学之路,文科生喜欢数学?太少了,进门后再回头已百年身
文科生看到数学就卒
方不方便问一下您的“文科专业”是什么呢?
我是top财经类学校法律本科生,兼修大数据的课程,数学分析,线性代数,概率论,随机过程,cpp,python都学过,感觉自己虽然对法学还算喜欢但是很讨厌其学习方法,现在中心在大数据方面,清华的计算法学项目不接受法学本科生,其他法学研究生项目不想读,大数据的研究生招生也少,很迷茫😭
哇文科生也要来抢饭碗了吗😂
你也是在香港学新闻的吗 好巧
我第一步就看不懂了,看来我连文科生也当不了
单位矩阵不是写成E吗?
文科生学习大数据处理的最好办法是:1.写一本程序员为主角的通俗爱情小说。2.参加豆瓣的征文,寻求影视改编。3.发现比学习大数据赚的要多,所以就放弃学大数据了……
线性代数是定位用到,和人脸识别的定位估计有联系。
「内容不可见」
文科生学py,不如去做网上科普劝别人学编程。毕竟现在全民计算机。写点文章指导别人转行会很有流量
看了你文章,才想起原来大学学了线性代数这门课
看了你文章,才想起原来大学学了线性代数这门课
看了你文章,才想起原来大学学了线性代数这门课
看了你文章,才想起原来大学学了线性代数这门课
看了你文章,才想起原来大学学了线性代数这门课
看了你文章,才想起原来大学学了线性代数这门课
本科传播学相关学科出身,现在研究生申请到了Data Science的项目,打算现在和暑假恶补编程数学和统计,感谢LZ指路~
看到标题:嘻嘻我来了。看到数学:对不起打扰了。
单位矩不是E么
学Python群里了解519489681扣扣群进群暗号滴滴+手机号
概率论都不学……能懂机器学习吗
我也19年前学过线性代数
高中理科大学文科的呢,还学了一年经济才转的那种😂