将多种算法与 sklearn pipeline 进行比较

2023-11-26

我正在尝试建立一个 scikit-learn 管道来简化我的工作。我面临的问题是我不知道哪种算法(随机森林、朴素贝叶斯、决策树等)最适合,所以我需要尝试每种算法并比较结果。然而,管道一次只能采用一种算法吗?例如,下面的管道仅采用 SGDClassifier() 作为算法。

pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', SGDClassifier()),])

如果我想比较不同的算法该怎么办?我可以做这样的事情吗?

pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', SGDClassifier()),
('classifier', MultinomialNB()),])

我不想将其分解为两个管道,因为数据的预处理非常耗时。

提前致谢!


改进布鲁诺的答案,大多数人真正想做的是能够传递任何分类器(不必对每个分类器进行硬编码)以及每个分类器的任何参数。这是一个简单的方法来做到这一点:

创建适用于任何估算器的切换器类

from sklearn.base import BaseEstimator
class ClfSwitcher(BaseEstimator):

def __init__(
    self, 
    estimator = SGDClassifier(),
):
    """
    A Custom BaseEstimator that can switch between classifiers.
    :param estimator: sklearn object - The classifier
    """ 

    self.estimator = estimator


def fit(self, X, y=None, **kwargs):
    self.estimator.fit(X, y)
    return self


def predict(self, X, y=None):
    return self.estimator.predict(X)


def predict_proba(self, X):
    return self.estimator.predict_proba(X)


def score(self, X, y):
    return self.estimator.score(X, y)

现在您可以为估计器参数传递任何内容。您可以优化传入的任何估计器的任何参数,如下所示:

执行超参数优化

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.linear_model import SGDClassifier
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV

pipeline = Pipeline([
    ('tfidf', TfidfVectorizer()),
    ('clf', ClfSwitcher()),
])

parameters = [
    {
        'clf__estimator': [SGDClassifier()], # SVM if hinge loss / logreg if log loss
        'tfidf__max_df': (0.25, 0.5, 0.75, 1.0),
        'tfidf__stop_words': ['english', None],
        'clf__estimator__penalty': ('l2', 'elasticnet', 'l1'),
        'clf__estimator__max_iter': [50, 80],
        'clf__estimator__tol': [1e-4],
        'clf__estimator__loss': ['hinge', 'log', 'modified_huber'],
    },
    {
        'clf__estimator': [MultinomialNB()],
        'tfidf__max_df': (0.25, 0.5, 0.75, 1.0),
        'tfidf__stop_words': [None],
        'clf__estimator__alpha': (1e-2, 1e-3, 1e-1),
    },
]

gscv = GridSearchCV(pipeline, parameters, cv=5, n_jobs=12, return_train_score=False, verbose=3)
gscv.fit(train_data, train_labels)

如何解读clf__estimator__loss

