Skip to content
This repository was archived by the owner on Nov 16, 2023. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions docs/release-notes/release-1.6.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# [NimbusML](https://docs.microsoft.com/en-us/nimbusml/overview) 1.6.0

## **New Features**

- **Initial implementation of NGramExtractor.**

[PR#320](https://github.com/microsoft/NimbusML/pull/320)
Produces a bag of counts of n-grams (sequences of consecutive values of length 1-n)
in a given vector of keys. It does so by building a dictionary of n-grams and using
the id in the dictionary as the index in the bag.

- **Update Manifest Generator.**

[PR#329](https://github.com/microsoft/NimbusML/pull/329)
Update the Manifest Generator project to work with the latest changes and incorporate
it in to the build process.

## **Bug Fixes**

None.

## **Enhancements**

- **Update To ML.Net Version 1.4.0.**

[PR#353](https://github.com/microsoft/NimbusML/pull/353)

- **Update To Latest Version Of DataPrep.**

[PR#379](https://github.com/microsoft/NimbusML/pull/379)

- **Update Tests To Execute In Parallel.**

[PR#331](https://github.com/microsoft/NimbusML/pull/331)

## **Documentation and Samples**

None.

## **Remarks**

None.
17 changes: 2 additions & 15 deletions release-next.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,15 @@

## **New Features**

- **Initial implementation of NGramExtractor.**

[PR#320](https://github.com/microsoft/NimbusML/pull/320)
Produces a bag of counts of n-grams (sequences of consecutive values of length 1-n)
in a given vector of keys. It does so by building a dictionary of n-grams and using
the id in the dictionary as the index in the bag.

- **Update Manifest Generator.**

[PR#329](https://github.com/microsoft/NimbusML/pull/329)
Update the Manifest Generator project to work with the latest changes and incorporate
it in to the build process.
None.

## **Bug Fixes**

None.

## **Enhancements**

- **Update Tests To Execute In Parallel.**

[PR#331](https://github.com/microsoft/NimbusML/pull/331)
None.

## **Documentation and Samples**

Expand Down
2 changes: 1 addition & 1 deletion src/DotNetBridge/DotNetBridge.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<PackageReference Include="Microsoft.ML.Vision" Version="1.4.0" />
<PackageReference Include="Microsoft.ML.Ensemble" Version="0.16.0" />
<PackageReference Include="Microsoft.ML.TimeSeries" Version="1.4.0" />
<PackageReference Include="Microsoft.DataPrep" Version="0.0.2.3-preview" />
<PackageReference Include="Microsoft.DataPrep" Version="0.0.3.1-preview" />
<PackageReference Include="TensorFlow.NET" Version="0.11.8.1" />
<PackageReference Include="SciSharp.TensorFlow.Redist" Version="1.14.0" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/Platforms/build.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<PackageReference Include="Microsoft.ML.Vision" Version="1.4.0" />
<PackageReference Include="Microsoft.ML.Ensemble" Version="0.16.0" />
<PackageReference Include="Microsoft.ML.TimeSeries" Version="1.4.0" />
<PackageReference Include="Microsoft.DataPrep" Version="0.0.2.3-preview" />
<PackageReference Include="Microsoft.DataPrep" Version="0.0.3.1-preview" />
<PackageReference Include="TensorFlow.NET" Version="0.11.8.1" />
<PackageReference Include="SciSharp.TensorFlow.Redist" Version="1.14.0" />
</ItemGroup>
Expand Down
32 changes: 0 additions & 32 deletions src/python/docs/docstrings/DssmFeaturizer.txt

This file was deleted.

1 change: 0 additions & 1 deletion src/python/docs/docstrings/SsweEmbedding.txt
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@

.. seealso::
:py:class:`NGramFeaturizer <nimbusml.feature_extraction.text.NGramFeaturizer>`,
:py:class:`DssmFeaturizer <nimbusml.feature_extraction.text.DssmFeaturizer>`,
:py:class:`Sentiment <nimbusml.feature_extraction.text.Sentiment>`,
:py:class:`WordEmbedding <nimbusml.feature_extraction.text.WordEmbedding>`.

Expand Down

This file was deleted.

1 change: 0 additions & 1 deletion src/python/nimbusml.pyproj
Original file line number Diff line number Diff line change
Expand Up @@ -959,7 +959,6 @@
<Content Include="docs\docstrings\CustomStopWordsRemover.txt" />
<Content Include="docs\docstrings\Dart.txt" />
<Content Include="docs\docstrings\DnnFeaturizer.txt" />
<Content Include="docs\docstrings\DssmFeaturizer.txt" />
<Content Include="docs\docstrings\EnsembleClassifier.txt" />
<Content Include="docs\docstrings\EnsembleRegressor.txt" />
<Content Include="docs\docstrings\ExponentialAverage.txt" />
Expand Down
6 changes: 5 additions & 1 deletion src/python/nimbusml/_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -2543,7 +2543,7 @@ def summary(self, verbose=0, **params):
if len(self.steps) > 0 and not isinstance(
self.last_node, BasePredictor):
raise ValueError(
"Summary is availabe only for predictor types, instead "
"Summary is available only for predictor types, instead "
"got " +
self.last_node.type)

Expand Down Expand Up @@ -2581,6 +2581,10 @@ def summary(self, verbose=0, **params):
self._run_time = time.time() - start_time
raise e

# .summary() not supported if size of summary_data
# is less or equal to 1 (if only PredictedName in summary_data)
if summary_data.size == 1 and summary_data.columns.values == ["PredictorName"]:
raise TypeError("One or more predictors in this pipeline do not support the .summary() function.")
self.model_summary = summary_data

# stop the clock
Expand Down
30 changes: 23 additions & 7 deletions src/python/nimbusml/tests/model_summary/test_model_summary.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,25 +66,25 @@
#SymSgdBinaryClassifier(),
OrdinaryLeastSquaresRegressor(),
PoissonRegressionRegressor(),
OneVsRestClassifier(FastLinearBinaryClassifier()),
GamRegressor(),
GamBinaryClassifier(),
PcaAnomalyDetector(),
FactorizationMachineBinaryClassifier(),
KMeansPlusPlus(n_clusters=2),
NaiveBayesClassifier(),
FastForestBinaryClassifier(number_of_trees=2),
FastForestRegressor(number_of_trees=2),
FastTreesBinaryClassifier(number_of_trees=2),
FastTreesRegressor(number_of_trees=2),
FastTreesTweedieRegressor(number_of_trees=2),
LightGbmRegressor(number_of_iterations=2),
LightGbmClassifier(),
LightGbmBinaryClassifier(number_of_iterations=2)
]

learners_not_supported = [
#PcaTransformer(), # REVIEW: crashes
FactorizationMachineBinaryClassifier(),
OneVsRestClassifier(FastLinearBinaryClassifier()),
FactorizationMachineBinaryClassifier(),
KMeansPlusPlus(n_clusters=2),
NaiveBayesClassifier(),
LightGbmClassifier()
]


Expand All @@ -98,7 +98,6 @@ def test_model_summary(self):
pipeline.fit(train_stream, label_column)
pipeline.summary()

@unittest.skip("No unsupported learners")
def test_model_summary_not_supported(self):
for learner in learners_not_supported:
pipeline = Pipeline(
Expand All @@ -107,6 +106,23 @@ def test_model_summary_not_supported(self):
pipeline.fit(train_stream, label_column)
assert_raises(TypeError, pipeline.summary)

def test_model_summary_not_supported_specific(self):
path = get_dataset('infert').as_filepath()
data = FileDataStream.read_csv(path, sep=',',
names={0: 'row_num', 5: 'case'})
pipeline = Pipeline([
OneHotVectorizer(columns={'edu': 'education'}),
FactorizationMachineBinaryClassifier(feature=['induced', 'edu', 'parity'],
label='case')
])
pipeline.fit(data)
try:
pipeline.summary()
except TypeError as e:
self.assertEqual(e.args[0], "One or more predictors in this pipeline do not support the .summary() function.")
else:
assert False

def test_summary_called_back_to_back_on_predictor(self):
"""
When a predictor is fit without using a Pipeline,
Expand Down
2 changes: 1 addition & 1 deletion src/python/tests/test_estimator_checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@
}

OMITTED_CHECKS_TUPLE = (
'OneHotHashVectorizer, FromKey, DssmFeaturizer, DnnFeaturizer, '
'OneHotHashVectorizer, FromKey, DnnFeaturizer, '
'PixelExtractor, Loader, Resizer, \
GlobalContrastRowScaler, PcaTransformer, '
'ColumnConcatenator, Sentiment, CharTokenizer, LightLda, '
Expand Down
1 change: 0 additions & 1 deletion src/python/tools/manifest_diff.json
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,6 @@
"Common.MakeArrayIDataView",
"Common.MakeArrayIPredictorModel",
"CountTable.Create",
"Dssm.Trigram",
"EnsembleCreator.CreateAnomalyPipelineEnsemble",
"EnsembleCreator.CreateBinaryEnsemble",
"EnsembleCreator.CreateBinaryPipelineEnsemble",
Expand Down