pipeline和baseline是什么?

pipeline和baseline是什么?昨天和刚来项目的机器学习小白解释了一边什么baseline和pipeline,今天在这里总结一下什么是baseline和pipeline。1.pipeline1.1从管道符到pipeline

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

昨天和刚来项目的机器学习小白解释了一边什么baseline 和pipeline,今天在这里总结一下什么是baseline和pipeline。

1.pipeline

1.1 从管道符到pipeline

先从在linux的管道符讲起,

find ./ | grep wqbin | sort 

inux体系下的各种命令工具的处理,可以使用管道符作为传递,这是一种良好的接口规范,工具的功能有公共的接口规范,就像流水线一样,一步接着一步。

而我们只需改动每个参数就可以获取我们想要的结果。该过程就被称之管道机制。

一个基础的 机器学习的Pipeline 主要包含了下述 5 个步骤:

- 数据读取
- 数据预处理
- 创建模型
- 评估模型结果
- 模型调参

上5个步骤可以抽象为一个包括多个步骤的流水线式工作,从数据收集开始至输出我们需要的最终结果。

因此,对以上多个步骤、进行抽象建模,简化为流水线式工作流程则存在着可行性,流水线式机器学习比单个步骤独立建模更加高效、易用。

管道机制在机器学习算法中得以应用的根源在于,参数集在新数据集(比如测试集)上的重复使用。

1.2sklearn中pipeline为例

sklearn也遵循pipeline机制,并封装到 sklearn.pipline命名空间下面

pipeline和baseline是什么?

 

 

 

pipeline.FeatureUnion(transformer_list[, …])    Concatenates results of multiple transformer objects.
pipeline.Pipeline(steps[, memory])              Pipeline of transforms with a final estimator.
pipeline.make_pipeline(*steps, **kwargs)        Construct a Pipeline from the given estimators.
pipeline.make_union(*transformers, **kwargs)    Construct a FeatureUnion from the given trans

PIPELINE

sklearn中把机器学习处理过程抽象为estimator,其中estimator都有fit方法,表示数据进行初始化or训练。estimator有2种:

1、特征变换(transformer)
可以理解为特征工程,即:特征标准化、特征正则化、特征离散化、特征平滑、onehot编码等。该类型统一由一个transform方法,用于fit数据之后,输入新的数据,进行特征变换。

2、预测器(predictor)
即各种模型,所有模型fit进行训练之后,都要经过测试集进行predict所有,有一个predict的公共方法。

上面的抽象的好处即可实现机器学习的pipeline,显然特征变换是可能并行的,通过FeatureUnion实现。特征变换在训练集、测试集之间都需要统一,所以pipeline可以达到模块化的目的。举个NLP处理的例子:

# 生成训练数据、测试数据
X_train, X_test, y_train, y_test = train_test_split(X, y)

# pipeline定义
pipeline = Pipeline([
        ('vect', CountVectorizer()),
        ('tfidf', TfidfTransformer()),
        ('clf', RandomForestClassifier())
])

# train classifier
pipeline.fit(X_train, y_train)

# predict on test data
y_pred = pipeline.predict(X_test)

FEATUREUNION

上面看到特征变换往往需要并行化处理,即FeatureUnion所实现的功能。

pipeline = Pipeline([
             ('features', FeatureUnion([
                  ('text_pipeline', Pipeline([
                        ('vect', CountVectorizer(tokenizer=tokenize)),
                        ('tfidf', TfidfTransformer())
                     ])),
                ('findName', FineNameExtractor())
              ]))
            ('clf', RandomForestClassifier())
       ])

pipeline还可以嵌套pipeline,整个机器学习处理流程就像流水工人一样。

上面自定义了一个pipeline处理对象FineNameExtractor,该对象是transformer,自定义一个transformer是很简单的,创建一个对象,继承自BaseEstimator, TransformerMixin即可,

代码如下:

from sklearn.base import BaseEstimator, TransformerMixin
class FineNameExtractor(BaseEstimator, TransformerMixin):

    def find_name(self, text):
        return True

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        X_tagged = pd.Series(X).apply(self.find_name)
        return pd.DataFrame(X_tagged)

执行一个PIPELINE,加上自动调参就可以了,sklearn的调参通过GridSearchCV实现=》pipeline+gridsearch。

GridSearchCV实际上也有fit、predict方法,所以,训练与预测高效抽象的,代码很简洁。

2.baseline

baseline这个概念是作为算法提升的参照物而存在的,相当于一个基础模型,可以以此为基准来比较对模型的改进是否有效。
通常在一些竞赛或项目中,baseline就是指能够顺利完成数据预处理、基础的特征工程、模型建立以及结果输出与评价,然后通过深入进行数据处理、特征提取、模型调参与模型提升或融合,使得baseline可以得到改进。
所以这个没有明确的指代,改进后的模型也可以作为后续模型的baseline。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167460.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月2日 下午3:00
下一篇 2022年8月2日 下午3:00


相关推荐

  • 索引覆盖与回表

    索引覆盖与回表懂的越多 不懂的越多上回书说到 什么情况下 索引下推没办法提高 sql 查询效率 表 info 主键 id 名称 name 值 value 别名 realname 对于 info 表 我们现在有 name value 联合索引

    2026年3月26日
    2
  • nfv与云计算_云计算必学知识

    nfv与云计算_云计算必学知识云计算1.Saas软件即服务SaaS的实例:MicrosoftOfficeOnline(WordOnline,ExcelOnline等)服务,无需在本机安装,打开浏览器,注册账号,可以随时随地通过网络进行软件编辑,保存等,不需要用户去升级软件,维护软件等。平台即服务,把服务器平台作为一种对外提供的一种商业模式。系统对外提供接口服务,开发者可以利用这些接口进行开发业务或者应用,提供给用户使…

    2025年10月12日
    4
  • hackbar 使用教程_HackMan:打造Chrome下的HackBar !「建议收藏」

    hackbar 使用教程_HackMan:打造Chrome下的HackBar !「建议收藏」本Chrome插件基于PostMan插件二次开发,感谢作者。请不要说闲的JJ疼,都有了HackBar为毛还要在造轮子……我比较喜欢Chrome的API,就写了由于Chrome自身限制,无法做成想Hackbar一样。由于二次开发,面向的用户不一样,就改名为HackMan版权当然还是作者的,勿怪!功能说明左边栏为历史记录和收藏请求顶栏分别为普通模式请求和BasicAuth,DigestAuth,…

    2022年5月31日
    355
  • 编程思想_编程有必要给孩子学吗?

    编程思想_编程有必要给孩子学吗?编程思想

    2022年4月22日
    46
  • vim批量删除与插入

    vim批量删除与插入最开始使用 vim 的时候 一直不太会批量插入与删除 现在总结出一点小小心得体会 与大家分享 vim 批量删除 1 采用正则的方式在普通模式下 输入如下命令 s g 这样就将行首的三个字符用空白串替换 即达到了删除行首三个字符的效果 2 可视块模式比如想删除文件中每行前三个字符 在普通模式下 ctrl v 可进入可视块模式 gg 到文件最开始位置 然后 ctrl v 进入可视块模式 再按 G 到

    2026年3月18日
    2
  • json字符串转对象数组

    json字符串转对象数组json 字符串转对象数组 JSONArrayjso JSONArray parseArray json List XXXX values jsonArray toJavaList XXXXX class 我是蝉沐风 一个让你沉迷于技术的讲述者 欢迎大家留言 XXXX

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号