引言
数据分析由一连串的步骤组成,对于其中预测模型的创建和验证这一步,我们使用scikit-learn这个功能强大的库来完成。
scikit-learning库
python库scikit-learn整合了多种机器学习算法。2007年,Cournapeu开始开发这个库,但是直到2010年才发布它的第一个版本。
这个库是SciPy(scientific Python,python科学计算)工具集的一部分,该工具集包含多个为科学计算尤其是数据分析而开发的库。通常这些库被称作SciKits,库名scikit-learn的前半部分正是来源于此,而后半部分则是来自该库所面向的应用领域——机器学习(即Machine Learning)。
机器学习
机器学习研究的是识别作为数据分析对象的数据集中模式的方法,尤其是指研发算法,从数据中学习,并作出预测。所有的机器学习方法都是以建立特定的模型为基础。
要建立能够学习的机器,方法有很多种,但是各有各的特点,选用哪种方法取决于数据的特点和预测数据的类型。选用哪种方法这个问题被称作学习问题。
在学习阶段,遵从某种模式的数据可以是数组形式,其中每个元素只包含单个值或多个值。这些值通常被称为特征或属性。
有监督和无监督学习
根据数据和要创建的模型的类型,学习问题通常可以分为两大类。
有监督学习(supervised learning):训练集包含作为预测结果(目标值)的额外的属性信息。这些信息可以直到模型对新数据(测试集)作出跟已有数据类似的预测结果。
分类:训练集数据属于两种或以上类别;已标注的数据可直到系统学习能够识别每个类别的特征。预测系统未见过的新数据时,系统将根据新数据的特征,评估它的类别。
回归:被预测结果为连续型变量。最易于理解的应用场景是,在散点图中找出能够描述一系列数据点趋势的直线。
无监督学习(unsupervised learning):训练集数据由一系列输入值x组成,其目标值未知。
聚类:发现数据集中由相似的个体组成的群组。
降维:将高维数据集的维数减少到两维或三维,这样不仅便于数据可视化,而且大幅降低维度后,每一维所传达的信息还会更多。
除了上述两大类别的方法之外,还有一类方法,它们以验证、评估模型为目的。
训练集和测试集
机器学习方法使得我们可以用数据集创建模型,识别模型的特性之后,再用来处理新数据。在机器学习过程中,经常需要评估算法的好坏。评估算法需要把算法分为训练集和测试集两部分,从前者学习数据的特性,再用后者测试得到的特性。
使用scikit-learn实现有监督学习
我们将在下一节中实现一些使用scikit-learn的例子,首先我们需要明白有监督学习方法从数据集读取数据,学习两个或以上特征之间可能的模式;因为训练集结果(目标或标签)已知,所以学习是可行的。scikit-learn的所有模型都被称为有监督估计器,训练估计器要用到fit(x,y)函数:其中x指的是观察到的特征,y指的是目标。估计器经过训练后,就能预测任何标签未知的新数据x的y值;预测是由predict(x)函数完成的。
领取专属 10元无门槛券
私享最新 技术干货