Skip to content

Commit 1654935

Browse files
committed
make release-tag: Merge branch 'master' into stable
2 parents 5fab607 + 4194596 commit 1654935

File tree

7 files changed

+55
-43
lines changed

7 files changed

+55
-43
lines changed

HISTORY.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# History
22

3+
## 0.3.1 - 2021-10-07
4+
5+
### Primitive Improvements
6+
7+
* Dynamic target_shape in keras adapter - [Issue #263](https://github.com/MLBazaar/MLPrimitives/issues/263) by @sarahmish
8+
* Save keras primitives in Windows environment - [Issue #261](https://github.com/MLBazaar/MLPrimitives/issues/261) by @sarahmish
9+
10+
### General Imporvements
11+
12+
* Update TensorFlow and NumPy dependency - [Issue #259](https://github.com/MLBazaar/MLPrimitives/issues/259) by @sarahmish
13+
314
## 0.3.0 - 2021-01-09
415

516
### New Primitives

mlprimitives/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
__author__ = 'MIT Data To AI Lab'
66
__email__ = 'dailabmit@gmail.com'
7-
__version__ = '0.3.0'
7+
__version__ = '0.3.1.dev1'
88

99
import os
1010

mlprimitives/adapters/keras.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ class Sequential(object):
2828
def __getstate__(self):
2929
state = self.__dict__.copy()
3030

31-
with tempfile.NamedTemporaryFile(suffix='.hdf5', delete=True) as fd:
31+
with tempfile.NamedTemporaryFile(suffix='.hdf5', delete=False) as fd:
3232
keras.models.save_model(state.pop('model'), fd.name, overwrite=True)
3333
state['model_str'] = fd.read()
3434

3535
return state
3636

3737
def __setstate__(self, state):
38-
with tempfile.NamedTemporaryFile(suffix='.hdf5', delete=True) as fd:
38+
with tempfile.NamedTemporaryFile(suffix='.hdf5', delete=False) as fd:
3939
fd.write(state.pop('model_str'))
4040
fd.flush()
4141

@@ -85,17 +85,18 @@ def _setdefault(self, kwargs, key, value):
8585
if key in self.hyperparameters and self.hyperparameters[key] is None:
8686
kwargs[key] = value
8787

88-
def _augment_hyperparameters(self, X, kwargs):
88+
def _augment_hyperparameters(self, X, mode, kwargs):
8989
shape = np.asarray(X)[0].shape
9090
length = shape[0]
91-
self._setdefault(kwargs, 'input_shape', shape)
92-
self._setdefault(kwargs, 'input_dim', length)
93-
self._setdefault(kwargs, 'input_length', length)
91+
self._setdefault(kwargs, '{}_shape'.format(mode), shape)
92+
self._setdefault(kwargs, '{}_dim'.format(mode), length)
93+
self._setdefault(kwargs, '{}_length'.format(mode), length)
9494

9595
return kwargs
9696

9797
def fit(self, X, y, **kwargs):
98-
self._augment_hyperparameters(X, kwargs)
98+
self._augment_hyperparameters(X, 'input', kwargs)
99+
self._augment_hyperparameters(y, 'target', kwargs)
99100
self.model = self._build_model(**kwargs)
100101

101102
if self.classification:

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.3.0
2+
current_version = 0.3.1.dev1
33
commit = True
44
tag = True
55
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z]+)(?P<candidate>\d+))?

setup.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,23 @@
1212
history = history_file.read()
1313

1414
install_requires = [
15-
'Keras>=2.4',
15+
'Keras>=2.4,<2.5',
1616
'featuretools>=0.6.1,<0.23',
1717
'iso639>=0.1.4,<0.2',
1818
'langdetect>=1.0.7,<2',
1919
'lightfm>=1.15,<2',
2020
'mlblocks>=0.4.0.dev0,<0.5',
2121
'networkx>=2.0,<3',
2222
'nltk>=3.3,<4',
23-
'numpy<1.19.0,>=1.16.0',
23+
'numpy<1.21.0,>=1.16.0',
2424
'opencv-python>=3.4.0.12,<5',
2525
'pandas>=1,<2',
2626
'python-louvain>=0.10,<0.14', # community
2727
'scikit-image>=0.15',
2828
'scikit-learn>=0.21',
2929
'scipy>=1.1.0,<2',
3030
'statsmodels>=0.9.0,<0.13',
31-
'tensorflow>=2,<2.4',
31+
'tensorflow>=2,<2.5',
3232
'xgboost>=0.72.1,<1',
3333
]
3434

@@ -117,6 +117,6 @@
117117
test_suite='tests',
118118
tests_require=tests_require,
119119
url='https://github.com/MLBazaar/MLPrimitives',
120-
version='0.3.0',
120+
version='0.3.1.dev1',
121121
zip_safe=False,
122122
)

tests/adapters/test_keras.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def test__augment_hyperparameters_3d_numpy(self):
6565
[1, 2, 3, 4],
6666
[1, 2, 3, 4]],
6767
])
68-
Sequential._augment_hyperparameters(sequential, X, kwargs)
68+
Sequential._augment_hyperparameters(sequential, X, 'input', kwargs)
6969

