00:01
六点四通用的管道接口typeline类不但可以用于预处理和分类,实际上还可以将任意数量的估计器连接在一起,例如,你可以构建一个包含特征提取、特征选择、播放和分类的管道,总共有四个步骤。同样。最后一步,可以用回归或者聚类代替分类。对于管道中,估计器的唯一要求就是除了最后一步之外的所有步骤都需要具有transform方法,这样他们可以生成新的数据表示以供下一个步骤使用。在调用点的过程中。管道内部一次对每个步骤调用fit和TRANSFORM2个方法,当然也可以直接调用fit_transform一个方法。其输入是前一个步骤中transform方法的输出。对于管道中的最后一步。
01:07
只会调用bit。忽略某些细枝末节及实现方法。大家可以看一下。请记住。line.steps。是由元组组成的列表,所以。STEPS01。是第一个估计器,STEPS11是第二个估计器,以此类推。当然,使用pipeline进行预测时。我们同样利用除最后一步之外的所有步骤对数据进行变换,也就是transform,然后对最后一步调用predict。
02:04
整个过程可以看到书上243页图六杠三。管道实际上比这幅图更加的通用。管道的最后一步。不具不需要具有predict的函数。比如说,我们可以创建一个只包含一个缩放器和一个PCA的管道。由于最后一步PCA具有transform方法,所以我们可以对管道调用transform已得到将P ca.form应用于前一个步骤处理过的数据后得到的一个输出。管道的最后一步只需要具有fit这么一个方法。6.4.1用make pipeline方便的创建管道,利用上述语法创建管道有时有点烦。
03:02
我们通常不需要为每一个步骤提供用户指定的名称。有一个很方便的函数make pipeline可以为我们创建管道,并根据每个步骤所属的类为其自动命名。来的语法。大家可以看一下。滚到对象。PI弄和PI shot。作用完全相同,但拍short的步骤是自动命名的,我们可以通过查看steps属性。来查看步骤的名称。这两个步骤被命名为minimax KO和SVC都是小写的。一般来说,步骤名称只是类名称的小写版本,如果多个步骤属于同一个类,则会附加上一个数字。
04:20
如你所见,第一个standard步骤被命名为。杠一。而第二个被命名为。杠二。在这种情况下,使用具有明确名称的pipeline构建可能更好。以便为每个步骤提供更具语义的名称。6.4.2访问步骤属性通常来说,你希望检查管道中某一步骤的属性,比如线性模型的系数或PC提取的成分。要想访问管道中的步骤,最简单的方法是通过name。
05:07
这么一个属性,它是一个字典,将步骤名称映射为估计器。6.4.3访问网格搜索管道中的属性本章前面说过,使用管道的主要原因之一就是可以进行网格搜索。一个常见的任务是在网格搜索内访问管道的某些步骤。我们对cancerl数据集上的logisticsing分类器进行网格搜索,在将数据传入logisticressing分类器之前。先用pipeline和standard scale对数据进行缩放。首先我们用每个pipeline。这么一个函数来创建一个管道,接下来我们创建一个参数网格。
06:07
我们在第二章中说过,Not regression,需要调节的正子化参数是参数B,我们对这个参数使用对数网格。在0.01。到100。直接进行搜索。由于我们使用了make PI函数。所以管道中logistic regression步骤的名称是小写的类名称。因此,为了调节参数C,我们必须指定logistics小写类名称双向线C这么一个参数网格。像往常一样,我们将勘数据集划分为训练集和测试集。
07:00
并对网格搜索。进行拟合。那么我们如何访问gra search c找到的最佳notgs模型的系数呢?我们从第五章中知道gra测试CD找到的最佳模型,在所有训练数据上,训练得到的模型保存在。点best as tomato下划线中。在我们的例子中,Best as是一个管道。它包含两个步骤。老婆,Regression。正如前面所说,我们可以使用管道的name的step属性来访问logistics这么一个步骤。
08:09
现在我们得到了训练过的logistic regression实例。下面我们可以访问与每个输入特征相关的系数,也就是权重。这个系数列表可能有一点长。但它通常有助于理解你的模型。6.5网格搜索预处理步骤与模型参数。我们可以利用管道将机器学习工作流程中的所有处理步骤封装成一个在磁冷呼吸器。这么做的另一个好处在于,现在我们可以使用监督任务,比如回归或分类的输出来调节预处理参数。在前几章里,我们在应用比回归之前使用了波数据集的多项式特征。下面我们用一个管道来重复这个建模过程。管道包含三个步骤,缩放数据、计算多项式特征与领回归。
09:21
我们怎么知道选择几次多项式,或者是否选择多项式或交互项呢?理想情况下,我们希望根据分类结果来选择degree参数。我们可以利用管道搜索degree参数以及reach的阿尔法参数。为了做到这一点,我们要定义一个包含这两个参数的paragraph变量。并用步骤的名称作为前缀。步骤名称双下划线参数名。现在我们可以再次运行网格搜索。
10:06
像第五章中所做的那样。我们可以用热图将交叉验证的结果。进行可视化。从交叉验证的结果中可以看出,使用二次多项式很有用,但三次多项式的效果比一次或二次都要差很多。从找到的最佳参数中。也可以看到这一点。这个最佳参数对应的测试题分数。0.77。为了对比,我们运行一个没有多项式特征的网格搜索。
11:12
正与我们观察。这一幅图。对应的网格搜索所预料的那样,不使用多项式的特征,得到了明显更差的结果。从0.77变成了0.63。同时,搜索预处理参数与模型参数是一个非常强大的策略,但是要记住gra search cp会尝试指定参数的所有可能组合,因此向网格中添加更多参数。需要构建的模型数量将成指数增长。
12:03
6.6网格搜索选择使用哪一个模型?你甚至可以进一步将gra CV和line结合起来,还可以搜索管道中正在执行的实际步骤,比如用standardal k还是用mini k,这样会导致更大的搜索空间。应该予以仔细的考虑一下。尝试所有可能的解决方案通常并不是一种可行的机器学习策略,但下面是一个例子。一就是在勘测数据集上比较random forest class file和SVC。我们知道SVC可能需要对数据进行缩放,所以我们还需要搜索是使用standard还是不使用预处理。我们知道random forest classify不需要预处理。我们先定义一个管道,这里我们显示的对步骤进行命名,我们需要两个步骤,一个用于预处理,然后一个是分类器。
13:17
我们可以用SVC和standard来将其进行实例化。现在我们可以定义需要搜索的。我们希望class file是random class file或者SBC。由于这两种分类器需要调节不同的参数,并且需要不同的预处理,所以我们可以使用5.2.3节在非网格空间中搜索中所想的。所讲的参数网格搜索网格列表为了将一个呼吸器分配给一个步骤,我们使用步骤名称作为参数名称。
14:03
如果我们想跳过管道中的某个步骤,例如random forest,它不需要预处理,则可以将该步骤设置为那。现在,我们可以像前面一样,将网格搜索实例化,并在勘测数据集上进行运行。网格搜索的结果是SVC与K预处理。在C等于十,伽马等于0.01时,给出最佳结果6.7小结与展望。文章介绍了piline类,这是一种通用工具,可以将机器学习工作流程中的多个处理步骤连接在一起。现实世界中的机器学习应用。
15:06
很少仅涉及模型的单独应用,而是需要一系列处理步骤。使用管道可以将多个步骤封装为单个对象,这个对象具有我们熟悉的S接口、fit predict和transform。特别是使用交叉验证进行模型评估与使用网格搜索进行参数选择时,使用typeline类来包括所有处理步骤对正确的评估至关重要。利用piline类还可以让代码更加简洁。并减少不用排类构建处理链时可能会犯的错误,比如忘记将所有变换器应用于测试机或者应用顺序错误的可能性。选择特征提取与处理和模型的正确组合。这在某种程度上是一门艺术,通常需要一些试错,但是有了管道这种尝试,多个不同的处理步骤是非常简单的。在进行试验时要小心不要将处理过程复杂化。
16:13
并且一定要评估一下模型中每个组件是否必要。学完本章,我们已经学完了赛之提供了所有通用工具与算法。现在你已掌握了所有必要的技术,并了解了在实践中应用机器学习的必要机制。下一章我们将深入一种在实践中常见的数据类型,文本数据,它需要具备一些专门的知识才能正确的处理。
我来说两句