飞鸟各投林

导航

机器学习------平台和语言选择

机器学习语言

一、机器学习常用的编程语言有哪些?
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、 凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以 获取新的知识或技能, 重新组织已有的知识结构使之不断改善自身的性能。 它是人工智能的 核心, 是使计算机具有智能的根本途径, 其应用遍及人工智能的各个领域, 它主要使用归纳、 综合而不是演绎。 目前机器学习语言主要有:R 语言,Python,MATLAB、JAVA、WEKA、GO、JavaScript 等。

二、各个语言在机器学习方面的优缺点:
1、R 语言
R 语言是一个开发环境,采用一种近似于 Lisp 的脚本语言。在这个库中,所有与统计相 关的功能都通过 R 语言提供, 包括一些复杂的图标。 CRAN(可以认为是机器学习的第三方包) 中的机器学习目录下的代码, 是由统计技术方法和其他相关领域中的领军人物编写的。 如果 做实验,或是快速拓展知识,R 语言都是必须学习的。R 的优势在于有包罗万象的统计函数 可以调用,特别是在时间序列分析方面(主要用在金融分析与趋势预测)无论是经典还是前 沿的方法都有相应的包直接使用;相比 python 在这方面贫乏不少。缺点是在处理大数据方 面,性能和速度低下。

2、Python
Python 是一门多功能的语言。数据统计是更多是通过第三方包来实现的。在数据分析、 海量的数据统计、以及提供互动化的数据分析,动态的缩放图表等综合功能最强大的。但是 这些功能分散在第三方库里面,没有得到有机的整合,相应的学习成本会较高。python 与 R 相比速度要快。python 可以直接处理上 G 的数据;R 不行,R 分析数据时需要先通过数据库 把大数据转化为小数据(通过 groupby)才能交给 R 做分析,因此 R 不可能直接分析行为详 单,只能分析统计结果。Python 的优势在于其胶水语言的特性,一些底层用 C 写的算法封 装在 python 包里后性能非常高效(Python 的数据挖掘包 Orange canve 中的决策树分析 50 万 用户 10 秒出结果,用 R 几个小时也出不来,8G 内存全部占满)。

3、MATLAB
作为机器学习、模式识别等方面经常使用的工具,MATLAB 在实现机器学习算法时要比 Python 或者 NumPy 更加自然。很多高校也在计算机科学相关的课程中教授 MATLAB 语言, 易学易用。然而,MATLAB 也存在很多的缺点:价格昂贵、非开源、性能表现平平、语法不 符合程序员的习惯等。 例如, MATLAB 中矩阵乘积运算操作为 X.dot(Y) , 而 Python 为 X@W , 更加简洁、明了。MATLAB 的性能比 Python、Go、Java 等语言要差很多。

4、JAVA
在大数据框架中,Mahout(在印地语中意思是“大象骑士”)包 含几种常见的机器学 习方法。这款软件包是围绕算法而非方法,所以需要有一定的算法基础,其各部分功能是整 合在一起的,比如基于用户的推荐系统。 另一个基于 Hadoop 的机器学习项目是 Cloudera 公司推行的 Oryx, 其特性在于通过交付 实时流结果而非处理批量作业来对 Mahout 处理结果进行进一步分析。 该该项目现在还处于 初始阶段,这只是个项目而非实际产品,但它在不断改善,所以很值得关注。

除了上述主要针对 Hadoop 的 Mahout, 其他一些面向 Java 的机器学习库也在广泛使用。 Weka 由新西兰怀卡托大学开发的工作台式的应用,它在常见的算法集合中增加了可视化和 数据挖掘功能。对于那些想要为他们的工作打造一个前端或者计划将 Java 作为初始开发的 用户来说,Weka 可能是最好的选择。Java-ML 也不错,但它更适合那些已经习惯将 Java 和 机器学习配合使用的开发者。

5、WEKA
WEKA 是一个数据挖掘工作平台,为用户提供数一系列据挖掘全过程的 API、命令行和 图形化用户接口。可以准备数据、可视化、建立分类、进行回归分析、建立聚类模型,同时 可以通过第三方插件执行其他算法。

6、Go
谷 歌的系统语言,由于其并行设计,使其似乎是一个编写机器学习库理想的环境。虽然 目前与之相关的库项目规模尚小,但也有一些值得关注, GoLearn,它的开发者将其描述为 一个“内置电池”的机器学习库。它提供过滤、分类以及回归分析等多种工具。另一套较小 且更为基础的库是 mlgo,虽然目前它能提供的算法数量还非常少,但计划在未来推出更多。

7、JavaScript
关于 JavaScript, 原意是这样的, 任何能够由 JavaScript 编写的内容最终都会由 JavaScript 编写,这对机器学习库同样适用。目前由 JavaScript 编写的方案在这一领域数量仍然相对较 少,大多数选项仅仅是单一算法而非完整的库,但已经有部分有用工具渐渐脱颖而出。 ConvNetJS 允许大家直接在浏览器当中进行深度学习神经网络培训,而名为 brain 则将神经 网络作为可安装的 NPM 模块提供给大家。此外,Encog 库同样值得关注,而且它适用于多 种平台:Java、C#、C/C++以及 JavaScript。
 
三:相关回答:
1. 机器学习,无非就是提取特征,然后分类,而这其中的大部分在opencv里已经集成了,所以你有必要先学习一下opencv这一开源库,强大而简洁。关于入门的资料,你可以看一下csdn的浅墨的文章。他的博客地址,这也是我oepncv入门的资料,共十八课,踏踏实实的跟着坐下来,应该是能入门了,如果不够,可以买他写的书,及我大爱的一本《深入理解opencv》

2. 关于机器学习,有那么一本书《机器学习实战》,是用python写的,个人觉得很好,不仅简单的写了下常用机器学习算法的原理,而且有代码。python要是不熟悉的话,可以现学现卖,如果你之前学过任何一门语言,那么python学习就会比较简单,现在在搞深度学习框架,很多框架的都提供了python的接口,python是一门愈来愈热的语言,有必要学习。

3. 关于视频分析,我从我从事的智能监控方面来讲一下,其实就是图像的处理,首先要提取视频中的运动物体,常用算法有:帧差法,GMM,vibe等;提取前景(运动物体)后对其进行跟踪,跟踪的主要算法有:camshift,粒子滤波,TLD,压缩感知等;以及之后对监控视频的去模糊,去雾,夜视增强,行人检测,车牌检测,上下身颜色识别,人车分类、视频浓缩,不过这些,都可基于opencv来实现。

4. 机器学习的分支,深度学习,也就是深度神经网络是近来比较火热的领域,很多机器学习实现的功能很难用到商用中,比如人脸识别,传统的机器学习方法受光照,角度干扰太大,很难达到较好的识别率,深度学习在图像中的应用已经有很多了。这里介绍几个框架,也是目前我在用的,伯克利的caffe,以及谷歌的tensorflow,当然这应该是你完成上述前三部门的内容后,才该做的。

posted on 2016-04-23 11:19  飞鸟各投林  阅读(4910)  评论(0编辑  收藏  举报