Skip to content

Commit 610cae2

Browse files
committed
Nomogram: Speedups
1 parent ba30ddd commit 610cae2

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

Orange/widgets/visualize/ownomogram.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import time
22
from enum import IntEnum
3+
from collections import OrderedDict
34

45
import numpy as np
56

@@ -868,11 +869,13 @@ def calculate_log_reg_coefficients(self):
868869
self.log_reg_coeffs = [coeffs[:, ranges[i]] for i in range(len(attrs))]
869870
self.log_reg_coeffs_orig = self.log_reg_coeffs.copy()
870871

871-
for i in range(len(self.log_reg_coeffs)):
872+
min_values = nanmin(self.data.X, axis=0)
873+
max_values = nanmax(self.data.X, axis=0)
874+
875+
for i, min_t, max_t in zip(range(len(self.log_reg_coeffs)),
876+
min_values, max_values):
872877
if self.log_reg_coeffs[i].shape[1] == 1:
873878
coef = self.log_reg_coeffs[i]
874-
min_t = nanmin(self.data.X, axis=0)[i]
875-
max_t = nanmax(self.data.X, axis=0)[i]
876879
self.log_reg_coeffs[i] = np.hstack((coef * min_t, coef * max_t))
877880
self.log_reg_cont_data_extremes.append(
878881
[sorted([min_t, max_t], reverse=(c < 0)) for c in coef])
@@ -1109,13 +1112,15 @@ def send_report(self):
11091112

11101113
@staticmethod
11111114
def reconstruct_domain(original, preprocessed):
1112-
attrs = []
1115+
# abuse dict to make "in" comparisons faster
1116+
attrs = OrderedDict()
11131117
for attr in preprocessed.attributes:
11141118
cv = attr._compute_value.variable._compute_value
11151119
var = cv.variable if cv else original[attr.name]
1116-
if var in attrs:
1120+
if var in attrs: # the reason for OrderedDict
11171121
continue
1118-
attrs.append(var)
1122+
attrs[var] = None # we only need keys
1123+
attrs = list(attrs.keys())
11191124
return Domain(attrs, original.class_var, original.metas)
11201125

11211126
@staticmethod

0 commit comments

Comments
 (0)