Pipeline机器学习模型串联

news2025/1/17 13:54:30

机器学习模型训练时使用 Pipeline 是一个加快效率的串联方法。Pipeline 处理机制就像是把所有模型塞到一个管子里,然后依次对数据进行处理,得到最终的分类结果。

# 模型串联
pip=Pipeline(
              [                                # 所有模型写进列表内
                (‘模型一名称’,模型一调用),    # 模型名称可自定义
                (‘模型二名称’,模型二调用),
                (‘模型三名称’, 模型三调用)
              ]
            )

# 模型调用
model=pip.fit(x,y)

Pipeline 函数可以把多个模型按顺序打包在一起,输入的数据集经过模型的处理后,输出的结果作为下一步的输入,最后一步的估计器对数据进行分类或者其他处理。除了最后一个模型外,其他模型都必须实现 "fit()" 和 "transform()" 方法, 最后一个模型需要实现 fit() 方法即可。当训练样本数据送进 pip 进行处理时, 逐个调用模型的 fit() 和 transform() 方法,用最后一个模型的 fit() 方法分类或者其他处理。

示例代码:

import pylab as pl
from sklearn import datasets
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC

digits=datasets.load_digits()

# 数据可视化
pl.gray() # 灰度化图片
pl.figure(figsize=(3, 3))
pl.matshow(digits.images[1])  # 显示图片
pl.show()

x_train, x_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=33)

pip = Pipeline([('sc', StandardScaler()), ('svc', LinearSVC())])

pip.fit(x_train, y_train)
y_predict = pip.predict

print(pip.score(x_test, y_test))
names = digits.target_names
print(classification_report(y_test, y_predict, target_names=names.astype(str)))

模型误差 = 偏差 + 方差 + 不可避免的误差(噪音)。

通常随着模型复杂度的增加,方差会逐渐增大,偏差会逐渐减小

偏差衡量了模型的预测值与实际值之间的偏离关系。例如某模型的准确度为96%,则说明是低偏差;如果准确度只有70%,则说明是高偏差。

方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)。从数学角度看,可理解为每个预测值与预测均值差的平方和的再求平均数。通常在模型训练中,初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。

如上左图,目标是中心的红点,所有的预测值都偏离了目标位置,这就是偏差;

如上右图,预测值围绕着红色中心周围,没有大的偏差,但是整体太分散了,不集中是方差;

  • 低偏差,低方差:理想模型,蓝色点落在靶心范围,数据离散程度小,基本在靶心范围内;
  • 低偏差,高方差:过拟合。泛化(或通用)能力差;
  • 高偏差,低方差:通常为训练的初始阶段;
  • 高偏差,高方差:训练最糟糕的情况,准确度差,数据的离散程度也差。

模型有偏差,可能是问题本身的假设是不正确的,或者欠拟合。如:针对非线性的问题使用线性回归;或者采用的特征和问题完全没有关系,如用学生姓名预测考试成绩,就会导致高偏差。

方差表现为数据扰动很大影响模型。即模型没有完全学习到问题的本质,而学习到很多噪音。可能是使用的模型太复杂,如:使用高阶多项式回归,就是过拟合。

一些算法天生就是高方差的算法,如KNN算法。非参数学习算法通常都是高方差,因为不对数据进行任何假设。一些算法天生就是高偏差算法,如线性回归,参数学习算法通常都是高偏差算法。

偏差和方差通常是矛盾的。降低偏差,会提高方差;降低方差,会提高偏差。这就需要在偏差和方差之间保持一个平衡。以多项式回归模型为例,可以选择不同的多项式的次数,来观察多项式次数对模型偏差和方差的影响。

参考:

机器学习第六周--机器学习重要概念补充 - Mindy-snail - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab Spreadsheet Link安装(早期叫excllink)