clf__estimator__loss被解释为loss任何参数estimator在哪estimator = SGDClassifier()在最上面的例子中,它本身就是一个参数clf这是一个ClfSwitcher object.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将多种算法与 sklearn pipeline 进行比较 的相关文章

  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 归并排序究竟进行了多少次比较?

    我读到 在实践中 快速排序比合并排序快得多 其原因是隐藏常量 那么 随机快速排序复杂度的解是2nlnn 1 39nlogn 这意味着快速排序中的常数是1 39 但是合并排序呢 归并排序中的常数是什么 让我们看看能否解决这个问题 在合并排序中
  • 对 Python DataFrame 进行子集化

    我正在从 R 过渡到 Python 我刚刚开始使用 Pandas 我有一个可以很好地子集化的 R 代码 k1 lt subset data Product p id Month lt mn Year yr select c Time Pro
  • 计算温度的偏导数(温度的水平平流)

    我想知道哪种方法计算x和y方向温度的偏导数 温度的水平平流 最正确 第二个代码使用温度 纬向风和经向风的数据矩阵 提取温度 T 纬向风分量 u 和经向风分量 v 的数据 import matplotlib pyplot as plt imp
  • SMTPAuthenticationError: (535, b'5.7.8 用户名和密码在 Django 生产中不被接受?

    我在 Heroku 上部署了一个 Django 应用程序 在其中一节中 我使用 SMTP Gmail 设置向用户发送电子邮件 当我在本地运行项目时 电子邮件发送成功 但在 Heroku 上部署的项目上却发送失败 我在 Stackoverfl
  • 肥皂服务的良好框架是什么?

    我正在寻找一个用于肥皂的好框架service 我更喜欢使用Pythonic框架 但是在查看了soaplib rpclib 太不稳定 SOAPy 不适用于2 7 和ZSI 太 令人困惑 之后 我不确定这是否可能 我对使用另一种语言感到满意 尽
  • int 对象在尝试对数字的数字求和时不可迭代? [复制]

    这个问题在这里已经有答案了 我有这个代码 inp int input Enter a number for i in inp n n i print n 但它抛出一个错误 int object is not iterable 我想通过将每个
  • 如何最好地将包含列表或元组的 Pandas 列提取到多个列中[重复]

    这个问题在这里已经有答案了 我不小心用错误重复的链接关闭了这个问题 这是正确的 Pandas 将列表的列拆分为多列 https stackoverflow com questions 35491274 pandas split column
  • 使用子图绘制 pandas 数据框 (subplots=True):放置图例并使用紧凑的布局

    我真的很喜欢 pandas 来处理和分析大数据集 到目前为止 我主要使用 matplotlib 进行绘图 但现在想使用 pandas 自己的绘图功能 基于 matplotlib 因为它需要更少的代码 并且在大多数情况下对我来说似乎足够了 尤
  • 在 Windows 上将 NumPy 与 BLAS 链接

    我正在尝试在 Windows 系统上安装 Theano 并且需要安装 BLAS 和 LAPACK 我的 System32 文件夹中有这些的 dll 文件 当我运行 numpy config来自 Anaconda 的 show 库的路径正确显
  • PyPI 项目页面中的“Py 版本”是什么意思?这有关系吗?

    我注意到 大多数在 PyPI 上发布的项目在其项目页面中都包含 Py 版本 元数据 但它们的值各不相同 如果包不是通用包或不是纯 python 包 那么它们的值是不同的 这是可以理解的 以便表示它们的目标平台 例如鼻页 https pypi
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或
  • 多线程写入文件

    前几天刚开始使用 python 对多线程的整个概念还很陌生 我在多线程时写入文件时遇到问题 如果我按照常规方式执行此操作 它会不断覆盖正在写入的内容 使用 5 个线程写入文件的正确方法是什么 不降低性能的最佳方法是在所有线程之间使用队列 每
  • 在Python中引用不带换行符的长字符串

    我正在尝试在 Python 中编写一个长字符串 该字符串显示为 OptParser 选项的帮助项 在我的源代码 py 文件中 我想放置换行符 以便我的代码不会花费新行 但是 我不希望这些换行符影响代码运行时该字符串的显示方式 例如 我想写
  • 仅对某些行的不同大小的两个 pandas 数据帧的列进行求和

    我有两个 pandas 数据框 如下所示 df1 n column1 0 5 0 0 0 1 6 0 0 0 2 7 0 0 0 3 8 0 0 0 4 9 0 0 0 5 10 0 0 0 df2 n column2 0 6 0 1 0
  • Tornado websocket handler , self.close() 正在关闭连接而不触发 on_close() 方法

    我是 python stackoverflow tornado 的新手 所以请耐心等待 纠正我 我正在使用龙卷风开发实时应用程序 当我在 Websocket 处理程序类中调用 self close 时 on close 方法不会启动 这次我
  • 避免在列表理解中计算相同的表达式两次[重复]

    这个问题在这里已经有答案了 我在列表理解中使用一个函数和一个 if 函数 new list f x for x in old list if f x 0 令我恼火的是这个表达f x 在每个循环中计算两次 有没有办法以更清洁的方式做到这一点
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • 连接运算符 + 或 ,

    var1 abc var2 xyz print literal var1 var2 literalabcxyz print literal var1 var2 literal abc xyz 除了带有 的自动空格之外 两者有什么区别 哪个通
  • Tensorflow ctc_loss_calculator:找不到有效路径

    当运行我的神经网络 双向 LSTM 进行音频识别时 我使用连接主义时间分类 CTC 但在某些时候 训练网络时我几乎每批都会收到来自 Tensorflow 的警告 W tensorflow core util ctc ctc loss cal

随机推荐

  • 从不同的类访问 HashMap

    我的班级中有一个名为 DataStorage 的哈希图 HashMap
  • Tensorflow 2.0 自定义训练循环的学习率

    当我使用tensorflow 2 0自定义训练循环时 是否有任何函数或方法可以显示学习率 这是张量流指南的示例 def train step images labels with tf GradientTape as tape predic
  • 在 py2exe 构建中包含 PYD/DLL

    我的应用程序的模块之一使用 pyd 文件中的函数 有一个选项可以排除 dll exclude dlls 但是有一个选项可以包含它们吗 尽管复制了其余文件 py 但构建过程似乎并未复制我的模块中的 pyd 我还需要包含一个 dll 如何让 p
  • Solr 使用太多内存

    我们有一个在带有 Oracle Java 6 Hotspot JDK 的 Windows 2008 R2 上运行的 Solr 3 4 实例 该实例变得无响应 当我们查看机器时 我们注意到可用物理内存变为零 Tomcat7 exe 进程使用了
  • php paypal 快速结帐问题

    我正在尝试在我的网站上集成贝宝快速结帐 我试图使用沙箱进行检查 当我从我的网站提交数据时 生成的令牌没有错误 但当重定向到 PayPal 时 它不显示付款金额 顺便说一句 我正在使用贝宝快速结帐向导中的代码 如果有人指出我正确的方向 那将会
  • 选择日期后添加天数(周末和节假日除外)

    我有两个文本字段 在第一个文本字段中 我使用 jQueryUI Datepicker 添加了一个日历 当用户从日期选择器中选择日期时 它应该自动向该日期添加 30 天 并在第二个文本字段中设置该值 我已经完成了将日期添加 30 天的工作 但
  • JPA EntityManager:为什么使用 persist() 而不是 merge()?

    EntityManager merge 可以插入新对象并更新现有对象 为什么要使用persist 只能创建新对象 无论哪种方式都会将实体添加到 PersistenceContext 中 不同之处在于您随后对该实体执行的操作 Persist
  • Spring中如何获取Session对象?

    我相对较新Spring和春季安全 我试图编写一个程序 需要使用 Spring security 在服务器端对用户进行身份验证 我想出了以下几点 public class CustomAuthenticationProvider extend
  • 从另一个模块访问对象

    我是一个非常缺乏经验的程序员 正在创建一个游戏 使用 Python 3 3 作为学习练习 我目前有一个主模块和一个战斗模块 游戏中的人物由 Person 类的实例表示 并在主模块中创建 然而 战斗模块显然需要访问这些对象 此外 我可能稍后会
  • 嵌套列表理解范围

    解释我的问题的最好方法是举一个例子 示例 py class A object integers 1 2 3 singles i for i in integers class B object integers 1 2 3 pairs i
  • 检测移动设备和重定向的最佳方法

    这是我根据屏幕尺寸检测移动显示器的代码片段 您可以通过向 URL 添加forceDesktop 参数来强制站点保持桌面模式 我是 jquery 新手 所以如果您有建议 请评论 学分归于brandonjp 如何在 JavaScript 中获取
  • 设置 AVAudioSession Category 对 WKWebView 的声音没有影响

    当从 WKWebView 播放音频时 我似乎无法覆盖 AVAudioSession 类别或端口 当使用普通的 UIWebView 时 相同的代码可以完美地工作 AVAudioSession session AVAudioSession sh
  • android布局xml中的background、backgroundTint、backgroundTintMode属性有什么区别?

    在使用 android 布局 xml 时 我遇到了backgroundTint属性 我不明白这是做什么用的 还有什么是backgroundTintMode 我测试了各种组合android background android backgro
  • ParameterInfo.IsLcid 或 ParameterInfo.IsRetval 何时为 true?

    我在Google搜索时在Stack Overflow中发现了这个问题 但它已被删除 所以我再次列出这个问题 由于我找不到LcidAttribute or RetvalAttribute在BCL中 我猜C 还没有提供对区域设置标识符参数和返回
  • CSS 选择器中是否可以有一个用于标记名的正则表达式?

    我想使用 selenium webdriver 来查找元素h2 or h3 tag 是否可以有一个通用的 css 选择器来满足上述要求 类似的东西 tag h or att str 对于属性 是的 可以 但对于元素 您可以用逗号分隔可能的值
  • 使用 DACFx 3.0 API 升级 DACPAC - 如何检查现有数据库的当前 DAC 版本?

    我目前正在重写团队的数据库部署 Powershell 脚本以使用 DACFx 3 0 API 而不是 2 0 我已经成功地使用新的 DACPAC 升级来工作Microsoft SqlServer Dac DacServices控制器类 剩下
  • 如何以编程方式读取packages.config中的NuGet包列表?

    读取 最好通过 C packages config 文件中列出的包的最佳方法是什么 在我们的源代码存储库中 我有很多解决方案和项目 以及同样很多的packages config 文件 我正在尝试构建源代码存储库中使用的包 和版本 的综合列表
  • 在 C# 中通过 DocuSign api 登录时出现“操作已超时”错误

    自 2018 年 5 月 31 日起 我在登录 DocuSign API 时收到以下错误 DocuSign eSign Client ApiException 调用登录时出错 操作已超时 自去年以来 我们一直在测试 DocuSign API
  • php中的“iif”是什么意思?

    有人在 php 中见过这个 iif 吗 那到底是什么 我尝试在 php net 中搜索它的文档 但找不到任何文档 任何人都可以举一个如何使用这个 iif 的简单例子吗 功能iif标准 PHP 库中不存在 但在大多数情况下 它是一个 短 if
  • 将多种算法与 sklearn pipeline 进行比较

    我正在尝试建立一个 scikit learn 管道来简化我的工作 我面临的问题是我不知道哪种算法 随机森林 朴素贝叶斯 决策树等 最适合 所以我需要尝试每种算法并比较结果 然而 管道一次只能采用一种算法吗 例如 下面的管道仅采用 SGDCl