IBM Watson® Machine Learning helps data scientists and developers accelerate AI and machine-learning deployment. With its open, extensible model operation, Watson Machine Learning helps businesses simplify and harness AI at scale across any cloud.
DISCLAIMER: This application is used for demonstrative and illustrative purposes only and does not constitute an offering that has gone through regulatory review.
This code pattern can be thought of as two distinct parts:
-
A predictive model will be built using Spark within a Jupyter Notebook on IBM Watson Studio. The model is then deployed to the Watson Machine Learning service, where it can be accessed via a REST API.
-
A Node.js web app that allows a user to input some data to be scored against the previous model.
When the reader has completed this Code Pattern, they will understand how to:
- Build a predictive model within a Jupyter Notebook on Watson Studio
- Deploy the model to the IBM Watson Machine Learning service
- Via a Node.js app, score some data against the model via an API call to the Watson Machine Learning service
- An IBM Cloud Account
- An account on IBM Watson Studio.
To complete this code pattern we'll need to do a few setup steps before creating our model. In Watson Studio we need to: create a project, add our patient data (which our model will be based on), upload our notebook, and provision a Watson Machine Learning service.
-
Log into IBM's Watson Studio. Once in, you'll land on the dashboard.
-
Create a new project by clicking
+ New project
and choosingData Science
: -
Enter a name for the project name and click
Create
.
NOTE: By creating a project in Watson Studio a free tier
Object Storage
service will be created in your IBM Cloud account. Select theFree
storage type to avoid fees.
The data used in this example was generated using a normal distribution. Attributes such as age, gender, heartrate, minutes of exercise per week, and cholesterol are used to create the model we will eventually deploy.
-
From the new project
Overview
panel, click+ Add to project
on the top right and choose theData
asset type. -
A panel on the right of the screen will appear to assit you in uploading data. Follow the numbered steps in the image below.
- Ensure you're on the
Load
tab. [1] - Click on the
browse
option. From your machine, browse to the location of thepatientdataV6.csv
file in this repository, and upload it. [not numbered] - Once uploaded, go to the
Files
tab. [2] - Ensure the
patientdataV6.csv
appears. [3]
- Ensure you're on the
-
TIP: Once successfully uploaded, the file should appear in the
Data assets
section of theAssets
tab.
-
Click on the navigation menu on the left (
☰
) to show additional options. Click on theWatson Services
option. -
From the overview page, click
+ Add service
on the top right and choose theMachine Learning
service. Select theLite
plan to avoid fees. -
Once provisioned, you should see the service listed in the
Watson Services
overview page. Select the service by opening the link in a new tab. We're now in the IBM Cloud tool, where we will create service credentials for our now Watson Machine Learning service. Follow the numbered steps in the image below. We'll be using these credentials in Step 2, so keep them handy!. -
TIP: You can now go back the project via the navigation menu on the left (
☰
).
The notebook we'll be using can be viewed in notebooks/predictiveModel.ipynb
, and a completed version can be found in examples/exampleOutput.ipynb
.
-
From the new project
Overview
panel, click+ Add to project
on the top right and choose theNotebook
asset type. Fill in the following information:-
Select the
From URL
tab. = -
Enter a
Name
for the notebook and optionally a description. -
Under
Notebook URL
provide the following url:https://github.com/pmmistry/intro-to-jupyter-notebooks/blob/master/notebooks/intro-to-predictive-modeling.ipynb
-
Important For
Runtime
select theDefault Spark 2.3 & Python 3.6
option. [4]
-
-
TIP: Once successfully imported, the notebook should appear in the
Notebooks
section of theAssets
tab.
Now that we're in our Notebook editor, we can start to create our predictive model by stepping through the notebook.
-
Click the
(►) Run
button to start stepping through the notebook. -
When you reach the cell entitled 2. Load and explore data pause and follow the instructions in that cell. On the very next cell we need to add our data. Follow the numbered steps in the image below.
- Click on the
Data
icon. [1] - Select the
Insert to code
option under the file patientdataV6.csv. [2] - Choose the
Insert SparkSession Data Frame
option. [3]
- Click on the
-
The above step will have inserted a chunk of code into your notebook. We need to make two changes:
- Rename the
df_data_1
variable todf_data
. [1] - Re-add the line
.option('inferSchema','True')\
to thespark.read()
call. [2]
- Rename the
-
Keep stepping through the code, pausing on each step to read the code and see the output for the opertion we're performing. At the end of Step 4 we'll have used the Random Forest Classifier from PySpark to create a model LOCALLY.
The gist of the next two steps is to use the Watson Machine Learning Python client to persist and deploy the model we just created.
-
At the beginning of Step 5. Persist model, before we deploy our model, we need up update the cell with credentials from our Watson Machine Learning service. (Remember that from Step 1.3 Provision a Watson Machine Learning service?)
-
Update the
wml_credentials
variable below. Copy and paste the entire credential dictionary, which can be found on the Service Credentials tab of the Watson Machine Learning service instance created on the IBM Cloud. -
Keep stepping through the code, pausing on each step to read the code and see the output for the opertion we're performing. At the end of Step 5 we'll have used the Watson Machine Learning service to persist our predictive model! 🎉
-
Now let's run Step 6 of the notebook. Deploy our model so we can have an endpoint to score data against.
Now that we have an API, let's create a client side interface that a typical user would interact with.
Once the model is deployed you may be wondering how you can test and work with the model .
Go back to your assets tab and you should see your model Heart Failure Prediction Model
under Model asset
Once you click on your model you should see the overview of your model
Click on the Deployments
tab and click on your model . You should now see your model deployed successfully. Click on your model and you should see how you can implement your model
Once you click your model from the Deployments
tab you should see Overview
, Implementation
and Test
Click on Implementation
tab to see how you can implement your model using cUrl, Java, Javascript , Python and Scala
Click on the Test
tab to test your model by filling in the input schema
If you are interested in building a Node.js App with this model check out this tutorial