Using custom estimator with cross_val_score fails(使用带有CROSS_VAL_SCORE的自定义估计器失败)
本文介绍了使用带有CROSS_VAL_SCORE的自定义估计器失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用cross_val_score
和自定义估计器。重要的是,此估计器接收一个成员变量,该变量稍后可在fit
函数中使用。但似乎在cross_val_score
内部,成员变量被销毁(或者正在创建估计器的新实例)。
以下是可以重现错误的最小代码:
from sklearn.model_selection import cross_val_score
from sklearn.base import BaseEstimator
class MyEstimator(BaseEstimator):
def __init__(self, member):
self._member = member
def fit(self, X, y):
if self._member is None:
raise Exception('member is None.')
X = np.array([[1, 1, 1], [2 ,2 , 2]])
y = np.array([1, 2])
score_values = cross_val_score(
MyEstimator('some value'),
X,
y,
cv=2,
scoring='r2'
)
在上面的代码中,总是引发异常。 有办法解决这个问题吗?
推荐答案
在内部克隆估计器,以创建估计器的多个副本。Reference;使用clone
函数。
from sklearn.base import clone
t = MyEstimator('some value')
t1 = clone(t)
t._member, t1._member
#
('some value', None)
clone仅从对象复制构造函数参数值。
解决方案:
使构造函数参数和对象属性保持一致,因此应以下划线开头或删除所有位置的下划线!
class MyEstimator(BaseEstimator):
def __init__(self, member):
self.member = member
def fit(self, X, y):
if self.member is None:
raise Exception('member is None.')
def predict(self, X):
return [1]
X = np.array([[1, 1, 1], [2 ,2 , 2],[3,3,3]])
y = np.array([1, 2,3])
score_values = cross_val_score(
MyEstimator('some value'),
X,
y,
cv=3,
scoring='r2',error_score='raise'
)
这篇关于使用带有CROSS_VAL_SCORE的自定义估计器失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:使用带有CROSS_VAL_SCORE的自定义估计器失败


基础教程推荐
猜你喜欢
- GridSearchCV.Best_Score不同于CROSS_VAL_Score(GridSearchCV. 2022-09-21
- 在VBA中调用python代码:权限错误 2022-09-22
- Socket.recv为空,但结果显示在Maya中 2022-09-21
- 当按下按钮时,将动态创建的按钮信息传递给函 2022-09-21
- 使用pyinstaller后,Python应用程序无法运行,但未显 2022-09-21
- IBM Watson SpechtoTextV1错误-Python 2022-09-22
- 跟在带量词的前瞻后面有什么作用? 2022-09-22
- 多索引数据帧删除每个组具有最大值的行 2022-09-22
- H5py:如何在HDF5组和数据集上使用key()循环 2022-09-21
- 使用Python访问已在运行的进程 2022-09-21