我们在Matlab和Excel之间进行数据交互,需要用到Excel link这个组件(这是早期的叫法),现在这个组件的名称叫做Spreadsheet Link,这个在我们安装Matlab的时候,要选择相应的组件来安装(有可能我们刚…

find命令的常见用法

1.find 命令的常见用法 1.1 基础的打印操作 find命令默认接的命令是-print,它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔,这样就不会分行了。但是一定要注意,-print0针对的是\n转\0,如果查找的文件名本身就含有空格…

高一物理题整理

1 船过河问题 【分析及解答】 这个题的关键是如何理解船的速度,题目假设船的速度是不变的,也就是一直是v2v_2v2​。 列方程如下: {120v1∗10dv2∗10dv2sin⁡θ∗12.5v1v2cos⁡θ\left\{\begin{array}{l} 120 v_1 * 10 \\ d v_2 * 10 \\ d …

【我的渲染技术进阶之旅】解决Cinema 4D制作的3D模型无法导入Blender的问题

文章目录一、问题描述二、分析问题2.1 查看material材质的mtl文件2.2 mtl文件介绍2.3 对比mtl文件和mtl语法并修改2.3.1 norm不对2.3.2 map_Ka、map_Kd 、map_Ks、map_Bump 的格式不对2.5 重新导出obj格式和mtl文件三、总结一、问题描述 今天UI输出了个3D模型给我,…

Spring是如何解决循环依赖的?

一、什么是循环依赖? 循环依赖:说白了就是一个或多个对象实例之间存在直接或间接的依赖关系,这种依赖关系构成了一个环形调用。 第一种情况:自己依赖自己的直接依赖 第二种情况:两个对象之间的直接依赖 第三种情况…

Android 深入系统完全讲解(11)

9 framework 内容组成 狭义的 framework,主要讲的就是 SystemServer 里面的所有服务,这些是在 framework, 而广义的就是包含了 rec,native 服务,系统 app 等一切分不出去的模块,所以 framework 要能做好&a…

睿尔曼 RM65-B 机械臂 WIN 示教软件测试

大家好,我是虎哥,最近开始接触机械臂,尤其是协作机械臂,小,轻、还价格便宜一点,由于我师兄弟强烈推荐的睿尔曼 RM65-B机械臂,所以总结一下自己的开箱测试经验,主要是在WIN下 示教器软…

Protobu编译本地环境搭建

1 windows下安装Protobuhttps://github.com/protocolbuffers/protobuf/releases2 安装cmakehttps://cmake.org/download/3选择选择你的VS版本4生成pb运行程序5 protoc --cpp_out生产pb文件将刚才编译后的libprotobufd.lib和protoc.exe拷贝到自己创建的项目下,按住sh…

express中间件

文章目录中间件定义一个最简单的中间件自定义中间件中间件的五个使用注意事项Express 基于 Connect 构建而成,因此,它也保持了重用中间件来完成基础任务的想法。这就意味着,通过 Express 的 API 方便地构建 Web 应用地同时,又不失…

基于vgg16和pytorch框架进行cifar10数据集的图像分类

vgg16网络模型的实现 这里只讲怎么实现 百度搜到vgg16的网络模型图,用pytorch框架进行实现 图是这样,用pytorch实现就行,pyotrch不太熟悉的话可以去看小土堆的视频 命名mode.py 也可以使用其他名字,在后面的train.py里面改一下也…

【C语言进阶】内存函数和结构体内存对齐

目录一.strerror函数1.错误码变量errno2.strerror函数的使用3.perror函数二.memcpy函数1.函数介绍2.模拟实现三.memmove函数1.函数介绍2.模拟实现四.结构体的内存对齐一.strerror函数 1.错误码变量errno 规定: C语言库函数如果出现运行错误,会将对应错误信息的错误…

联邦学习 (FL) 中常见的3种模型聚合方法的 Tensorflow 示例

联合学习 (FL) 是一种出色的 ML 方法,它使多个设备(例如物联网 (IoT) 设备)或计算机能够在模型训练完成时进行协作,而无需共享它们的数据。 “客户端”是 FL 中使用的计算机和设备,它们可以彼此完全分离并且拥有各自不…

基于Java springmvc+mybatis酒店信息管理系统设计和实现

基于Java springmvcmybatis酒店信息管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取…

程序员接私活的几个平台和建议,避免掉坑!

大家对于程序员接私活这件事的看法,褒贬不一。但是你如果确实用钱,价格又合适,那就大胆去接。 如果不那么缺钱,那么接私活之前先考虑清楚,如果自己将空余时间用在接私活所产生的价值是不是大于提升自己。如果是的话&a…

2022年 大学生工程训练比赛[物料搬运]

本人和团结参加了2022年大学生工程训练(简称工训赛)校赛选拔,准备了几个月的时间和花费了较多的资金,由于疫情等多种情况,很遗憾未能参加湖南省省赛,过了这么久还是写个博客记录参赛准备和调试过程。 目录 一、比赛要求 二、整体…

第十章面向对象编程(高级部分)

10.1 类变量和类方法(关键字static) 10.1.31类变量快速入门 思考: 如果,设计一个 int count 表示总人数,我们在创建一个小孩时,就把 count 加 1,并且 count 是所有对象共享的就 ok 了! package com.hspedu.static_;public class ChildGame {…

MS【1】:Metric

文章目录前言1. Dice Loss1.1. Dice coefficient1.2. F1 score - Dice1.3. Dice Loss2. Sensitivity & Specificity2.1. Sensitivity2.2. Specificity3. Hausdorff distance3.1. 概念3.2. 单向 Hausdorff distance3.3. 双向 Hausdorff distance3.4. 部分 Hausdorff distanc…

使用ResNet18实现CIFAR100数据集的训练

如果对你有用的话,希望能够点赞支持一下,这样我就能有更多的动力更新更多的学习笔记了。😄😄 使用ResNet进行CIFAR-10数据集进行测试,这里使用的是将CIFAR-10数据集的分辨率扩大到32X32,因为算力相关的…

二、数据仓库模型设计

数据仓库模型设计一、数据模型二、关系模型三、维度模型1、事实表(1)事务事实表(2)周期快照事实表(3)累计快照事实表(4)无事实的事实表2、维度表3、维度模型类型(1&#…

LVGL学习笔记16 - 进度条Bar

目录 1. Parts 2. 模式 2.1 LV_BAR_MODE_SYMMETRICAL:对称模式 2.2 LV_BAR_MODE_RANGE:范围模式 3. 动画 4. 样式 4.1 方向 4.2 渐变色 4.3 增加边框 4.4 滚动条方向 进度条有一个背景和一个指示器组成,通过lv_bar_create创建对象。…