Skip to content

Commit b0fbaa1

Browse files
authored
Merge pull request #5828 from lanzagar/fix_lda
[FIX] Linear Projection: Fix LDA
2 parents 5a57006 + 1bf5e7e commit b0fbaa1

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

Orange/widgets/visualize/owlinearprojection.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,10 @@ def effective_variables(self):
329329

330330
@property
331331
def effective_data(self):
332-
return self.data.transform(Domain(self.effective_variables))
332+
cvs = None
333+
if self.placement == Placement.LDA:
334+
cvs = self.data.domain.class_vars
335+
return self.data.transform(Domain(self.effective_variables, cvs))
333336

334337
def __vizrank_set_attrs(self, attrs):
335338
if not attrs:

Orange/widgets/visualize/tests/test_owlinearprojection.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ def test_no_data_for_lda(self):
8585
self.send_signal(self.widget.Inputs.data, self.data)
8686
self.widget.radio_placement.buttons[Placement.LDA].click()
8787
self.assertTrue(buttons[Placement.LDA].isEnabled())
88+
output = self.get_output(self.widget.Outputs.components)
89+
self.assertTrue(output and len(output) == 2)
8890
self.send_signal(self.widget.Inputs.data, Table("housing"))
8991
self.assertFalse(buttons[Placement.LDA].isEnabled())
9092
self.send_signal(self.widget.Inputs.data, None)

Orange/widgets/visualize/utils/widget.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,10 @@ def set_data(self, data):
455455
self.openContext(self.data)
456456
self._invalidated = not (
457457
data_existed and self.data is not None and
458-
array_equal(effective_data.X, self.effective_data.X))
458+
array_equal(effective_data.X, self.effective_data.X) and
459+
array_equal(effective_data.Y, self.effective_data.Y) and
460+
array_equal(effective_data.metas, self.effective_data.metas)
461+
)
459462
self._domain_invalidated = not (
460463
data_existed and self.data is not None and
461464
effective_data.domain.checksum()

0 commit comments

Comments
 (0)