问题标签 [scikit-learn-pipeline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
32 浏览

scikit-learn - 如何修复:ValueError:解包的值太多(预期为 2)PCA

我有两个变量:

我有这个管道:

我得到了错误:

我得到与 4 个变量相同的错误。

我该如何解决这个错误?

0 投票
1 回答
35 浏览

scikit-learn - 使用带和不带管道的逻辑回归的不同 AUC-PR 分数

我试图理解为什么我在有和没有管道的情况下使用逻辑回归得到不同的 AUC-PR 分数。

这是我使用管道的代码:

这是我没有管道的代码:

最后:

那么,这是为什么呢?

0 投票
1 回答
49 浏览

python - 修复 scikit-learn 估计器中的参数

我需要修复 scikit-learn 估计器的参数值。我仍然需要能够更改估算器的所有其他参数,并在 scikit-learn 工具(例如 Pipelines 和 GridSearchCV)中使用估算器。

我试图定义一个继承自 scikit-learn 估计器的新类。例如,在这里我试图创建一个修复n_estimators=5RandomForestClassifier 的新类。

不可靠的事实get_params()意味着我不能在 Pipelines 和 GridSearchCV 中使用新的估计器(如此所述)。

我正在使用 scikit-learn 0.24.2,但我认为它实际上与新版本相同。

我更喜欢让我在修复超参数值的同时定义一个新类的答案。我也会接受使用其他技术的答案。我也将感谢我为什么应该/不应该这样做的详尽解释!

0 投票
0 回答
21 浏览

scikit-learn - TPOT安装管道如何腌制?

我用的是TPOT分类器,训练好模型后,想保存最好的管道;我可以使用它。

这是输出之一的示例:

但是当我尝试使用这个对象来腌制这个对象时,joblib.dump我得到了这个错误:

所以问题是:我怎样才能腌制经过训练的管道?提前致谢!

万一这可能会影响:训练在一个类中,并且使用 train() 方法调用它,然后从该方法返回管道,另一个进行转储。我不能通过设计约束来改变这个结构。

0 投票
1 回答
68 浏览

python - 使用 FunctionTransformer 时 Sklearn 管道中断

我正在学习使用管道,因为它们看起来更干净。所以,我正在参与 Kaggle 上的表格操场比赛。

我正在尝试遵循一个非常简单的管道,在该管道中,我使用 aFunctionTransformer将新列添加到数据框中,执行Ordinal Encoding并最终将数据拟合到LinearRegression模型上。

这是代码:

但代码在第一步 ( FunctionTransformer) 中断并给我以下错误:

这很奇怪,因为我可以在正在执行的函数中打印,这表明它是datetime格式的。甚至get_weekend.transform(X_train['date'])按预期工作。但是当所有步骤都加入时,它似乎不起作用。

0 投票
1 回答
36 浏览

python - Pandas 函数 Transformer 引发 SettingWithCopy 警告

我正在学习使用管道并制作了一个非常简单的管道,其中FunctionTransformer添加了一个新列、一个ordinal encoder和一个LinearRegression模型。

但事实证明,SettingwithCopy当我运行管道并将问题隔离到FunctionTransformer.

这是代码,我省略了所有不必要的代码(如管道中的序数编码器和回归器) -

这给了我以下错误-

这很奇怪,因为我可以在没有 FunctionTransformer 的情况下做同样的事情而不会出现错误。

我真的很困惑在这里,所以任何帮助表示赞赏

0 投票
0 回答
32 浏览

python - 具有矢量化和特征联合的决策树分类器管道的特定决策规则

为了将特定规则应用于决策树分类器上的训练样本,我们需要使用 decision_path 方法decision_path(X[, check_input])

现在,在处理一个短文本分类模型时,我已经在文本特征的矢量化上流水线化了一个特征联合,并应用网格搜索来找到一个优化的模型,如下面的代码所示。

  1. 这使得我很难将 X 功能调用到decision_path方法中,因为我不断收到错误
  2. 此外,我最终会试图用文本特征而不是数字矢量化特征来说明路径......

我尝试在许多替代方案上使用 node_indicator 变量但没有成功,因为我无法调用已矢量化和流水线化的功能。

实际上,在这项工作之后,我显然会对使用文本特征而不是矢量化特征打印出所选样本的决策树路径非常感兴趣。

任何人都可以帮助如何解决这个问题。我在上述试验中拼命尝试该方法的最后一个错误.get_feature_names_out()是:

0 投票
0 回答
26 浏览

python - 在拟合和预测期间行为不同的自定义 sklearn 转换器(类似于 NN 中的 dropout)

我正在处理一个有监督的学习二元分类任务。作为特征,我有我用一袋单词建模的文本。我正在使用 python scikit-learn 管道。

现在,我并不完全信任我的数据集。我知道它有一些偏见。我正在尝试利用我对该问题的领域知识来抵消这些偏差对模型的影响。当然,在可能的范围内。

例如,在拟合模型并进行特征重要性分析后,我发现一个特征——即标记“png”的存在/不存在——通常存在于正类中,但不存在于负类中。因此,与其他功能相比,该模型当然赋予了它非常高的权重。确实,在野外,“png”在积极方面比在消极方面更常见,但由于我的领域知识,我知道差异绝不是那么大。让我们假设我是对的。那么问题是,我怎样才能修改训练,使模型赋予该特征“一些”但更轻的权重?

欢迎任何想法。到目前为止,对我来说最有意义的是为一些训练数据点随机“隐藏”该特征。这可以通过修改解析文本的标记器或在 BOW 矩阵转换后将标记特征列替换为 0 来完成。一种或另一种方式,我需要“随机隐藏”仅在适合期间而不是在预测期间发生。类似于神经网络中的 dropout。我强烈希望将此逻辑作为 scikit-learn 管道的一部分而不是直接在其外部的数据集上实现,因为我经常通过我的项目拆分我的数据集以进行交叉验证、培训等。

不幸的是,我在 scikit-learn API 中没有找到任何可以让我在预测期间发生的管道内的转换和训练期间发生的转换之间产生任何差异的东西。

关于如何做到这一点的任何想法?

0 投票
0 回答
20 浏览

python - 使用 Scikitlearn 的多保真回归模型管道

有没有办法创建一个 Scikitlearn 管道,其中包括两个加法回归模型,在两组数据上进行训练?

我有一个模拟,我在高保真和低保真模式下运行,并且有大约 20.000 个低保真样本和 2.000 个高保真样本。使用 scikitlearn 我想构建两个 SVR 模型,其中一个在低保真数据 (X_train_low) 上进行训练,另一个在低保真模型和高保真数据之间的误差上进行训练。

低保真 SVR 模型:

校正 SVR 模型:

加性校正 SVR 模型:

我有一个使用两个 scikitlearn 管道的实现,包括一个缩放器:

是否可以将两个模型组合在一个管道中?

0 投票
2 回答
53 浏览

python - AttributeError scikit learn 基于管道的类

我正在尝试编写一个基于 sklearn 的特征提取管道。我的管道代码想法可以分成几个部分

  1. 可能发生所有数据预处理(如果需要)的父类
  1. 一种装饰器,可帮助定义特征提取的执行,用于智能地处理一个特征依赖于另一个特征的情况。
  1. 最后是所有特征提取发生的子类之一:

测试此代码的一个小输入:

给出错误:

但是,当我不继承基类中的 sklearn 类时,即。class FeatureExtractor():然后我得到正确的输出:

对此有任何指示吗?