7070
# Assert
7171
assert kwargs == {'input_shape': (3, 4)}

tests/adapters/test_pandas.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def setUp(self):
1717
for day in range(4)
1818
for hour in range(24)
1919
],
20-
'value': list(range(4 * 24))
20+
'value': np.arange(0, 4 * 24, dtype=float)
2121
})
2222

2323
def test_resample_rule_str(self):
@@ -50,22 +50,22 @@ def test_resample_groupby(self):
5050
out = resample(self.df.set_index('dt'), '1d', groupby=['group1', 'group2'])
5151

5252
assert_frame_equal(out, pd.DataFrame([
53-
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 1), 'value': 10},
54-
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 2), 'value': 34},
55-
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 3), 'value': 58},
56-
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 4), 'value': 82},
57-
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 1), 'value': 12},
58-
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 2), 'value': 36},
59-
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 3), 'value': 60},
60-
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 4), 'value': 84},
61-
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 1), 'value': 11},
62-
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 2), 'value': 35},
63-
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 3), 'value': 59},
64-
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 4), 'value': 83},
65-
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 1), 'value': 13},
66-
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 2), 'value': 37},
67-
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 3), 'value': 61},
68-
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 4), 'value': 85},
53+
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 1), 'value': 10.0},
54+
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 2), 'value': 34.0},
55+
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 3), 'value': 58.0},
56+
{'group1': 'A', 'group2': 'C', 'dt': datetime(2000, 1, 4), 'value': 82.0},
57+
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 1), 'value': 12.0},
58+
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 2), 'value': 36.0},
59+
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 3), 'value': 60.0},
60+
{'group1': 'A', 'group2': 'D', 'dt': datetime(2000, 1, 4), 'value': 84.0},
61+
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 1), 'value': 11.0},
62+
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 2), 'value': 35.0},
63+
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 3), 'value': 59.0},
64+
{'group1': 'B', 'group2': 'C', 'dt': datetime(2000, 1, 4), 'value': 83.0},
65+
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 1), 'value': 13.0},
66+
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 2), 'value': 37.0},
67+
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 3), 'value': 61.0},
68+
{'group1': 'B', 'group2': 'D', 'dt': datetime(2000, 1, 4), 'value': 85.0},
6969
], columns=['group1', 'group2', 'dt', 'value']))
7070

7171
def test_resample_on(self):
@@ -95,30 +95,30 @@ def test_resample_aggregation_str(self):
9595
out = resample(self.df.set_index('dt'), '1d', aggregation='max')
9696

9797
assert_frame_equal(out, pd.DataFrame([
98-
{'dt': datetime(2000, 1, 1), 'value': 23},
99-
{'dt': datetime(2000, 1, 2), 'value': 47},
100-
{'dt': datetime(2000, 1, 3), 'value': 71},
101-
{'dt': datetime(2000, 1, 4), 'value': 95},
98+
{'dt': datetime(2000, 1, 1), 'value': 23.0},
99+
{'dt': datetime(2000, 1, 2), 'value': 47.0},
100+
{'dt': datetime(2000, 1, 3), 'value': 71.0},
101+
{'dt': datetime(2000, 1, 4), 'value': 95.0},
102102
]))
103103

104104
def test_resample_aggregation_func(self):
105105

106106
out = resample(self.df.set_index('dt'), '1d', aggregation=np.max)
107107

108108
assert_frame_equal(out, pd.DataFrame([
109-
{'dt': datetime(2000, 1, 1), 'value': 23},
110-
{'dt': datetime(2000, 1, 2), 'value': 47},
111-
{'dt': datetime(2000, 1, 3), 'value': 71},
112-
{'dt': datetime(2000, 1, 4), 'value': 95},
109+
{'dt': datetime(2000, 1, 1), 'value': 23.0},
110+
{'dt': datetime(2000, 1, 2), 'value': 47.0},
111+
{'dt': datetime(2000, 1, 3), 'value': 71.0},
112+
{'dt': datetime(2000, 1, 4), 'value': 95.0},
113113
]))
114114

115115
def test_resample_aggregation_import(self):
116116

117117
out = resample(self.df.set_index('dt'), '1d', aggregation='numpy.max')
118118

119119
assert_frame_equal(out, pd.DataFrame([
120-
{'dt': datetime(2000, 1, 1), 'value': 23},
121-
{'dt': datetime(2000, 1, 2), 'value': 47},
122-
{'dt': datetime(2000, 1, 3), 'value': 71},
123-
{'dt': datetime(2000, 1, 4), 'value': 95},
120+
{'dt': datetime(2000, 1, 1), 'value': 23.0},
121+
{'dt': datetime(2000, 1, 2), 'value': 47.0},
122+
{'dt': datetime(2000, 1, 3), 'value': 71.0},
123+
{'dt': datetime(2000, 1, 4), 'value': 95.0},
124124
]))

0 commit comments

Comments
 (0)