今天不单独讲解某个机器学习算法,而是讲解机器学习中常用的工具或者说是方法。一是绘制学习曲线,看模型的好坏程度(过拟合还是欠拟合);而是减少代码量,利用pipeline构造算法流水线。
学习曲线
训练模型通常有三种情况:欠拟合、拟合较好和过拟合。欠拟合一般比较好判别,模型准确度不高都可以说是模型欠拟合。但判断模型是否过拟合,单独看准确度是不可信的,模型越复杂,其准确度越高,也很容易过拟合,这时就需要绘制学习曲线观察模型的拟合情况。
绘制流程
把数据集划分为多等分(5份或其它)
把数据集划分为训练集和测试集
以训练集准确性和验证集准确性做为纵坐标,训练集个数作为横坐标。
每次增加1等分
绘制函数
在sklearn中,可以通过sklearn.modelselection中的learningcurve来画出学习曲线。这里使用之前KNN算法,通过图可以看出,KNN算法是处于欠拟合状态。
Pipeline
在之前的线性回归案例中,我们可以加入多项式项来增加模型的精度,但每次都需要先将数据通过PolynomialFeatures转换为新数据,然后再拟合模型,模型预测和评估也需要将测试集进行多项式转换。那能不能将数据处理和模型拟合结合在一起,减少代码量了?答案是可以,通过Pipeline(管道)技术就行。
Pipeline技术
Pipeline 的中间过程由sklearn相适配的转换器(transformer)构成,最后一步是一个estimator(模型)。中间的节点都可以执行fit和transform方法,这样预处理都可以封装进去;最后节点只需要实现fit方法,通常就是我们的模型。流程如下图所示。
Pipeline代码
以线性回归为例:
领取专属 10元无门槛券
私享最新 技术干货