From 4b998f41d556cf2b86b14a6d175e81b679834edc Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Fri, 21 Sep 2018 22:17:48 -0500 Subject: [PATCH 1/6] update readmes --- README.md | 42 +++++++++++++++++++++++++----------------- automl/README.md | 25 ++++++++++++++++--------- images/additems.png | Bin 0 -> 19034 bytes images/python36.png | Bin 0 -> 10613 bytes 4 files changed, 41 insertions(+), 26 deletions(-) create mode 100644 images/additems.png create mode 100644 images/python36.png diff --git a/README.md b/README.md index 7741c993..923aa0da 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,34 @@ # Azure Machine Learning service sample notebooks -Use either of these methods to run the notebooks in this repository: +To run the notebooks in this repository use one of these methods: -* **Azure Notebooks** - Jupyter based notebooks in the Azure cloud - 1. [![Azure Notebooks](https://notebooks.azure.com/launch.png)](https://aka.ms/aml-clone-azure-notebooks) - [Import sample notebooks into Azure Notebooks](https://aka.ms/aml-clone-azure-notebooks). - 1. Create a workspace and its configuration file (**config.json**) using [these instructions](https://aka.ms/aml-how-to-configure-environment). - 1. Select `+New` in the toolbar to add your **config.json** file to the same folder as the notebook. - 1. Open the notebook. +## Use Azure Notebooks - Jupyter based notebooks in the Azure cloud -* **Your own notebook server** +1. [![Azure Notebooks](https://notebooks.azure.com/launch.png)](https://aka.ms/aml-clone-azure-notebooks) +[Import sample notebooks ](https://aka.ms/aml-clone-azure-notebooks) into Azure Notebooks if they are not already there. +1. Create a workspace and its configuration file (**config.json**) using [these instructions](https://aka.ms/aml-how-to-configure-environment). +1. Select `+New` in the Azure Notebook toolbar to add your **config.json** file to the imported folder. + ![upload config file to notebook folder](images/additems.png) +1. Open the notebook. + + **Make sure the Azure Notebook kernal is set to `Python 3.6`** when you open a notebook. + + ![set kernal to Python 3.6](images/python36.png) - > Note: **Looking for automated machine learning samples?** - > For your convenience, you can use a script to install instead. Go to the [automl folder README](automl/readme.md) and follow the instructions. - 1. Use [these instructions](https://aka.ms/aml-how-to-configure-environment) to: - * Create a workspace and its configuration file (**config.json**). - * Configure your notebook server. - 1. Clone this repository. - 1. Add your **config.json** file to the cloned folder - you may need to install other packages for specific notebooks. - 1. Start your notebook server. - 1. Open the notebook you want to run. +## **Use your own notebook server** + +1. Use [these instructions](https://aka.ms/aml-how-to-configure-environment) to: + * Create a workspace and its configuration file (**config.json**). + * Configure your notebook server. +1. Clone [this repository](https://aka.ms/aml-notebooks). +1. Add your **config.json** file to the cloned folder +1. You may need to install other packages for specific notebooks +1. Start your notebook server. +1. Open the notebook you want to run. + +> Note: **Looking for automated machine learning samples?** +> For your convenience, you can use an installation script instead of the steps below for the automated ML notebooks. Go to the [automl folder README](automl/readme.md) and follow the instructions. The script installs all packages needed for notebooks in that folder. # Contributing diff --git a/automl/README.md b/automl/README.md index bd1ad392..c4d5e476 100644 --- a/automl/README.md +++ b/automl/README.md @@ -1,22 +1,34 @@ # Table of Contents -1. [Auto ML Introduction](#introduction) +1. [Automated ML Introduction](#introduction) 2. [Running samples in a Local Conda environment](#localconda) 3. [Auto ML SDK Sample Notebooks](#samples) 4. [Documentation](#documentation) 5. [Running using python command](#pythoncommand) 6. [Troubleshooting](#troubleshooting) -# Automated machine learning introduction +# Automated ML introduction Automated machine learning (automated ML) builds high quality machine learning models for you by automating model and hyperparameter selection. Bring a labelled dataset that you want to build a model for, automated ML will give you a high quality machine learning model that you can use for predictions. If you are new to Data Science, automated ML will help you get jumpstarted by simplifying machine learning model building. It abstracts you from needing to perform model selection, hyperparameter selection and in one step creates a high quality trained model for you to use. If you are an experienced data scientist, automated ML will help increase your productivity by intelligently performing the model and hyperparameter selection for your training and generates high quality models much quicker than manually specifying several combinations of the parameters and running training jobs. automated ML provides visibility and access to all the training jobs and the performance characteristics of the models to help you further tune the pipeline if you desire. +## Running samples in Azure Notebooks - Jupyter based notebooks in the Azure cloud -# Running samples in a Local Conda environment +1. [![Azure Notebooks](https://notebooks.azure.com/launch.png)](https://aka.ms/aml-clone-azure-notebooks) +[Import sample notebooks ](https://aka.ms/aml-clone-azure-notebooks) into Azure Notebooks if they are not already there. +1. Create a workspace and its configuration file (**config.json**) using [these instructions](https://aka.ms/aml-how-to-configure-environment). +1. Select `+New` in the Azure Notebook toolbar to add your **config.json** file to the imported folder. + ![upload config file to notebook folder](../images/additems.png) +1. Open the notebook. + + **Make sure the Azure Notebook kernal is set to `Python 3.6`** when you open a notebook. + + ![set kernal to Python 3.6](../images/python36.png) -You can run these notebooks in Azure Notebooks without any extra installation. To run these notebook on your own notebook server, use these installation instructions. +## Running samples in a Local Conda environment + +To run these notebook on your own notebook server, use these installation instructions. It is best if you create a new conda environment locally to try this SDK, so it doesn't mess up with your existing Python environment. @@ -143,11 +155,6 @@ automl_setup_linux.sh - [13.auto-ml-dataprep.ipynb](13.auto-ml-dataprep.ipynb) - Using DataPrep for reading data -- [14a.auto-ml-classification-ensemble.ipynb](14a.auto-ml-classification-ensemble.ipynb) - - Classification with ensembling - -- [14b.auto-ml-regression-ensemble.ipynb](14b.auto-ml-regression-ensemble.ipynb) - - Regression with ensembling # Documentation ## Table of Contents diff --git a/images/additems.png b/images/additems.png new file mode 100644 index 0000000000000000000000000000000000000000..696300fd4898e942d002008754ec973af5d59f36 GIT binary patch literal 19034 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 R^Pl@}>dM+m6$+L?{|lW>He3Jz literal 0 HcmV?d00001 From 97dbb3797d86f41f3f6909f7c356eb0a91fa5ce2 Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Fri, 21 Sep 2018 22:20:52 -0500 Subject: [PATCH 2/6] fix link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 923aa0da..c2b8e0b8 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ To run the notebooks in this repository use one of these methods: 1. Open the notebook you want to run. > Note: **Looking for automated machine learning samples?** -> For your convenience, you can use an installation script instead of the steps below for the automated ML notebooks. Go to the [automl folder README](automl/readme.md) and follow the instructions. The script installs all packages needed for notebooks in that folder. +> For your convenience, you can use an installation script instead of the steps below for the automated ML notebooks. Go to the [automl folder README](automl/README.md) and follow the instructions. The script installs all packages needed for notebooks in that folder. # Contributing From 087a20366730538f3938bbef52e4911653815082 Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Fri, 21 Sep 2018 22:39:51 -0500 Subject: [PATCH 3/6] fix toc --- automl/README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/automl/README.md b/automl/README.md index c4d5e476..75ac7bea 100644 --- a/automl/README.md +++ b/automl/README.md @@ -1,10 +1,11 @@ # Table of Contents 1. [Automated ML Introduction](#introduction) -2. [Running samples in a Local Conda environment](#localconda) -3. [Auto ML SDK Sample Notebooks](#samples) -4. [Documentation](#documentation) -5. [Running using python command](#pythoncommand) -6. [Troubleshooting](#troubleshooting) +1. [Running samples in Azure Notebooks](#jupyter) +1. [Running samples in a Local Conda environment](#localconda) +1. [Auto ML SDK Sample Notebooks](#samples) +1. [Documentation](#documentation) +1. [Running using python command](#pythoncommand) +1. [Troubleshooting](#troubleshooting) # Automated ML introduction Automated machine learning (automated ML) builds high quality machine learning models for you by automating model and hyperparameter selection. Bring a labelled dataset that you want to build a model for, automated ML will give you a high quality machine learning model that you can use for predictions. @@ -13,7 +14,7 @@ If you are new to Data Science, automated ML will help you get jumpstarted by si If you are an experienced data scientist, automated ML will help increase your productivity by intelligently performing the model and hyperparameter selection for your training and generates high quality models much quicker than manually specifying several combinations of the parameters and running training jobs. automated ML provides visibility and access to all the training jobs and the performance characteristics of the models to help you further tune the pipeline if you desire. -## Running samples in Azure Notebooks - Jupyter based notebooks in the Azure cloud +## Running samples in Azure Notebooks - Jupyter based notebooks in the Azure cloud 1. [![Azure Notebooks](https://notebooks.azure.com/launch.png)](https://aka.ms/aml-clone-azure-notebooks) [Import sample notebooks ](https://aka.ms/aml-clone-azure-notebooks) into Azure Notebooks if they are not already there. From cedf8ef8384f0584f9068a110ceb14e86795fd44 Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Fri, 21 Sep 2018 22:48:28 -0500 Subject: [PATCH 4/6] updates --- automl/README.md | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/automl/README.md b/automl/README.md index 75ac7bea..c93ccf41 100644 --- a/automl/README.md +++ b/automl/README.md @@ -2,19 +2,21 @@ 1. [Automated ML Introduction](#introduction) 1. [Running samples in Azure Notebooks](#jupyter) 1. [Running samples in a Local Conda environment](#localconda) -1. [Auto ML SDK Sample Notebooks](#samples) +1. [Automated ML SDK Sample Notebooks](#samples) 1. [Documentation](#documentation) 1. [Running using python command](#pythoncommand) 1. [Troubleshooting](#troubleshooting) -# Automated ML introduction + +# Automated ML introduction Automated machine learning (automated ML) builds high quality machine learning models for you by automating model and hyperparameter selection. Bring a labelled dataset that you want to build a model for, automated ML will give you a high quality machine learning model that you can use for predictions. If you are new to Data Science, automated ML will help you get jumpstarted by simplifying machine learning model building. It abstracts you from needing to perform model selection, hyperparameter selection and in one step creates a high quality trained model for you to use. If you are an experienced data scientist, automated ML will help increase your productivity by intelligently performing the model and hyperparameter selection for your training and generates high quality models much quicker than manually specifying several combinations of the parameters and running training jobs. automated ML provides visibility and access to all the training jobs and the performance characteristics of the models to help you further tune the pipeline if you desire. -## Running samples in Azure Notebooks - Jupyter based notebooks in the Azure cloud + +## Running samples in Azure Notebooks - Jupyter based notebooks in the Azure cloud 1. [![Azure Notebooks](https://notebooks.azure.com/launch.png)](https://aka.ms/aml-clone-azure-notebooks) [Import sample notebooks ](https://aka.ms/aml-clone-azure-notebooks) into Azure Notebooks if they are not already there. @@ -27,7 +29,8 @@ If you are an experienced data scientist, automated ML will help increase your p ![set kernal to Python 3.6](../images/python36.png) -## Running samples in a Local Conda environment + +## Running samples in a Local Conda environment To run these notebook on your own notebook server, use these installation instructions. @@ -73,7 +76,8 @@ automl_setup_linux.sh - Please make sure you use the Python [conda env:azure_automl] kernel when trying the sample Notebooks. - Follow the instructions in the individual notebooks to explore various features in automated ML -# Auto ML SDK Sample Notebooks + +# Automated ML SDK Sample Notebooks - [00.configuration.ipynb](00.configuration.ipynb) - Register Machine Learning Services Resource Provider - Create new Azure ML Workspace @@ -100,7 +104,7 @@ automl_setup_linux.sh - [03b.auto-ml-remote-batchai.ipynb](03b.auto-ml-remote-batchai.ipynb) - Dataset: scikit learn's [digit dataset](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html#sklearn.datasets.load_digits) - - Example of using Auto ML for classification using a remote Batch AI compute for training + - Example of using automated ML for classification using a remote Batch AI compute for training - Parallel execution of iterations - Async tracking of progress - Cancelling individual iterations or entire run @@ -156,14 +160,15 @@ automl_setup_linux.sh - [13.auto-ml-dataprep.ipynb](13.auto-ml-dataprep.ipynb) - Using DataPrep for reading data - -# Documentation + +# Documentation ## Table of Contents 1. [Automated ML Settings ](#automlsettings) 2. [Cross validation split options](#cvsplits) 3. [Get Data Syntax](#getdata) -## Automated ML Settings + +## Automated ML Settings |Property|Description|Default| |-|-|-| |**primary_metric**|This is the metric that you want to optimize.

