The application demonstrates usage of IBM Watson Machine Learning Bluemix offering.
Application is based on Node.js and Express framework and utilizes IBM Watson Machine Learning REST API.
Within this sample scoring application you are able to:
- select one of online deployments (scoring)
- select one of customers
- make score requests by using 'Generate Predictions' button
- display predicted recommendations for selected customer
- IBM ID to login to Bluemix; see free trial article if you don't yet have it
- Cloud Foundry command line interface (only if you want to manually deploy to Bluemix)
- Node.js runtime (only if you want to modify the source code)
- From Bluemix catalog choose IBM Watson Machine Learning service. This service will later be binded with a Node.js application created from this sample.
- Using the IBM Watson Machine Learning Dashboard, add the Product Line Prediction model as described here. A custom model can also be used; the requirement is that its input schema matches following schema:
[{"name": "GENDER", "type": "string"},
{"name": "AGE", "type": "integer"},
{"name": "MARITAL_STATUS", "type": "string"},
{"name": "PROFESSION", "type": "string"}]
- Create deployment of type online using Product Line Prediction model.
For a fast start, you can deploy the pre-built app to Bluemix either by clicking the button
or using Watson Machine Learning Dashboard -> Samples -> (+) button.
Note: the application is fully functional only if binded with an instance of IBM Watson Machine Learning service, which needs to be done manually. Check instructions how to do it.
As an alternative to the button, the application can be manually deployed to Bluemix by pushing it with Cloud Foundry commands, as described in next section. Manual deployment is also required when you want to deploy modified source code. Manual deployment consists of pushing the application to Bluemix followed with binding IBM Watson Machine Learning service to deployed application.
To push an application to Bluemix, open a shell, change to directory of your application and execute:
cf api <region>
where <region> part may be https://api.ng.bluemix.net or https://api.eu-gb.bluemix.net depending on the Bluemix region you want to work with (US or Europe, respectively)cf login
which is interactive; provide all required datacf push <app-name>
where <app-name> is the application name of your choice
cf push
can also read the manifest file, see Cloud Foundry Documentation. If you decide to use manifest, you can hardcode the name of your instance of IBM Watson Machine Learning service instead of binding it manually, see services section manifest.yml.template file.
If this is your first Bluemix Node.js application, refer documentation of node-helloworld project to gain general experience.
See instructions
Running the application locally is useful when you want to test your changes before deploying them to Bluemix. To see how to work with source code, see Source code changes.
When the changes are ready, open a shell, change directory to your cloned repository and execute npm start
to start the application. The running application is available in a browser at http://localhost:6001 url.
Application run locally can also use Bluemix IBM Watson Machine Learning service, see instructions how to link it.
The repository comes with pre-build app. If you want to rebuild application after modifying the sources:
- Follow steps listed in Requirements section
- Change to directory with downloaded source code or cloned git repo
- Execute
npm install
- Execute
./node_modules/.bin/webpack
The source code placed in service-client.js file is an example of how to call IBM Watson Machine Learning REST API through JavaScript code. It demonstrates following aspects:
- Access token generation
- Retrieval of online deployments
- Extracting model from a deployment to make sure the deployment's model has expected schema
- Scoring with a chosen online deployment
As stated in Requirements section, from Bluemix catalog order an instance of IBM Watson Machine Learning service if you don't yet have it. Next step is to connect your deployed application with service, which is called binding. There are a few options to achieve that in Bluemix environment, link describes binding either by Bluemix user interface or by using cf cli.
- Open your instance of IBM Watson Machine Learning.
- Go to Service Credentials pane and press View Credentials. Copy json provided (url, username, password).
- Create ./config/local.json file by copying ./config/local.json.template file. Edit the local.json file and paste obtained pm-20 credentials.
- Start your local application. You should be able to interact with the IBM Watson Machine Learning service e.g. by listing the deployments.
The code is available under the Apache License, Version 2.0.