运行时错误:无法克隆对象:Scikit

编程入门 行业动态 更新时间:2024-10-28 21:22:47
本文介绍了运行时错误:无法克隆对象:Scikit-Learn 自定义估算器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我编写了一个估计器,它获取模型和模型的 kwargs 作为参数,并用这个 kwargs(红葡萄酒和白葡萄酒)启动 2 个模型,将数据分成 2 个群体,在每个群体上运行模型,然后组合结果.不幸的是,我的代码运行良好,但由于克隆参数的完整性检查失败,尝试实现 GridSearch 失败.

I wrote an estimator that gets as parameters a model and model's kwargs, and initiate 2 models with this kwargs (for red wine and white wine), split the data to 2 populations, run the model on each and then combines the results. Unfourtunately, my code works well, but trying to implement GridSearch fails due to a failure in sanity check of the parameters of the clone.

class run_estimator (BaseEstimator, TransformerMixin): def __init__(self, model=None, **kwargs): self.model = model self.model_args = kwargs self.red_model = model() self.white_model = model() def fit (self, X, y): self.red_model = self.red_model.set_params(**self.model_args) self.white_model = self.white_model.set_params(**self.model_args) X_red, y_red = splitter.transform(X, y, 0) self.red_model.fit(X_red, y_red) X_white, y_white = splitter.transform(X, y, 1) self.white_model.fit(X_white, y_white) return self def predict(self, X, y=None): X_red, y_red = splitter.transform(X, y, 0) y_red_pred = pd.Series(self.red_model.predict(X_red),index=X_red.index) X_white, y_white = splitter.transform(X, y, 1) y_white_pred = pd.Series(self.white_model.predict(X_white),index=X_white.index) y_pred = concator(y_red_pred, y_white_pred) cm = confusion_matrix(y_true=y, y_pred=y_pred) cm_plot(cm, self.white_model) return y_pred def get_params(self, deep=True): return {'model': self.model, "model_args": self.model_args, "red_model": self.red_model, "white_model": self.white_model} def set_params(self, **parameters): for parameter, value in parameters.items(): setattr(self, parameter, value) return self def score_cks(self,X, y): return cohen_kappa_score(y, self.predict(X, y))

有效的代码是:

model = run_estimator(LogisticRegression, multi_class='ovr') model.fit(X_train, y_train)

我在 GridSearch 中的错误是:

my Error in GridSearch is:

RuntimeError('Cannot clone object %s, as the constructor ' 'either does not set or modifies parameter %s'

谁能帮我弄清楚我做错了什么?谢谢

Can someone help me to figure out what I did wrong? Thank you

推荐答案

您的 __init__ 不应设置任何不在签名中的实例属性.您可以通过仅在适合时设置 red_model 和 white_model 来实现此目的.

Your __init__ shouldn't set any instance attributes that aren't in the signature. You can make this work by setting red_model and white_model only at fit time.

更多推荐

运行时错误:无法克隆对象:Scikit

本文发布于:2023-10-04 21:43:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1467217.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对象   错误   Scikit

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!