Classification supports the following primary metrics
accuracy
AUC_weighted
balanced_accuracy
average_precision_score_weighted
precision_score_weighted

Regression supports the following primary metrics
spearman_correlation
normalized_root_mean_squared_error
r2_score
normalized_mean_absolute_error
normalized_root_mean_squared_log_error| Classification: accuracy

Regression: spearman_correlation @@ -177,7 +182,8 @@ automl_setup_linux.sh |**exit_score**|*double* value indicating the target for *primary_metric*.
Once the target is surpassed the run terminates|None| |**blacklist_algos**|*Array* of *strings* indicating pipelines to ignore for Auto ML.

Allowed values for **Classification**
LogisticRegression
SGDClassifierWrapper
NBWrapper
BernoulliNB
SVCWrapper
LinearSVMWrapper
KNeighborsClassifier
DecisionTreeClassifier
RandomForestClassifier
ExtraTreesClassifier
gradient boosting
LightGBMClassifier

Allowed values for **Regression**
ElasticNet
GradientBoostingRegressor
DecisionTreeRegressor
KNeighborsRegressor
LassoLars
SGDRegressor
RandomForestRegressor
ExtraTreesRegressor|None| -## Cross validation split options + +## Cross validation split options ### K-Folds Cross Validation Use *n_cross_validations* setting to specify the number of cross validations. The training data set will be randomly split into *n_cross_validations* folds of equal size. During each cross validation round, one of the folds will be used for validation of the model trained on the remaining folds. This process repeats for *n_cross_validations* rounds until each fold is used once as validation set. Finally, the average scores accross all *n_cross_validations* rounds will be reported, and the corresponding model will be retrained on the whole training data set. @@ -187,7 +193,8 @@ Use *validation_size* to specify the percentage of the training data set that sh ### Custom train and validation set You can specify seperate train and validation set either through the get_data() or directly to the fit method. -## get_data() syntax + +## get_data() syntax The *get_data()* function can be used to return a dictionary with these values: |Key|Type|Dependency|Mutually Exclusive with|Description| @@ -203,7 +210,8 @@ The *get_data()* function can be used to return a dictionary with these values: |columns|Array of strings|data_train||*Optional* Whitelist of columns to use for features| |cv_splits_indices|Array of integers|data_train||*Optional* List of indexes to split the data for cross validation| -# Running using python command + +# Running using python command Jupyter notebook provides a File / Download as / Python (.py) option for saving the notebook as a Python file. You can then run this file using the python command. However, on Windows the file needs to be modified before it can be run. @@ -213,7 +221,8 @@ The following condition must be added to the main code in the file: The main code of the file must be indented so that it is under this condition. -# Troubleshooting + +# Troubleshooting ## Iterations fail and the log contains "MemoryError" This can be caused by insufficient memory on the DSVM. Automated ML loads all training data into memory. So, the available memory should be more than the training data size. If you are using a remote DSVM, memory is needed for each concurrent iteration. The concurrent_iterations setting specifies the maximum concurrent iterations. For example, if the training data size is 8Gb and concurrent_iterations is set to 10, the minimum memory required is at least 80Gb. From a06da4d7a787abdec8dbf7e39312087356064195 Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Sun, 23 Sep 2018 16:16:21 -0500 Subject: [PATCH 5/6] updates from Jeff, Gaurav --- automl/README.md | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/automl/README.md b/automl/README.md index c93ccf41..e66bdcc4 100644 --- a/automl/README.md +++ b/automl/README.md @@ -34,7 +34,20 @@ If you are an experienced data scientist, automated ML will help increase your p To run these notebook on your own notebook server, use these installation instructions. -It is best if you create a new conda environment locally to try this SDK, so it doesn't mess up with your existing Python environment. +The instructions below will install everything you need and then start a Jupyter notebook. To start your Jupyter notebook manually, use: + +``` +conda activate azure_automl +jupyter notebook +``` + +or on Mac: + +``` +source activate azure_automl +jupyter notebook +``` + ### 1. Install mini-conda from [here](https://conda.io/miniconda.html), choose Python 3.7 or higher. - **Note**: if you already have conda installed, you can keep using it but it should be version 4.4.10 or later (as shown by: conda -V). If you have a previous version installed, you can update it using the command: conda update conda. @@ -64,12 +77,11 @@ bash automl_setup_mac.sh cd to the **automl** folder where the sample notebooks were extracted and then run: ``` -automl_setup_linux.sh +bash automl_setup_linux.sh ``` ### 4. Running configuration.ipynb - Before running any samples you next need to run the configuration notebook. Click on 00.configuration.ipynb notebook -- Please make sure you use the Python [conda env:azure_automl] kernel when running this notebook. - Execute the cells in the notebook to Register Machine Learning Services Resource Provider and create a workspace. (*instructions in notebook*) ### 5. Running Samples @@ -164,8 +176,9 @@ automl_setup_linux.sh # Documentation ## Table of Contents 1. [Automated ML Settings ](#automlsettings) -2. [Cross validation split options](#cvsplits) -3. [Get Data Syntax](#getdata) +1. [Cross validation split options](#cvsplits) +1. [Get Data Syntax](#getdata) +1. [Data pre-processing and featurization](#preprocessing) ## Automated ML Settings @@ -210,6 +223,21 @@ The *get_data()* function can be used to return a dictionary with these values: |columns|Array of strings|data_train||*Optional* Whitelist of columns to use for features| |cv_splits_indices|Array of integers|data_train||*Optional* List of indexes to split the data for cross validation| + +## Data pre-processing and featurization +If you use "preprocess=True", the following data preprocessing steps are performed automatically for you: + +1. Dropping high cardinality or no variance features + - Features with no useful information are dropped from training and validation sets. These include features with all values missing, same value across all rows or with extremely high cardinality (e.g., hashes, IDs or GUIDs). +2. Missing value imputation + - For numerical features, missing values are imputed with average of values in the column. + - For categorical features, missing values are imputed with most frequent value. +3. Generating additional features + - For DateTime features: Year, Month, Day, Day of week, Day of year, Quarter, Week of the year, Hour, Minute, Second. + - For Text features: Term frequency based on bi-grams and tri-grams, Count vectorizer. +4. Transformations and encodings + - Numeric features with very few unique values are transformed into categorical features. + # Running using python command Jupyter notebook provides a File / Download as / Python (.py) option for saving the notebook as a Python file. From 18eeb35d371200ad56279e29175ad79b3d1b731f Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Sun, 23 Sep 2018 16:20:07 -0500 Subject: [PATCH 6/6] formatting --- automl/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automl/README.md b/automl/README.md index e66bdcc4..d9753f0f 100644 --- a/automl/README.md +++ b/automl/README.md @@ -225,7 +225,7 @@ The *get_data()* function can be used to return a dictionary with these values: ## Data pre-processing and featurization -If you use "preprocess=True", the following data preprocessing steps are performed automatically for you: +If you use `preprocess=True`, the following data preprocessing steps are performed automatically for you: 1. Dropping high cardinality or no variance features - Features with no useful information are dropped from training and validation sets. These include features with all values missing, same value across all rows or with extremely high cardinality (e.g., hashes, IDs or GUIDs).