Склеарн внутренне клонирует оценщик, чтобы создать несколько копий оценщика. Ссылка ;используя функцию clone
.
from sklearn.base import clone
t = MyEstimator('some value')
t1 = clone(t)
t._member, t1._member
#
('some value', None)
клон копирует значения параметров конструктора только из объектов.
Решение:
Создайте свой параметр конструктора иАтрибуты объекта согласуются, поэтому начинайте с подчеркивания или удаляйте подчеркивание везде!
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'
)