Skip to content

Commit cd69e60

Browse files
committed
ENH More readable code
1 parent f2b5bdf commit cd69e60

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

ch08/norm.py

+21-19
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,42 @@
22

33
class NormalizePositive(object):
44

5-
def fit(self, X, y=None):
5+
def fit(self, features, y=None):
66
# count features that are greater than zero in axis 0:
7-
binary = (X > 0)
7+
binary = (features > 0)
88
count0 = binary.sum(axis=0)
99

1010
# to avoid division by zero, set zero counts to one:
11-
count0 += (count0 == 0)
11+
count0[count0 == 0] = 1.
1212

13-
self.mean = X.sum(axis=0)/count0
13+
self.mean = features.sum(axis=0)/count0
1414

1515
# Compute variance by average squared difference to the mean, but only
1616
# consider differences where binary is True (i.e., where there was a
1717
# true rating):
18-
diff = (X - self.mean) * binary
18+
diff = (features - self.mean) * binary
1919
diff **= 2
20+
# regularize the estimate of std by adding 0.1
2021
self.std = np.sqrt(0.1 + diff.sum(axis=0)/count0)
2122
return self
2223

23-
def fit_transform(self, X):
24-
return self.fit(X).transform(X)
24+
def transform(self, features):
25+
binary = (features > 0)
26+
features = features - self.mean
27+
features /= self.std
28+
features *= binary
29+
return features
2530

26-
def transform(self, X):
27-
binary = (X > 0)
28-
X = X - self.mean
29-
X /= self.std
30-
X *= binary
31-
return X
32-
33-
def inverse_transform(self, X, copy=True):
31+
def inverse_transform(self, features, copy=True):
3432
if copy:
35-
X = X.copy()
36-
X *= self.std
37-
X += self.mean
38-
return X
33+
features = features.copy()
34+
features *= self.std
35+
features += self.mean
36+
return features
37+
38+
def fit_transform(self, features):
39+
return self.fit(features).transform(features)
40+
3941

4042
def predict(train):
4143
norm = NormalizePositive()

0 commit comments

Comments
 (0)