从今天开始,准备更一个读书笔记系列的博客,一方面把看到书中有用的东西记录下来,方便自己日后查阅,另一方面也是为了自我监督,多读书,多学习.
机器学习如何解决分类问题?
机器学习如何解决分类问题,它的主要任务是将实例数据划分到合适的分类中。机器学习的另一项任务是回归,它主要用于预测数值型数据。大多数人可能都见过回归的例子——数据拟合曲线:通过给定数据点的最优拟合曲线。分类和回归属于监督学习,之所以称之为监督学习,是因为这类算法必须知道预测什么,即目标变量的分类信息。
用于执行分类、回归、聚类和密度估计的机器学习算法
监督学习的用途 | |
k-近邻算法 | 线性回归 |
朴素贝叶斯算法 | 局部加权线性回归 |
支持向量机 | Ridge 回归 |
决策树 | Lasso 最小回归系数估计 |
无监督学习的用途 | |
K-均值 | 最大期望算法 |
DBSCAN | Parzen窗设计 |
如何选择合适的算法?
首先考虑使用机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择非监督学习算法。确定选择监督学习算法之后,需要进一步确定目标变量类型,如果目标变量是离散型,如是/否、1/2/3、A/B/C或者红/黄/黑等,则可以选择分类算法;如果目标变量是连续型的数值,如0.0~100.00、-999~999或者+∞~-∞等,则需要选择回归算法。
如果不想预测目标变量的值,则可以选择非监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。
其次需要考虑的是数据问题。我们应该充分了解数据,对实际数据了解得越充分,越容易创建符合实际需求的应用程序。主要应该了解数据的以下特性:特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见得如同海底捞针),等等。充分了解上面提到的这些数据特性可以缩短选择机器学习算法的时间。
开发机器学习应用程序的步骤
此外还需要为机器学习算法准备特定的数据格式,如某些算法要求特征值使用特定的格式,一些算法要求目标变量和特征值是字符串类型,而另一些算法则可能要求是整数类型。后续章节我们还要讨论这个问题,但是与收集数据的格式相比,处理特殊算法要求的格式相对简单得多。
这一步的主要作用是确保数据集中没有垃圾数据。如果是在产品化系统中使用机器学习算法并且算法可以处理系统产生的数据格式,或者我们信任数据来源,可以直接跳过第3步。此步骤需要人工干预,如果在自动化系统中还需要人工干预,显然就降低了系统的价值。
如果使用非监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相关的内容都集中在第5步。
k-近邻算法概述:
k近邻算法采用测量不同特征值之间的距离方法进行分类。
优点:精度高、对异常值不敏感、无数据输入假定。
缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。
k近邻算法的一般流程
实施kNN分类算法:
对未知类别属性的数据集中的每个点依次执行以下操作:
kNN使用想法:
分别使用书中提供的kNN算法和scikit中的KneighborsClassifier算法进行运算,相同参数下,书中的kNN算法准度和时间都优于scikit的算法,本来以为K值的设置是没有什么意思的,仔细阅读代码发现,kNN的思想是找到一个点的周围邻居,然后画一个圈,这个圈中最多的分类就是预测的分类.故此算法有一定的去噪能力.至于kNN的实用性,感觉不是很大,因为计算太频繁了,而且没有累计,下次的新数据依然需要大量计算, 我个人很在意机器学习的累积效果,如果没有累积效果,那就是普通的算法.
推荐阅读: http://www.cnblogs.com/zichun-zeng/p/3995040.html
目标:在不删除python环境的情况下,安装一些常用的python库到windows中。
安装
VCForPython27 :windows下面vc库的安装软件。
Numpy : numpy windows下面的exe文件
scipy : scipy 的exe文件
matplotlib : pip 环境下的 whl 安装包,需要使用pip install 这个文件.whl 安装
下面工具还不熟悉,先不写描述了。
setuptools
python_dateutil
pyparsing