您的位置:首页 > 其它

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

2016-04-23 11:19 246 查看
机器学习语言

一、机器学习常用的编程语言有哪些?
机器学习(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的浅墨的文章。他的博客地址http://blog.csdn.net/poem_qianmo?viewmode=contents,这也是我oepncv入门的资料,共十八课,踏踏实实的跟着坐下来,应该是能入门了,如果不够,可以买他写的书,及我大爱的一本《深入理解opencv》。

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

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

4. 机器学习的分支,深度学习,也就是深度神经网络是近来比较火热的领域,很多机器学习实现的功能很难用到商用中,比如人脸识别,传统的机器学习方法受光照,角度干扰太大,很难达到较好的识别率,深度学习在图像中的应用已经有很多了。这里介绍几个框架,也是目前我在用的,伯克利的caffe,以及谷歌的tensorflow,当然这应该是你完成上述前三部门的内容后,才该做的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: