From 5bfad12ccf288f46f719e2812c81bac79ee110d5 Mon Sep 17 00:00:00 2001 From: Nabeel Date: Thu, 28 May 2020 16:18:25 +1000 Subject: [PATCH] Retire skater, update spaCy Retired the skater module. Updated to scikit-learn 0.23.1 which has the new capability to calculate feature importances. Updated to spaCy 2.2.4 and applied related fixes. Doc updates. --- Qlik-Py-Init.bat | 8 +++---- Qlik-Py-Init.ps1 | 8 +++---- README.md | 18 +++++++------- core/_common.py | 2 +- core/_sklearn.py | 46 +++++++++++------------------------- core/_spacy.py | 36 ++++++++++++++++++++++++---- core/_utils.py | 16 +++++++++---- docker/Dockerfile v.8.0 | 37 +++++++++++++++++++++++++++++ docs/Pretrained.md | 47 +++++++++++++++++++++++++------------ docs/README.md | 18 +++++++------- docs/images/YouTube-03.png | Bin 0 -> 111513 bytes 11 files changed, 154 insertions(+), 82 deletions(-) create mode 100644 docker/Dockerfile v.8.0 create mode 100644 docs/images/YouTube-03.png diff --git a/Qlik-Py-Init.bat b/Qlik-Py-Init.bat index be2b079..9073d49 100644 --- a/Qlik-Py-Init.bat +++ b/Qlik-Py-Init.bat @@ -14,13 +14,13 @@ cd .. echo. echo Installing required packages... & echo. python -m pip install --upgrade setuptools pip +pip install wheel==0.34.2 pip install grpcio==1.26.0 grpcio-tools==1.26.0 numpy==1.17.5 scipy==1.4.1 pandas==0.25.3 cython==0.29.14 joblib==0.11 holidays==0.9.11 pyyaml==5.3 pip install pystan==2.17 pip install fbprophet==0.4.post2 -pip install scikit-learn==0.21.3 -pip install hdbscan==0.8.23 -pip install skater==1.1.2 -pip install spacy==2.1.4 +pip install scikit-learn==0.23.1 +pip install hdbscan==0.8.26 +pip install spacy==2.2.4 pip install efficient_apriori==1.0.0 pip install tensorflow==1.14.0 pip install keras==2.2.5 diff --git a/Qlik-Py-Init.ps1 b/Qlik-Py-Init.ps1 index 13d9269..b068211 100644 --- a/Qlik-Py-Init.ps1 +++ b/Qlik-Py-Init.ps1 @@ -8,13 +8,13 @@ Write-Output "Activating the virtual environment..." & $PSScriptRoot\qlik-py-env\Scripts\activate.ps1 Write-Output "Installing required packages..." python -m pip install --upgrade setuptools pip +pip install wheel==0.34.2 pip install grpcio==1.26.0 grpcio-tools==1.26.0 numpy==1.17.5 scipy==1.4.1 pandas==0.25.3 cython==0.29.14 joblib==0.11 holidays==0.9.11 pyyaml==5.3 pip install pystan==2.17 pip install fbprophet==0.4.post2 -pip install scikit-learn==0.21.3 -pip install hdbscan==0.8.23 -pip install skater==1.1.2 -pip install spacy==2.1.4 +pip install scikit-learn==0.23.1 +pip install hdbscan==0.8.26 +pip install spacy==2.2.4 pip install efficient_apriori==1.0.0 pip install tensorflow==1.14.0 pip install keras==2.2.5 diff --git a/README.md b/README.md index 20d76c5..ff8c7f9 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,9 @@ ## Announcements -Version 7.0 has been released. Get it [here](https://github.com/nabeel-oz/qlik-py-tools/releases) or with [Docker](https://hub.docker.com/r/nabeeloz/qlik-py-tools). +Version 8.0 has been released. Get it [here](https://github.com/nabeel-oz/qlik-py-tools/releases) or with [Docker](https://hub.docker.com/r/nabeeloz/qlik-py-tools). -This release adds the capability to use pre-trained scikit-learn and Keras models with Qlik. More on this [here](docs/Pretrained.md). - -With version 6, Deep Learning capabilities were added through integration with Keras and Tensorflow. This offers powerful capabilities for sequence predictions and complex timeseries forecasting. - -PyTools now also includes the ability to use [Additional Regressors](docs/Prophet.md#additional-regressors) with Prophet, allowing you to model more complex timeseries. +This release adds the capability to use pre-trained scikit-learn, Keras or REST API based models with Qlik. More on this [here](docs/Pretrained.md). ## Table of Contents @@ -31,10 +27,10 @@ Sample Qlik Sense apps are included and explained so that the techniques shown h The current implementation includes: -- **Supervised Machine Learning** : Implemented using [scikit-learn](http://scikit-learn.org/stable/index.html), the go-to machine learning library for Python. This SSE implements the full machine learning flow from data preparation, model training and evaluation, to making predictions in Qlik. In addition, models can be interpreted using [Skater](https://datascienceinc.github.io/Skater/overview.html). +- **Supervised Machine Learning** : Implemented using [scikit-learn](http://scikit-learn.org/stable/index.html), the go-to machine learning library for Python. This SSE implements the full machine learning flow from data preparation, model training and evaluation, to making predictions in Qlik. - **Unsupervised Machine Learning** : Also implemented using [scikit-learn](http://scikit-learn.org/stable/index.html). This provides capabilities for dimensionality reduction and clustering. - **Deep Learning** : Implemented using [Keras](https://keras.io/) and [TensorFlow](https://www.tensorflow.org/). This SSE implements the full flow of setting up a neural network, training and evaluating it, and using it to make predictions. Deep Learning models can be used for sequence predictions and complex timeseries forecasting. -- **Use of pretrained ML models in Qlik** : Pre-trained scikit-learn and Keras models can be called from this SSE, allowing predictions to be exposed within the broader analysis and business context of a Qlik app. The implementation also allows for What-if analysis using the models. +- **Use of pretrained ML models in Qlik** : Pre-trained scikit-learn, Keras and REST API based models can be called from this SSE, allowing predictions to be exposed within the broader analysis and business context of a Qlik app. The implementation also allows for What-if analysis using the models. - **Named Entity Recognition** : Implemented using [spaCy](https://spacy.io/), an excellent Natural Language Processing library that comes with pre-trained neural networks. This SSE allows you to use spaCy's models for Named Entity Recognition or retrain them with your data for even better results. - **Association rules** : Implemented using [Efficient-Apriori](https://github.com/tommyod/Efficient-Apriori). Association Rules Analysis is a data mining technique to uncover how items are associated to each other. This technique is best known for Market Basket Analysis, but can be used more generally for finding interesting associations between sets of items that occur together, for example, in a transaction, a paragraph, or a diagnosis. - **Clustering** : Implemented using [HDBSCAN](https://hdbscan.readthedocs.io/en/latest/comparing_clustering_algorithms.html), a high performance algorithm that is great for exploratory data analysis. @@ -57,6 +53,10 @@ Deep Learning & Additional Regressors with Prophet: [![Demonstration Video 2](docs/images/YouTube-02.png)](https://youtu.be/KM0Fo1wdMYw) +Clustering COVID-19 Literature: + +[![Demonstration Video 3](docs/images/YouTube-03.png)](https://youtu.be/5fYWgglx84M) + ## Note on the approach In this project we have defined functions that expose open source algorithms to Qlik using the [gRPC framework](http://www.grpc.io/). Each function allows the user to define input data and parameters to control the underlying algorithm's output. @@ -143,7 +143,7 @@ This installation requires Internet access. To install this SSE on a machine wit 4. Right click `Qlik-Py-Init.bat` and chose 'Run as Administrator'. You can open this file in a text editor to review the commands that will be executed. If everything goes smoothly you will see a Python virtual environment being set up, project files being copied, some packages being installed and TCP Port `50055` being opened for inbound communication. - Note that the script always ends with a "All done" message and does not check for errors. - If you need to change the port you can do so in the file `core\__main__.py` by opening the file with a text editor, changing the value of the `_DEFAULT_PORT` variable, and then saving the file. You will also need to update `Qlik-Py-Init.bat` to use the same port in the `netsh` command. This command will only work if you run the batch file through an elevated command prompt (i.e. with administrator privileges). - - Once the execution completes, do a quick scan of the log to see everything installed correctly. The libraries imported are: `grpcio`, `grpcio-tools`, `numpy`, `scipy`, `pandas`, `cython`, `joblib`, `pyyaml`, `pystan`, `fbprophet`, `scikit-learn`, `hdbscan`, `skater`, `spacy`, `efficient-apriori`, `tensorflow`, `keras` and their dependencies. Also, check that the `core` and `generated` directories have been copied successfully to the newly created `qlik-py-env` directory. + - Once the execution completes, do a quick scan of the log to see everything installed correctly. The libraries imported are: `grpcio`, `grpcio-tools`, `numpy`, `scipy`, `pandas`, `cython`, `joblib`, `pyyaml`, `pystan`, `fbprophet`, `scikit-learn`, `hdbscan`, `spacy`, `efficient-apriori`, `tensorflow`, `keras` and their dependencies. Also, check that the `core` and `generated` directories have been copied successfully to the newly created `qlik-py-env` directory. - If the initialization fails for any reason, you can simply delete the `qlik-py-env` directory and re-run `Qlik-Py-Init.bat`. 5. Now whenever you want to start this Python service you can run `Qlik-Py-Start.bat`. diff --git a/core/_common.py b/core/_common.py index 16d9f34..4699c6a 100644 --- a/core/_common.py +++ b/core/_common.py @@ -485,7 +485,7 @@ def _get_rest_response(self, X): predictions_df = pd.DataFrame(predictions).astype("str") # Return the required column from the response dataframe - y = predictions_df.iloc[:,0].values if self.prediction_func == 'predict' else predictions_df['self.prediction_func'].values + y = predictions_df.iloc[:,0].values if self.prediction_func == 'predict' else predictions_df[self.prediction_func].values return y def _add_model_path(self, model_path): diff --git a/core/_sklearn.py b/core/_sklearn.py index d2d7d81..7448b16 100644 --- a/core/_sklearn.py +++ b/core/_sklearn.py @@ -54,8 +54,7 @@ from sklearn.cluster import AffinityPropagation, AgglomerativeClustering, Birch, DBSCAN, FeatureAgglomeration, KMeans,\ MiniBatchKMeans, MeanShift, SpectralClustering -from skater.model import InMemoryModel -from skater.core.explanations import Interpretation +from sklearn.inspection import permutation_importance # Workaround for Keras issue #1406 # "Using X backend." always printed to stdout #1406 @@ -1604,6 +1603,7 @@ def _set_params(self, estimator_args, scaler_args, execution_args, metric_args=N self.model.estimator_kwargs = {} self.model.missing = "zeros" self.model.calc_feature_importances = False + self.model.importances_n_repeats = 30 self.model.lags= None self.model.lag_target = False self.model.scale_target = False @@ -1714,6 +1714,10 @@ def _set_params(self, estimator_args, scaler_args, execution_args, metric_args=N # Flag to determine if feature importances should be calculated when the fit method is called if 'calculate_importances' in execution_args: self.model.calc_feature_importances = 'true' == execution_args['calculate_importances'].lower() + + # Sets the number of times a feature is randomly shuffled during the feature importance calculation + if 'importances_n_repeats' in execution_args: + self.model.importances_n_repeats = utils.atoi(execution_args['importances_n_repeats']) # Set the debug option for generating execution logs # Valid values are: true, false @@ -1734,7 +1738,8 @@ def _set_params(self, estimator_args, scaler_args, execution_args, metric_args=N "time_series_split": self.model.time_series_split, "max_train_size":self.model.max_train_size, "lags":self.model.lags,\ "lag_target":self.model.lag_target, "scale_target":self.model.scale_target, "make_stationary":self.model.make_stationary,\ "random_state":self.model.random_state, "compress":self.model.compress, "retain_data":self.model.retain_data,\ - "calculate_importances": self.model.calc_feature_importances, "debug":self.model.debug} + "calculate_importances": self.model.calc_feature_importances, "importances_n_repeats": self.model.importances_n_repeats,\ + "debug":self.model.debug} self._print_log(1) @@ -2301,41 +2306,18 @@ def _prep_confusion_matrix(self, y_test, y_pred, labels): def _calc_importances(self, X=None, y=None): """ Calculate feature importances. - Importances are calculated using the Skater library to provide this capability for all sklearn algorithms. - For more information: https://www.datascience.com/resources/tools/skater + Importances are calculated using sklearn.inspection.permutation_importance to provide this capability for all sklearn algorithms. + https://scikit-learn.org/stable/modules/permutation_importance.html """ # Fill null values in the test set according to the model settings X_test = utils.fillna(X, method=self.model.missing) - # Calculate model agnostic feature importances using the skater library - interpreter = Interpretation(X_test, training_labels=y, feature_names=self.model.features_df.index.tolist()) - - if self.model.estimator_type == "classifier": - try: - # We use the predicted probabilities from the estimator if available - predictor = self.model.pipe.predict_proba - - # Set up keyword arguments accordingly - imm_kwargs = {"probability": True} - except AttributeError: - # Otherwise we simply use the predict method - predictor = self.model.pipe.predict + # Calculate mean importances + importances = permutation_importance(self.model.pipe, X, y, n_repeats=self.model.importances_n_repeats, random_state=self.model.random_state) - # Set up keyword arguments accordingly - imm_kwargs = {"probability": False, "unique_values": self.model.pipe.classes_} - - # Set up a skater InMemoryModel to calculate feature importances - imm = InMemoryModel(predictor, examples = X_test[:10], model_type="classifier", **imm_kwargs) - - elif self.model.estimator_type == "regressor": - # Set up a skater InMemoryModel to calculate feature importances using the predict method - imm = InMemoryModel(self.model.pipe.predict, examples = X_test[:10], model_type="regressor") - - # Add the feature importances to the model as a sorted data frame - self.model.importances = interpreter.feature_importance.feature_importance(imm, progressbar=False, ascending=False) - self.model.importances = pd.DataFrame(self.model.importances).reset_index() - self.model.importances.columns = ["feature_name", "importance"] + # Structure into a dataframe + self.model.importances = pd.DataFrame({"feature_name": X_test.columns, "importance": importances.importances_mean}) def _send_table_description(self, variant): """ diff --git a/core/_spacy.py b/core/_spacy.py index 3371cda..5820222 100644 --- a/core/_spacy.py +++ b/core/_spacy.py @@ -9,6 +9,7 @@ import warnings import numpy as np import pandas as pd +from copy import copy # Suppress warnings if not sys.warnoptions: @@ -327,15 +328,42 @@ def _prep_data(self): entities = sample[1]["entities"] entity_boundaries = [] - # For each entity - for entity in entities: + # Structure the entities and types into a DataFrame + entities_df = pd.DataFrame(zip(*entities)).T + entities_df.columns = ['ents', 'types'] + + # For each unique entity + for entity in entities_df.ents.unique(): # Set up a regex pattern to look for the entity w.r.t. word boundaries - pattern = re.compile(r"\b" + entity[0] + r"\b") + pattern = re.compile(r"\b" + entity + r"\b") + + # Get entity types for the entity. This may be a series of values if the entity appears more than once. + types = entities_df[entities_df.ents == entity].types.reset_index(drop=True) + has_multiple_types = True if len(types.unique()) > 1 else False + i = 0 # Find all occurrences of the entity in the text for match in re.finditer(pattern, text): - entity_boundaries.append((match.start(), match.end(), entity[1])) + entity_boundaries.append((match.start(), match.end(), types[i])) + + # Assign types according to the series + if has_multiple_types: + i += 1 + + if len(entity_boundaries) > 0: + # Prepare variables to check for overlapping entity boundaries + start, stop, entity_type = map(list, zip(*entity_boundaries)) + + # Drop overlapping entities, i.e. where an entity is a subset of a longer entity + for i in range(len(start)): + other_start, other_stop = copy(start), copy(stop) + del other_start[i] + del other_stop[i] + + for j in range(len(other_start)): + if start[i] >= other_start[j] and stop[i] <= other_stop[j]: + entity_boundaries.remove((start[i], stop[i], entity_type[i])) # Add the entity boundaries to the sample sample[1]["entities"] = entity_boundaries diff --git a/core/_utils.py b/core/_utils.py index 928e4c6..448c54c 100644 --- a/core/_utils.py +++ b/core/_utils.py @@ -195,7 +195,7 @@ def get_kwargs_by_type(dict_kwargs): # Dictionary used to convert argument values to the correct type types = {"boolean":ast.literal_eval, "bool":ast.literal_eval, "integer":atoi, "int":atoi,\ - "float":atof, "string":str, "str":str} + "float":atof, "string":str, "str":str, "none":atonone, "None":atonone} result_dict = {} @@ -228,7 +228,7 @@ def get_kwargs_by_type(dict_kwargs): b = b.capitalize() # Handle None as an item in the dictionary - if b == "None": + if b in ("None", "none"): d[types[split[2]](a)] = None else: d[types[split[2]](a)] = types[split[3]](b) @@ -245,8 +245,8 @@ def get_kwargs_by_type(dict_kwargs): if split[2] in ("boolean", "bool"): i = i.capitalize() - # Handle None as an item in the dictionary - if i == "None": + # Handle None as an item + if i in ("None", "none"): l.append(None) else: l.append(types[split[2]](i)) @@ -417,6 +417,14 @@ def atof(a): return float(s.replace(",", ".")) +def atonone(a): + """ + Return None. + Convenience function for type conversions. + """ + + return None + def dict_to_sse_arg(d): """ Converts a dictionary to the argument syntax for this SSE diff --git a/docker/Dockerfile v.8.0 b/docker/Dockerfile v.8.0 new file mode 100644 index 0000000..b04c1d2 --- /dev/null +++ b/docker/Dockerfile v.8.0 @@ -0,0 +1,37 @@ +# Use an official Python runtime as a parent image +FROM python:3.6.8 + +# Set the working directory to /qlik-py-tools +WORKDIR /qlik-py-tools + +# Copy the current directory contents into the container at /qlik-py-tools +COPY . /qlik-py-tools + +# Install dependencies +RUN apt-get update +RUN apt-get install build-essential + +# Upgrade pip and setuptools +RUN python -m pip install --upgrade setuptools pip + +# Install required packages +RUN pip install wheel==0.34.2 +RUN pip install grpcio==1.26.0 grpcio-tools==1.26.0 numpy==1.17.5 scipy==1.4.1 pandas==0.25.3 cython==0.29.14 joblib==0.11 holidays==0.9.11 pyyaml==5.3 +RUN pip install pystan==2.17 +RUN pip install fbprophet==0.4.post2 +RUN pip install scikit-learn==0.23.1 +RUN pip install hdbscan==0.8.26 +RUN pip install spacy==2.2.4 +RUN pip install efficient_apriori==1.0.0 +RUN pip install tensorflow==1.14.0 +RUN pip install keras==2.2.5 +RUN python -m spacy download en + +# Make ports 80 and 50055 available to the world outside this container +EXPOSE 80 50055 + +# Set the working directory to /qlik-py-tools/core +WORKDIR /qlik-py-tools/core + +# Run __main__.py when the container launches +CMD ["python", "__main__.py"] \ No newline at end of file diff --git a/docs/Pretrained.md b/docs/Pretrained.md index 4046b12..2584f7d 100644 --- a/docs/Pretrained.md +++ b/docs/Pretrained.md @@ -27,31 +27,31 @@ This SSE also provides capabilities for training machine learning models entirel ## Pre-requisites -- This SSE currently supports scikit-learn and Keras models that have been saved to disk. -- The models need to be built with the same version of Python that is being used by the SSE (3.6.x). +- This SSE supports REST API based models, as well as scikit-learn and Keras models that have been saved to disk. +- Keras and scikit-learn models need to be built with the same version of Python that is being used by the SSE (3.6.x). - scikit-learn models need to be saved using the Pickle library. - Keras models need to be saved using the Keras model.save method. -- The Keras version needs to match the SSE. +- The scikit-learn and Keras version used to build the model needs to match the SSE. - Preprocessing (e.g. scaling, OHE) needs to be handled by the model / pipeline. ## Setting up the model This SSE will handle the communication between Qlik and Python and call the specified model. However, we need certain details for the model to translate the incoming data and call the model correctly. This information has to be supplied through a YAML file. -The YAML file needs to be placed in the SSE's `qlik-py-env/models` directory. The file needs to provide: +The YAML file needs to be placed in the SSE's `qlik-py-env/models` directory. The tags available for defining a model are provided below: -- **path**: Relative or absolute path to the model. -- **type**: Type of the model. - - Currently supported values are `scikit-learn`, `sklearn` and `keras`. -- **preprocessor**: Optional preprocessor to prepare data for the model. - - This has to be a path to a Python object that implements the `transform` method and has been stored using `Pickle`. - - The SSE will call the preprocessor's `transform` method on the samples received from Qlik and use its output to call the model's prediction function. -- **features**: List of features expected by the model together with their data types. - - The order of the features is important and needs to be followed by the model and the Qlik app calling the model. - - The data types are required for correctly interpreting the data received from Qlik. Valid types are `int`, `float`, `str`, `bool`. - - The names of the features should correspond to fields in the Qlik app. +| Tag | Scope | Description | Sample Values | Remarks | +| --- | --- | --- | --- | --- | +| **path** | Mandatory | Relative or absolute path to the model | `../pretrained/HR-Attrition-v1.pkl`

`http://xxx:123/public/api/v1/model/predict` | This will be a URL if the model is exposed through a REST API. | +| **type** | Mandatory | Type of the model | `scikit-learn`, `sklearn`, `keras`, `rest` | Currently this SSE only supports scikit-learn, Keras and REST API based models. | +| **response_section** | Optional. Only applicable for REST. | Defines the section of the JSON response that will be returned to Qlik | `result` | A JSON response will typically contain several sections under the root. This tag can be used to specify the section which contains the predictions to be returned to Qlik. | +| **user** | Optional. Only applicable for REST. | Used to pass the endpoint key or user in the REST call | `qlik` | Note that this SSE does not handle encryption of the YAML file on disk. | +| **password** | Optional. Only applicable for REST. | Used to pass the password in the REST call | `password` | Note that this SSE does not handle masking of the password or encryption of the YAML file on disk. | +| **payload_header** | Optional. Only applicable for REST. | Used to nest the data/payload within a section of the JSON request | `features` | A REST API may require the JSON payload in the request to be contained within a parent object, e.g. `features`. | +| **preprocessor** | Optional | Pickled preprocessor that will be called to prepare data for the model | `../pretrained/HR-Attrition-prep-v1.pkl` | This has to be a path to a Python object that implements the `transform` method and has been stored using `Pickle`. The SSE will call the preprocessor's `transform` method on the samples received from Qlik and use its output to call the model's prediction function. | +| **features** | Mandatory | List of features expected by the model together with their data types | `overtime : str`

`salary : float` | The order of the features is important and needs to be followed by the model and the Qlik app calling the model.

The data types are required for correctly interpreting the data received from Qlik. Valid types are `int`, `float`, `str`, `bool`.

The names of the features should correspond to fields in the Qlik app.

Please refer to the examples below for formatting this list. | -Here is a sample YAML file. You can also find complete examples [here](sample-scripts/HR-Attrition-v1.yaml) and [here](sample-scripts/HR-Attrition-v2.yaml). +Here is a sample YAML file for a scikit-learn model. You can also find complete examples [here](sample-scripts/HR-Attrition-v1.yaml) and [here](sample-scripts/HR-Attrition-v2.yaml). ``` --- @@ -62,6 +62,23 @@ features: salary : float ... ``` +Here is a sample YAML file for a deployed model that is exposed via a REST API. +``` +--- +path: http://xxx:123/public/api/v1/procedures/predict +type: rest +user: abc +response_section: result +payload_header: features +features: + admit_date: str + patient_status: str + proc_date: str + proc_desc: str + surg_descrp: str + surgery_type: str +... +``` ## Calling the model diff --git a/docs/README.md b/docs/README.md index 8ab86d3..0294335 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,13 +2,9 @@ ## Announcements -Version 7.0 has been released. Get it [here](https://github.com/nabeel-oz/qlik-py-tools/releases) or with [Docker](https://hub.docker.com/r/nabeeloz/qlik-py-tools). +Version 8.0 has been released. Get it [here](https://github.com/nabeel-oz/qlik-py-tools/releases) or with [Docker](https://hub.docker.com/r/nabeeloz/qlik-py-tools). -This release adds the capability to use pre-trained scikit-learn and Keras models with Qlik. More on this [here](Pretrained.md). - -With version 6, Deep Learning capabilities were added through integration with Keras and Tensorflow. This offers powerful capabilities for sequence predictions and complex timeseries forecasting. - -PyTools now also includes the ability to use [Additional Regressors](Prophet.md#additional-regressors) with Prophet, allowing you to model more complex timeseries. +This release adds the capability to use pre-trained scikit-learn, Keras or REST API based models with Qlik. More on this [here](Pretrained.md). ## Table of Contents @@ -31,10 +27,10 @@ Sample Qlik Sense apps are included and explained so that the techniques shown h The current implementation includes: -- **Supervised Machine Learning** : Implemented using [scikit-learn](http://scikit-learn.org/stable/index.html), the go-to machine learning library for Python. This SSE implements the full machine learning flow from data preparation, model training and evaluation, to making predictions in Qlik. In addition, models can be interpreted using [Skater](https://datascienceinc.github.io/Skater/overview.html). +- **Supervised Machine Learning** : Implemented using [scikit-learn](http://scikit-learn.org/stable/index.html), the go-to machine learning library for Python. This SSE implements the full machine learning flow from data preparation, model training and evaluation, to making predictions in Qlik. - **Unsupervised Machine Learning** : Also implemented using [scikit-learn](http://scikit-learn.org/stable/index.html). This provides capabilities for dimensionality reduction and clustering. - **Deep Learning** : Implemented using [Keras](https://keras.io/) and [TensorFlow](https://www.tensorflow.org/). This SSE implements the full flow of setting up a neural network, training and evaluating it, and using it to make predictions. Deep Learning models can be used for sequence predictions and complex timeseries forecasting. -- **Use of pretrained ML models in Qlik** : Pre-trained scikit-learn and Keras models can be called from this SSE, allowing predictions to be exposed within the broader analysis and business context of a Qlik app. The implementation also allows for What-if analysis using the models. +- **Use of pretrained ML models in Qlik** : Pre-trained scikit-learn, Keras and REST API based models can be called from this SSE, allowing predictions to be exposed within the broader analysis and business context of a Qlik app. The implementation also allows for What-if analysis using the models. - **Named Entity Recognition** : Implemented using [spaCy](https://spacy.io/), an excellent Natural Language Processing library that comes with pre-trained neural networks. This SSE allows you to use spaCy's models for Named Entity Recognition or retrain them with your data for even better results. - **Association rules** : Implemented using [Efficient-Apriori](https://github.com/tommyod/Efficient-Apriori). Association Rules Analysis is a data mining technique to uncover how items are associated to each other. This technique is best known for Market Basket Analysis, but can be used more generally for finding interesting associations between sets of items that occur together, for example, in a transaction, a paragraph, or a diagnosis. - **Clustering** : Implemented using [HDBSCAN](https://hdbscan.readthedocs.io/en/latest/comparing_clustering_algorithms.html), a high performance algorithm that is great for exploratory data analysis. @@ -57,6 +53,10 @@ Deep Learning & Additional Regressors with Prophet: [![Demonstration Video 2](images/YouTube-02.png)](https://youtu.be/KM0Fo1wdMYw) +Clustering COVID-19 Literature: + +[![Demonstration Video 3](docs/images/YouTube-03.png)](https://youtu.be/5fYWgglx84M) + ## Note on the approach In this project we have defined functions that expose open source algorithms to Qlik using the [gRPC framework](http://www.grpc.io/). Each function allows the user to define input data and parameters to control the underlying algorithm's output. @@ -143,7 +143,7 @@ This installation requires Internet access. To install this SSE on a machine wit 4. Right click `Qlik-Py-Init.bat` and chose 'Run as Administrator'. You can open this file in a text editor to review the commands that will be executed. If everything goes smoothly you will see a Python virtual environment being set up, project files being copied, some packages being installed and TCP Port `50055` being opened for inbound communication. - Note that the script always ends with a "All done" message and does not check for errors. - If you need to change the port you can do so in the file `core\__main__.py` by opening the file with a text editor, changing the value of the `_DEFAULT_PORT` variable, and then saving the file. You will also need to update `Qlik-Py-Init.bat` to use the same port in the `netsh` command. This command will only work if you run the batch file through an elevated command prompt (i.e. with administrator privileges). - - Once the execution completes, do a quick scan of the log to see everything installed correctly. The libraries imported are: `grpcio`, `grpcio-tools`, `numpy`, `scipy`, `pandas`, `cython`, `joblib`, `pyyaml`, `pystan`, `fbprophet`, `scikit-learn`, `hdbscan`, `skater`, `spacy`, `efficient-apriori`, `tensorflow`, `keras` and their dependencies. Also, check that the `core` and `generated` directories have been copied successfully to the newly created `qlik-py-env` directory. + - Once the execution completes, do a quick scan of the log to see everything installed correctly. The libraries imported are: `grpcio`, `grpcio-tools`, `numpy`, `scipy`, `pandas`, `cython`, `joblib`, `pyyaml`, `pystan`, `fbprophet`, `scikit-learn`, `hdbscan`, `spacy`, `efficient-apriori`, `tensorflow`, `keras` and their dependencies. Also, check that the `core` and `generated` directories have been copied successfully to the newly created `qlik-py-env` directory. - If the initialization fails for any reason, you can simply delete the `qlik-py-env` directory and re-run `Qlik-Py-Init.bat`. 5. Now whenever you want to start this Python service you can run `Qlik-Py-Start.bat`. diff --git a/docs/images/YouTube-03.png b/docs/images/YouTube-03.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea66595e3a75ba66c0d0284bc640c9bd90c507c GIT binary patch literal 111513 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 literal 0 HcmV?d00001