长期用 C++ 和 MATLAB 做机器学习的你，有没有遇到一个让你相见恨晚的语言或包？
开发期：诚心推荐 python。理由如下： (1) python 适合在开发其做实验，代码比较简洁，开发速度快 (2) 在资料处理上，有完整的支持套件  (3) 视觉化呈现工具完整 (4) 传统机器学习算法，有完善的支持 (scikit learn) (5) 最新的深度学习算法，有完善的支持，且总是走在最新的发展潮流上。(theano, tensorflow) 假设实验结果如果能接受，有效能上的考量时，可以 migrate 到 C++ 进行加速。Matlab 则是比较合适做科学计算与视觉化。 以下是使用 python 开发 ML 时，可以参考的资料 (1) 如果是使用传统的machine learning，建议使用 scikit learn (sklearn package) 这边有tutorial http://gael-varoquaux.info/scikit-learn-tutorial/ 可以无脑使用 ML 由上图所示，第二行 new了一个 svc classifier, 第三行  svc.fit 就train 好了。 更多关于 sklearn 的资讯，可以参考 http://scikit-learn.org/stable/ (2) 如果是要使用 deep learning，建议使用 tensorflow (a) 安装文档 https://www.tensorflow.org/install/ (b) 基础教程 https://www.tensorflow.org/get_started/get_started (c) 莫凡的视频教程： https://morvanzhou.github.io/tutorials/machine-learning/ （包含了 tensorflow, keras , scikit learn) (3) 如果觉得tensorflow 太麻烦，可以使用keras。 keras 是 tensor flow & theano 的一个抽象层，会让使用起来更简便（莫凡的教学视频里也有keras） (4) 假设，machine learning 的model train 好后，要让别人呼叫使用时，可以参考这篇文章 https://www.zhihu.com/question/37426733/answer/155517062 里面的大意： 在machine learning 里面，会分成两个步骤。 (1) offline training (2) online inference/prediction。 在 training step 的时候，都会在offline 操作，里面包含了 (a) 调参 (b) validation (cross validation) (c) feature engineer (d) model selection。 model training 完之后，会把model pickle 起来。 在 step2: online inference 的时候，通常会 透过 http request (GET, POST) 来传递资讯。 假设 online web service 的 template 写好后，就只要更新那个 ml 的 model 的 pickle 档就完成更新了。