8000 [MRG + 1] Fix ValueError in LabelEncoder when using inverse_transform… · scikit-learn/scikit-learn@c554aad · GitHub
[go: up one dir, main page]

Skip to content

Commit c554aad

Browse files
Charlie Neweylesteve
Charlie Newey
authored andcommitted
[MRG + 1] Fix ValueError in LabelEncoder when using inverse_transform on unseen labels (#9816)
1 parent a78b66f commit c554aad

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

sklearn/preprocessing/label.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ def transform(self, y):
130130
classes = np.unique(y)
131131
if len(np.intersect1d(classes, self.classes_)) < len(classes):
132132
diff = np.setdiff1d(classes, self.classes_)
133-
raise ValueError("y contains new labels: %s" % str(diff))
133+
raise ValueError(
134+
"y contains previously unseen labels: %s" % str(diff))
134135
return np.searchsorted(self.classes_, y)
135136

136137
def inverse_transform(self, y):
@@ -148,8 +149,9 @@ def inverse_transform(self, y):
148149
check_is_fitted(self, 'classes_')
149150

150151
diff = np.setdiff1d(y, np.arange(len(self.classes_)))
151-
if diff:
152-
raise ValueError("y contains new labels: %s" % str(diff))
152+
if len(diff):
153+
raise ValueError(
154+
"y contains previously unseen labels: %s" % str(diff))
153155
y = np.asarray(y)
154156
return self.classes_[y]
155157

sklearn/preprocessing/tests/test_label.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,10 @@ def test_label_encoder_errors():
203203

204204
# Fail on unseen labels
205205
le = LabelEncoder()
206-
le.fit([1, 2, 3, 1, -1])
207-
assert_raises(ValueError, le.inverse_transform, [-1])
206+
le.fit([1, 2, 3, -1, 1])
207+
msg = "contains previously unseen labels"
208+
assert_raise_message(ValueError, msg, le.inverse_transform, [-2])
209+
assert_raise_message(ValueError, msg, le.inverse_transform, [-2, -3, -4])
208210

209211

210212
def test_sparse_output_multilabel_binarizer():

0 commit comments

Comments
 (0)
0