机器学习和计算机视觉方向的cs硕士研究生,应该往python还是matlab发展?

题主背景:电子本科研究生转cs(机器学习和计算机视觉方向),matlab用的比较熟。想往python发展,原因:1. python在网络编程和文本处理方面感觉做的比matlab好一点。2. python写出来的脚本很容易编译成exe文件,matlab脚本要在没有安装matlab的环境上运行比较困难。3. 好像很多公司现在招聘都青睐会python的。感觉matlab的优点:1. 调试很方便,鼠标指着变量就能显示当前值,而且图像处理过程中只要imshow一下就可以看到当前图像被处理成什么样子了。2.感觉知道的python ide没有matlab那么强大(可能是我孤陋寡闻,python大神勿喷),调试起来没有matlab方便。回复内容:
我刚刚用python的时候也有这些顾虑,感觉matlab的一大优点在于它的ide做得好,这种可以直接查看变量数据的编辑器简直太有用了,而且debug起来也特别容易。其实python也有类似的编辑器,叫spyder,界面类似matlab,功能也相近。建议题主直接去python官网下载anaconda发行版,这类似于一个kit,里面有spyder编辑器,python解释器以及一些常用的或很主流的包,里面也有专门用于下载安装其他包的工具,非常方便。
关于python的ide,可以参考这个:在机器学习科学计算领域,有哪些工具能让python和matlab一样好用? – 李海涛的回答
如果你选择以后就业而不是做科研,你最终都会回到c++上来!
这个问题当然取决于你所在方向上别人用什么做了,视觉方面大家给的源代码茫茫多都是matlab的(当然更多的是连代码都不放的)。当然反过来如果做了deep learning这样都是python接口的东西,你硬上matlab也是给自己找麻烦。总之应该选一个实现起来最快的语言,毕竟是为了验证想法和拿到实验数据。至于你考虑到的找工作方面,我觉得无非是学一个新语言而已,自己随便学学然后写几个小东西就足够了。而且如果你学python是为了找工作,有时间钻研python不如把时间拿去刷题。
我曾经是matlab的忠实粉丝,不过近年来用python多了一些。python主要有这么几个优点:1) 比matlab体积小得多;2) 各种非数值计算的库丰富(尤其是文本处理、网络方面的);3) 程序比matlab还简洁一些。不过,在matlab的ide里画图的方便性,还是python的matplotlib所不能比拟的,所以需要画图时我就会打开matlab。最近我发现python也有了个ide叫spyder,可以直接画图。虽然还没有用过,但看起来是要完爆matlab的节奏……
推荐 julia优点:数学表达能力强,原生支持各种矩阵、向量运算。个人感觉各种功能的正交组合甚至超过了 matlab 。例如: matlab 矩阵运算中,可以和 . 搭配的运算符很有限,.* (element-wise multiplication), .^(element-wise power), ./ (right array pision), .\ (left array pision), .’ (array transpose)。julia 语言中,运算符与 . 的搭配就很正交,几乎所有运算符都可以加上.运算符,变成 elementwise (元素对元素的)运算符。具有伟大的性能提升的潜力。性能极限甚至超过 c 语言。原因很简单,对于变量的数据类型,可以不指定来自动推断,也可以手动指定。手动指定变量类型之后的速度,基本就等价于 c。当使用自动类型推断的时候,可以像 python 或者 matlab 一样快速开发原型。当手动指定类型之后,可以用近乎 c 一般的速度去跑生产代码。语言年轻,且去中心化。2015年4月9日的版本是0.3.7,还没有到1.0,各种语言特性都在剧烈变动中。比 c 语言还快的原因有两方面:a. 可以利用 c 语言发明以来最新的业界经验和科研成果。b. 整个 julia 语言的基础是基于 github 开源的,保证了语言的开放性。又由于有足够多学术界的关注,最新的学界成果得以引入 julia 语言中。直接调用 c, python,java, matlab 和 r。c 调用这个算是现代语言的基本功能,但 julia 做得很舒服。无需配置,直接用 ccall。格式如下,ccall((:函数名,“指定c库文件”),返回值类型,(输入参数数据类型),输入参数)。pycall (https://github.com/stevengj/pycall.jl)得说是很流氓的。使用起来也是超级方便:using pycall; @pyimport numpy as np; s = sin(3 * t + 4 * np.cos(2 * t)); 。例如:绘图包 pyplot (https://github.com/stevengj/pyplot.jl)就是利用 python。一连几年 julia 都一直在 pycon 上做宣传。同样邪恶的还有 javacall(https://github.com/aviks/javacall.jl) 和 rcall (https://github.com/juliastats/rcall.jl)。其实 julialang 也有个包叫 matlab.jl (https://github.com/julialang/matlab.jl),支持直接调用 matlab,最大限度的保护你的智力投资。原生的单元测试支持。默认程序包开发的格式中,就内置了测试架构。语言内置单元测试宏 @test。我个人觉得其实这里差一点,还没有对于行为驱动开发 (bdd)的原生支持。这一点可能在我看懂 factcheck.jl (https://github.com/julialang/factcheck.jl)之后再进一步修改。方便自由的程序包开发。只要在 github 上开一个 .jl 结尾的代码库,然后按照指定格式提交 metadata 给 julialang。就可以把自己开发的包提交到 julia 官方库。
很少有哪个语言的委员会这么亲民的,texlive还得是每年升级呢。程序包是否受官方包管理器支持对于成果推广的价值是无法估量的。我学习 julia 不到一周的时候就提交一个库(https://github.com/quxiaofeng/projectivedictionarypairlearning.jl),且被纳入官方包库,这里顺便安利一下。原生可以调用 python,且可以使用与 matlab 极为相似的语法。有mat.jl包可以读写mat文件,与实验室其他matlab用户共享数据,良好兼容。对应ipython, 有ijulia。
这个问题没必要争了,matlab 2014b 开始支持调用python和被python调用了。
1.请使用正版matlab 2.python请使用pycharm,有社区版,也可以付费购买专业版 3.python有matplotlib,画图也很简单4.matlab生成exe比python简单多了5.请养成下断点调试的习惯
1. python有一个包叫ipython,可能比matlab方便。而且画图的话用matplotlib几乎就是matlab的移植。2. 但是科学计算上性能通常还是matlab略胜一筹,而且工具包支持比较强大(不过python也在迎头赶上了)。3. 如果要做文本处理和网络的话还是python吧。4. 可以两个同时学啊。
问题是matlab好贵的,只有选择python了,可以省去装盗版破解的时间。

Posted in 未分类

发表评论