gpt4 book ai didi

python - 如何pickle sklearn Pipeline 中的各个步骤?

转载 作者:行者123 更新时间:2023-11-30 08:41:16 25 4
gpt4 key购买 nike

我正在使用 sklearn 的 Pipeline 来对文本进行分类。

在此示例 Pipeline 中,我有一个 TfidfVectorizer 和一些用 FeatureUnion 包装的自定义功能以及作为 Pipeline< 的分类器 步骤,然后我拟合训练数据并进行预测:

from sklearn.pipeline import FeatureUnion, Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import LinearSVC

X = ['I am a sentence', 'an example']
Y = [1, 2]
X_dev = ['another sentence']

# classifier
LinearSVC1 = LinearSVC(tol=1e-4, C = 0.10000000000000001)

pipeline = Pipeline([
('features', FeatureUnion([
('tfidf', TfidfVectorizer(ngram_range=(1, 3), max_features= 4000)),
('custom_features', CustomFeatures())])),
('clf', LinearSVC1),
])

pipeline.fit(X, Y)
y_pred = pipeline.predict(X_dev)

# etc.

在这里,我需要对 TfidfVectorizer 步骤进行 pickle,并保留 custom_features 未进行pickle,因为我仍然对它们进行实验。这个想法是通过酸洗 tfidf 步骤来使管道更快。

我知道我可以使用joblib.dump来pickle整个Pipeline,但是如何pickle各个步骤?

最佳答案

要腌制 TfidfVectorizer,您可以使用:

joblib.dump(pipeline.steps[0][1].transformer_list[0][1], dump_path)

或者:

joblib.dump(pipeline.get_params()['features__tfidf'], dump_path)

要加载转储的对象,您可以使用:

pipeline.steps[0][1].transformer_list[0][1] = joblib.load(dump_path)

遗憾的是,您无法使用 set_params(与 get_params 相反)来按名称插入估算器。如果 PR#1769: enable setting pipeline components as parameters 发生变化,您将能够曾经合并过!

关于python - 如何pickle sklearn Pipeline 中的各个步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36259967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com