欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-18 16:47:20
...
题主背景:电子本科研究生转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

优点:

  1. 数学表达能力强,原生支持各种矩阵、向量运算。个人感觉各种功能的正交组合甚至超过了 MATLAB 。例如: MATLAB 矩阵运算中,可以和 . 搭配的运算符很有限,.* (Element-wise multiplication), .^(Element-wise power), ./ (Right array division), .\ (Left array division), .' (Array transpose)。julia 语言中,运算符与 . 的搭配就很正交,几乎所有运算符都可以加上.运算符,变成 elementwise (元素对元素的)运算符。
  2. 具有伟大的性能提升的潜力。性能极限甚至超过 C 语言。原因很简单,对于变量的数据类型,可以不指定来自动推断,也可以手动指定。手动指定变量类型之后的速度,基本就等价于 C。当使用自动类型推断的时候,可以像 python 或者 MATLAB 一样快速开发原型。当手动指定类型之后,可以用近乎 C 一般的速度去跑生产代码。
  3. 语言年轻,且去中心化。2015年4月9日的版本是0.3.7,还没有到1.0,各种语言特性都在剧烈变动中。比 C 语言还快的原因有两方面:A. 可以利用 C 语言发明以来最新的业界经验和科研成果。B. 整个 julia 语言的基础是基于 github 开源的,保证了语言的开放性。又由于有足够多学术界的关注,最新的学界成果得以引入 julia 语言中。
  4. 直接调用 C, Python,Java, MATLAB 和 R。C 调用这个算是现代语言的基本功能,但 julia 做得很舒服。无需配置,直接用 ccall。格式如下,ccall((:函数名,“指定C库文件”),返回值类型,(输入参数数据类型),输入参数)。PyCall github.com/stevengj/PyC)得说是很流氓的。使用起来也是超级方便:using PyCall; @pyimport numpy as np; s = sin(3 * t + 4 * np.cos(2 * t)); 。例如:绘图包 PyPlot (github.com/stevengj/PyP)就是利用 Python。一连几年 julia 都一直在 PyCon 上做宣传。同样邪恶的还有 JavaCallgithub.com/aviks/JavaCa) 和 RCall (github.com/JuliaStats/R)。其实 JuliaLang 也有个包叫 MATLAB.jl (github.com/JuliaLang/MA),支持直接调用 MATLAB,最大限度的保护你的智力投资。
  5. 原生的单元测试支持。默认程序包开发的格式中,就内置了测试架构。语言内置单元测试宏 @test。我个人觉得其实这里差一点,还没有对于行为驱动开发 (BDD)的原生支持。这一点可能在我看懂 FactCheck.jl (github.com/julialang/fa)之后再进一步修改。
  6. 方便*的程序包开发。只要在 github 上开一个 .jl 结尾的代码库,然后按照指定格式提交 METADATA 给 JuliaLang。就可以把自己开发的包提交到 Julia 官方库。 很少有哪个语言的委员会这么亲民的,TeXLive还得是每年升级呢。程序包是否受官方包管理器支持对于成果推广的价值是无法估量的。我学习 julia 不到一周的时候就提交一个库(github.com/quxiaofeng/P),且被纳入官方包库,这里顺便安利一下。
原生可以调用 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了,可以省去装盗版破解的时间。