DISCLAIMER: This application is used for demonstrative and illustrative purposes only and does not constitute an offering that has gone through regulatory review.
Create and deploy a scoring model to predict heart failure on IBM Cloud with the Watson Data Platform
In this Code Pattern, we will use a Jupyter Notebook on IBM Data Science Experience to build a predictive model that demonstrates a potential health care use case. This a customized version of the Node.js sample app that is available with the Watson Machine Learning Service on IBM Cloud. See the original app for a walkthrough of the source code.
When the reader has completed this Code Pattern, they will understand how to:
- Build a predictive model within a Jupyter Notebook
- Deploy the model to IBM Watson Machine Learning service
- Access the Machine Learning model via either APIs or a Nodejs app
- The developer creates an IBM Data Science Experience Workspace.
- IBM Data Science Experience depends on an Apache Spark service.
- IBM Data Science Experience uses Cloud Object storage to manage your data.
- This lab is built around a Jupyter Notebook, this is where the developer will import data, train, and evaluate their model.
- Import data on heart failure.
- Trained models are deployed into production using IBM's Watson Machine Learning Service.
- A Node.js web app is deployed on IBM Cloud calling the predictive model hosted in the Watson Machine Learning Service.
- A user visits the web app, enters their information, and the predictive model returns a response.
- IBM Data Science Experience: Analyze data using RStudio, Jupyter, and Python in a configured, collaborative environment that includes IBM value-adds, such as managed Spark.
- Jupyter Notebook: An open source web application that allows you to create and share documents that contain live code, equations, visualizations, and explanatory text.
- PixieDust: Provides a Python helper library for IPython Notebook.
- Artificial Intelligence: Artificial intelligence can be applied to disparate solution spaces to deliver disruptive technologies.
- Data Science: Systems and scientific methods to analyze structured and unstructured data in order to extract knowledge and insights.
- Node.js: An open-source JavaScript run-time environment for executing server-side JavaScript code.
TBD
- Deploy the testing application
- Create an instance of the Watson Machine Learning Service
- Create an instance of the Data Science Experience Service
- Create a project in IBM Data Science Experience and bind it to your Watson Machine Learning service instance
- Save the credentials for your Watson Machine Learning Service
- Create a notebook in IBM Data Science Experience
- Run the notebook in IBM Data Science Experience
- Deploy the saved predictive model as a scoring service
-
An account on [IBM Data Science Experience] (https://datascience.ibm.com).
-
A space in IBM Cloud US South or United Kingdom regions.
As of 2/5/2018, the Machine Learning service on IBM Cloud is only available in the US South or United Kingdom regions.
Use Ctrl-click on the Deploy to IBM Cloud
button below to open the deployment process in a separate tab.
Note: Make sure to deploy the application to the same region and space as where the Apache Spark and Cloud Object Storage services were created when you signed up for IBM Data Science Experience. Please take note of this space as later in this lab the Watson Machine Learning service needs to be deployed into the same space.
-
Click on
Deploy
to deploy the application. -
A Toolchain and Delivery Pipeline will be created for you to pull the app out of Github and deploy it in to IBM Cloud. Click on the Delivery Pipeline tile to see the status of the deployment.
-
Wait for the Deploy Stage to complete successfully.
-
In your browser go to the IBM Cloud Dashboard and click
Catalog
. -
In the navigation menu at the left, select
Data & Analytics
(underPlatform
) and then selectMachine Learning
. -
Verify this service is being created in the same space as the app in Step 1.
-
Click
Create
. -
On the Watson ML Dashboard select
Connections
on left menu panel, andCreate Connection
. Select the application that you deployed earlier in Step 1 of this lab connecting this Watson ML service to the Cloud Foundry application deployed. -
Click
Restage
when you’re prompted to restage your application. -
Go back to the IBM Cloud dashboard and wait until the app shows that it is running again.
-
In your browser go to the IBM Cloud Dashboard and click
Catalog
. -
In the navigation menu at the left, select
Data & Analytics
(underPlatform
) and then selectData Science Experience
. -
Verify this service is being created in the same space as the app in Step 2.
-
Click
Create
4. Create a project in IBM Data Science Experience and bind it to your Watson Machine Learning service instance
-
In a new browser tab go to https://datascience.ibm.com.
-
Click on
Sign In
at the top of the page. -
From the dashboard, click on
New Project
from the dashboard. -
DSX projects depend on two services: Object Storage, and a Compute Engine. If you don't already have Object Storage or a Compute Engine, you can create a new instance of each service while defining a new project. The New Project panel is easy to use, either select an existing service on the right, or create a new one. In the example below services need to be created.
Note: Services created must be in the same region, and space, as your Data Science Experience service.
-
Enter Watson ML Integration as the project name and click
Create
. -
From within the new project
Overview
panel, clickAdd to project
on the top right, selectingData asset
.A panel on the right of the screen appears, select
load
and click onBrowse
to upload the data file you'll use to create a predictive model. -
On your machine, browse to the location of the file patientdataV6.csv in this repository in the data/ directory. Select the file and click on Open (or the equivalent action for your operating system).
-
Once successfully uploaded, the file should appear in the
Data Assets
section. -
Click on
Settings
for the project. -
Click on add associated service and select
Machine Learning
. -
Choose your existing Machine Learning instance and click on
Select
. -
The Watson Machine Learning service is now listed as one of your
Associated Services
. -
Leave the browser tab open for later.
-
In a different browser tab go to http://console.bluemix.net and log in to the Dashboard.
-
Click on your Watson Machine Learning instance under
Services
. -
Click on
Service credentials
and then onView credentials
to see the credentials. -
Save the username, password and instance_id to a text file on your machine. You’ll need this information later in your Jupyter notebook.
-
If you don't have your newly created Project open, first click
Projects
->View All Projects
, and then select your newly created project from Step 4. Next, in the Data Science Experience browser tab click onOverview
and then clickadd notebooks
. -
Click on
From URL
and name the notebook Apache Spark integration with Watson ML. -
Under
Notebook URL
provide the following url: https://github.com/IBM/predictive-model-on-watson-ml/blob/master/demo1.ipynb -
Click
Create Notebook
to create the new notebook.
-
Place your cursor in the first code block in the notebook.
-
Click on the
Find and Add
data icon -- see step 1 in diagram below -- and then selectInsert to code
under the file patientdataV6.csv. This is step 2 in diagram below. Finally selectInsert Spark Data Frame
-- which is step 3 in diagram below.
Note: Make sure to rename the variable to
df_data
and add.option('inferSchema','True')\
.
-
Click on the
Run
icon to run the code in the cell. -
Move your cursor to each code cell and run the code in it. Read the comments for each cell to understand what the code is doing. Important when the code in a cell is still running, the label to the left changes to In [*]:. Do not continue to the next cell until the code is finished running.
-
When you get to the cell that says
Stop here !!!!
insert the username and password that you saved from your Watson Machine Learning instance into the code before running it. -
Continue running each cell until you finish the entire notebook.
-
In a different browser tab go to http://console.bluemix.net and log in to your dashboard.
-
Click on the entry for your Watson Machine Learning service under
Services
. -
Click
Manage
and then click on theLaunch Dashboard
button in the Watson Machine Learning tile.
- Your saved model should appear. Under
Actions
selectCreate Deployment
.
- Name the deployment Heart Failure Prediction Model Deployment and click
Save
. Keep the type of deployment set to the default value 'Online'.
- Your model should now be deployed and visible as a Deployment with status 'ACTIVE'.
- Restart the Node.js Web App. For this, return to your IBM Cloud Dashboard and select the restart icon to restart the web application.
- Click on the application URL to open the application in a separate tab.
-
When the application appears click on
Score now
to test the scoring model with the default values. -
Verify that the model predicts that there is a risk of heart failure for the patient with these medical characteristics.
Click Close
. Run the app again with the following parameters.
- Verify that the model predicts that there is not a risk of heart failure for the patient with these medical characteristics.
If using the Deploy to IBM Cloud
button some metrics are tracked, the following
information is sent to a Deployment Tracker service
on each deployment:
- Node.js package version
- Node.js repository URL
- Application Name (
application_name
) - Application GUID (
application_id
) - Application instance index number (
instance_index
) - Space ID (
space_id
) - Application Version (
application_version
) - Application URIs (
application_uris
) - Labels of bound services
- Number of instances for each bound service and associated plan information
This data is collected from the package.json
file in the sample application and the VCAP_APPLICATION
and VCAP_SERVICES
environment variables in IBM Cloud and other Cloud Foundry platforms. This data is used by IBM to track metrics around deployments of sample applications to IBM Cloud to measure the usefulness of our examples, so that we can continuously improve the content we offer to you. Only deployments of sample applications that include code to ping the Deployment Tracker service will be tracked.
To disable tracking, simply remove require("cf-deployment-tracker-client").track();
from the app.js
file in the top level directory.
- More data science journeys on IBM Code: https://developer.ibm.com/code/journey/category/data-science/
- IBM Data Science Experience: https://www.ibm.com/analytics/us/en/watson-data-platform/data-science-experience/
- Watson Data Platform: https://www.ibm.com/analytics/us/en/watson-data-platform/
- Artificial Intelligence Code Patterns: Enjoyed this Code Pattern? Check out our other AI Code Patterns.
- Data Analytics Code Patterns: Enjoyed this Code Pattern? Check out our other Data Analytics Code Patterns
- AI and Data Code Pattern Playlist: Bookmark our playlist with all of our Code Pattern videos
- With Watson: Want to take your Watson app to the next level? Looking to utilize Watson Brand assets? Join the With Watson program to leverage exclusive brand, marketing, and tech resources to amplify and accelerate your Watson embedded commercial solution.
- Data Science Experience: Master the art of data science with IBM's Data Science Experience
- Spark on IBM Cloud: Need a Spark cluster? Create up to 30 Spark executors on IBM Cloud with our Spark service