机器学习之软件部署
1. R语言
1.1 R语言简介
R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来Auckland大学的Robert Gentleman和Ross Ihaka及其他志愿人员开发了一个R系统。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。更重要的是,R语言是免费使用的。
1.2 R语言功能
R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。
与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。
该语言的语法表面上类似 C,但在语义上是函数设计语言的(functional programming language)的变种并且和Lisp以及APL有很强的兼容性。特别的是,它允许在“语言上计算”(computing on thelanguage)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。
R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。
1.3 R语言特点
1.有效的数据处理和保存机制。
2.拥有一整套数组和矩阵的操作运算符。
3.一系列连贯而又完整的数据分析中间工具。
4.图形统计可以对数据直接进行分析和显示,可用于多种图形设备。
5.一种相当完善、简洁和高效的程序设计语言。它包括条件语句、循环语句、用户自定义的递归函数以及输入输 出接口。
6.R语言是彻底面向对象的统计编程语言。
7.R语言和其它编程语言、数据库之间有很好的接口。
8.R语言是自由软件,可以放心大胆地使用,但其功能却丌比仸何其它同类软件差。
9.R语言具有丰富的网上资源。
1.4 R语言部署
1.4.1 R语言官网下载
http://www.r-project.org
1.4.2 安装完成
1.4.3 运行简单脚本
2. Python语言
2.1 概述
Python, 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C++重写。
2.2 python特点
2.2.1 优点
(1)简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
(2)易学:Python极其容易上手,因为Python有极其简单的说明文档[4] 。
速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。
(3)免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的 源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
(4)高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
(5)可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这 些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、 OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、 Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。
(6)解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的 语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。
运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要 编译成二进制代码。你可以直接从源代码运行 程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语 言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
(7)面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅 是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
(8)可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在 Python程序中使用它们。
(9)可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
(10)丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线 程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、 GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外, 还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二 进制代码。
2.2.2 缺点
(1)单行语句和命令行输出问题:很多时候不能将程序连写成一行,如importsys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。
(2)独特的语法
这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。
(3)运行速度慢:这里是指与C和c++相比。
2.3 Python应用方向
(1)系统编程:提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。
(2)图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。
(3)数学处理:NumPy扩展提供大量与许多标准数学库的接口。
(4)文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML
(5)分析模块:许多程序员利用python进行XML程序的开发。
(6)数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。
(7)网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent.Google都在广泛地使用它。
(8)Web编程:应用的开发语言,支持最新的XML技术。
(9)多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。
pymo引擎:PYMO全称为python memories off,是一款运行于Symbian S60V3,Symbian3,S60V5, Symbian3, Android系统上的AVG游戏引擎。因其基于python2.0平台开发,并且适用于创建秋之回忆(memories off)风格的AVG游戏,故命名为PYMO。
(10)黑客编程:python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。
(11)用Python写简单爬虫
首先,要通过urllib2这个Module获得对应的HTML源码。
import urllib2
url='http://www。baidu。com/s?wd=cloga'
content=urllib2.urlopen(url).read()
通过上面这三句就可以将URL的源码存在content变量中,其类型为字符型。
接下来是要从这堆HTML源码中提取我们需要的内容。用Chrome查看一下对应的内容的代码(也可以用Firefox的Firebug)。
可以看到url的信息存储在span标签中,要获取其中的信息可以用正则式。
2.4 Python安装
2.4.1 Python官网
https://www.python.org
2.4.2 安装成功
2.3.2 配置环境变量
2.3.3编程测试
(1)在命令行中测试
(2)在python IDLE中测试
3. Python+Eclipse配置Python
3.1 PyDev简介
2003年7月16日,以 FabioZadrozny 为首的三人开发小组在全球最大的开放源代码软件开发平台和仓SourceForge 上注册了一款新的项目,该项目实现了一个功能强大的 Eclipse插件,用户可以完全利用 Eclipse 来进行 Python 应用程序的开发和调试。这个能够将 Eclipse当作 Python IDE 的项目就是 PyDev。
PyDev 插件的出现方便了众多的 Python 开发人员,它提供了一些很好的功能,如:语法错误提示、源代码编辑助手、QuickOutline、Globals Browser、HierarchyView、运行和调试等等。基于 Eclipse 平台,拥有诸多强大的功能,同时也非常易于使用,PyDev 的这些特性使得它越来越受到人们的关注。
3.2 配置过程
3.2.1在Help -> Install New software中选择相应插件的源地址,安装PyDev插件。
3.2.2 配置PyDev的Python解释器
安装好 PyDev 之后,需要配置 Python/Jython 解释器,配置过程很简单。在 Eclipse 菜单栏中,选择 Window > Preferences > Pydev > Interpreter > PythonInterpreter,在这里配置 Python 解释器。
3.3.3新建PyDev Project
3.3.4 编程测试