gpt4 book ai didi

python-2.7 - 从sklearn.pipeline.Pipeline获取转换器结果

转载 作者:行者123 更新时间:2023-12-04 12:51:42 26 4
gpt4 key购买 nike

我正在为群集使用sklearn.pipeline.Pipeline对象。

pipe = sklearn.pipeline.Pipeline([('transformer1': transformer1),
('transformer2': transformer2),
('clusterer': clusterer)])

然后,我通过使用轮廓分数来评估结果。
sil = preprocessing.silhouette_score(X, y)

我想知道如何从管道中获取 X或转换后的数据,因为它仅返回 clusterer.fit_predict(X)

我知道我可以通过将管道拆分为
pipe = sklearn.pipeline.Pipeline([('transformer1': transformer1),
('transformer2': transformer2)])

X = pipe.fit_transform(data)
res = clusterer.fit_predict(X)
sil = preprocessing.silhouette_score(X, res)

但我只想在一个管道中完成所有操作。

最佳答案

如果要同时在管道的中间步骤上拟合和转换数据,则没有必要重用同一管道,而最好使用指定的新管道,因为调用fit()会忘记所有先前学习的数据。

但是,如果只想transform()并在已安装的管道上查看中间数据,则可以通过访问 named_steps 参数来实现。

new_pipe = sklearn.pipeline.Pipeline([('transformer1': 
old_pipe.named_steps['transformer1']),
('transformer2':
old_pipe.named_steps['transformer2'])])

或直接使用内部变量 steps:
transformer_steps = old_pipe.steps
new_pipe = sklearn.pipeline.Pipeline([('transformer1': transformer_steps[0]),
('transformer2': transformer_steps[1])])

然后调用 new_pipe.transform()

更新:
如果您的版本为0.18或更高版本,则可以将管道中不需要的估计量设置为 None以在同一管道中获得结果。它在 this issue at scikit-learn github中讨论过
以上情况的用法:
pipe.set_params(clusterer=None)
pipe.transform(df)

但是请注意,也许可以将适合的 clusterer存储在其他地方,否则,当您想使用该功能时,您需要再次适合整个管道。

关于python-2.7 - 从sklearn.pipeline.Pipeline获取转换器结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626780/

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