В Java, когда оператор «==» используется для сравнения двух объектов, он проверяет, ссылаются ли объекты на одно и то же место в памяти. Другими словами, он проверяет, являются ли имена двух объектов в основном ссылками на одно и то же место в памяти.
Класс Java String фактически переопределяет реализацию equals () по умолчанию в классе Object и переопределяет этот метод, чтобы он проверял только значения строк, а не их местоположения в памяти. Это означает, что если вы вызываете метод equals () для сравнения двух объектов String, то, пока действительная последовательность символов равна, оба объекта считаются равными.
Оператор
==
проверяет, являются ли две строки точно одним и тем же объектом.Метод
blockquote>.equals()
проверяет, имеют ли две строки одно и то же значение.
Как предлагается в нескольких комментариях, эта ошибка связана с тем, что self.processor
нельзя глубоко клонировать.
Итак, обходной путь для этой ошибки - удалить шаг предварительной обработки из этого класса и переместить его как независимый шаг предварительной обработки или внутри самого конвейера.
Я бы предложил иметь препроцессор внутри самого конвейера. Cross_val_score
будет пытаться скопировать параметры оценщика, он сломается, когда оценщик не может вернуть параметры при вызове get_params()
.
Я не уверен, является ли ваш параметр конвейера конвейером Sklearn, потому что объект конвейера не повторяется.