1. 首先,什么是机器学习?
简单来说,机器学习就是把无用的数据转化为有用的信息。机器学习横跨计算机科学, 工程技术和统计学等多个学科,
需要多学科的专业知识。移动计算和传感器产生的海量数据意味着未来我们将面临着越来越多的数据,
如何从海量数据中抽取到有价值的信息也是属于机器学习的范畴。
2. 机器学习的主要任务
机器学习的主要任务之一是分类,另一项任务是回归。
何为分类呢?我们通常将分类问题中的目标变量成为类别,并假定分类问题只存在有限个数的类别,它的主要任务就是将实例数据划分到合适的分类中。
何为回归呢?回归主要用于预测数值型数据。大多数人可能都见过回归的例子–数据拟合曲线:通过给定数据点的最优拟合曲线。分类和回归属于监督学习,之所以称之为监督学习,是因为这类算法必须知道预测什么,即目标变量的分类信息。
与监督学习相对应的是无监督学习,此类数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。
此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
3. 开发机器学习应用程序的步骤
(1). 收集数据。我们可以使用很多方法收集样本数据,如制作网络爬虫从网站上抽取数据、从RSS反馈或者API中得到信息、设备发送过来的实测数据,提取数据的方法非常多,为了节省时间与精力,可以使用公开可用的数据源。
(2). 准备输入数据。得到数据之后,还必须确保数据格式符合要求,通常采用的格式是Python语言的List。使用这种标准数据格式可以融合算法和数据源,方便匹配操作此外还需要为机器学习算法准备特定的数据格式,如某些算法要求特征值使用特定的格式,一些算法要求目标变量和特征值和特征值都是字符串类型,而另一些算法则可能要求是整数类型。
(3). 分析输入数据。此步骤主要是人工分析以前得到的数据。为了确保前两部有效,最简单的办法是用文本编辑器打开数据文件,查看得到的数据是否为空值。此外,还可以进一步浏览数据,分析是否可以识别出模式;数据中是否存在明显的异常值,如某些数据点与数据集中的其他值存在明显的差异。通过一维、二维或三维图形展示数据也是不错的方法。然而大多数时候我们得到数据的特征值都不会低于三个,无法一次图形化展示所有特征。
这一步的主要作用是确保数据集中没有垃圾数据。如果是在产品化系统中使用机器学习算法并且算法可以处理系统产生的数据格式,或者我们信任数据来源,可以直接跳过第3步。此步骤需要人工干预,如果在自动化系统中还需要人工干预,显然就降低了系统的价值。
(4). 训练算法。机器学习算法从这一步才真正开始学习。根据算法的不同,第4步和第5步是机器学习算法的核心。我们将前两部得到的格式化数据输入到算法,从中抽取知识或信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤使用。
如果使用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相关的内容都集中在第五步。
(5). 测试算法。这一步将实际使用第四步机器学习得到的知识信。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法的成功率。无论哪种情形,如果不满意算法的输出结果,则可以回到第4步,改正并加以测试。问题常常会跟数据的收集和准备有关,这时你就必须跳回第1步重新开始。
(6). 使用算法。将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。此时如果碰到新的数据问题,同样需要重复执行上述的步骤。
4.Python语言的优势
为什么要选择Python作为实现机器学习算法的编程语言:
(1)Python的语法清晰;
(2)易于操作纯文本文件;
(3)使用广泛,存在大量的开发文档。
可执行伪代码
Python具有清晰的语法结构,大家也把它称作可执行伪代码。默认安装的Python开发环境已经附带了很多高级数据类型。如列表、元组、字典、集合、队列等,无需进一步编程就可以使用这些数据类型的操作。使用这些数据类型使得实现抽象的数学概念非常简单。Python语言处理和操作文本文件非常简单,非常易于处理非数值型数据。Python语言提供了丰富的正则表达式函数以及很多访问Web界面的函数库,使得从HTML中提取数据变得非常简单直观。
Python比较流行
Python语言使用广泛,代码范例也很多,便于读者快速学习和掌握。此外,在开发实际应用程序时,也可以利用丰富的模块库缩短开发周期。
在科学和金融领域,Python语言得到了广泛应用。SciPy和NumPy等许多科学函数库都实现了向量和矩阵操作。这些函数库还增加了代码的可读性。科学函数库SciPy和NumPy使用底层(C和Fortran)编写,提高了相关应用程序的计算性能。
Python的科学工具可以与绘图工具Matplotlib协同工作。Matplotlib可以绘制2D、3D图形,也可以处理科学研究中经常使用到的图形。
Python的开发环境还提供了交互式shell环境,允许用户开发程序时查看和检测程序内容。Python的开发环境将来还会集成Pylab模块,它将NumPy,Scipy和Matplotlib合并为一个开发环境。
Python语言的特色和缺点
特色
Python语言则与Java和C完全不同,它清晰简练,而且易于理解,即使不是编程人员也能够理解程序的含义,而Java和C对于非编程人员则像天书一样难于理解。
Python语言是高级编程语言,我们可以花费更多的时间处理数据的内在含义,而无须花费太多精力解决计算机如何得到数据结果。Python语言使得我们很容易表达自己的目的
缺点
Python语言唯一的不足是性能问题。Python程序运行的效率不如Java或者C代码高,但是我们可以使用Python调用C编译的代码。这样就可以同时利用C和Python的优点,逐步的开发机器学习应用程序。
评论(0)