From 3e6ddef1f366768eace073c3d842acb07ae8c477 Mon Sep 17 00:00:00 2001 From: adrianmahjour <67601228+adrianmahjour@users.noreply.github.com> Date: Wed, 29 Jul 2020 11:47:43 -0400 Subject: [PATCH] Adding In-DB Scoring Demo (#25) * Reorg and External Model Deployment Demo * Reorg and External Model Deployment Demo * Reorg and External Model Deployment Demo * Updates to README * Updates to README * Updates to README * Updates to README file * Updates to README file * Added Scoring Pipeline Demo * updates to README * updates to README * updates to README * updates to README --- .../Datasets/GoSales.csv | 0 .../Datasets/Titanic.csv | 0 .../Notebooks/Classification_Demo.ipynb | 0 .../Notebooks/Regression_Demo.ipynb | 0 .../Building ML Models with Db2/README.md | 137 ++++++++++++++++ .../lib/InDBMLModules.py | 0 .../Cognos_Report_Specs.txt | 42 +++++ .../Dashboard.png | Bin 0 -> 49021 bytes .../Dashboard2.png | Bin 0 -> 34324 bytes .../Dashboard3.png | Bin 0 -> 48752 bytes .../Gear.png | Bin 0 -> 1748 bytes .../README.md | 150 ++++++++++++++++++ .../scoring_pipeline | 50 ++++++ In_Db2_Machine_Learning/README.md | 138 +--------------- 14 files changed, 382 insertions(+), 135 deletions(-) rename In_Db2_Machine_Learning/{ => Building ML Models with Db2}/Datasets/GoSales.csv (100%) rename In_Db2_Machine_Learning/{ => Building ML Models with Db2}/Datasets/Titanic.csv (100%) rename In_Db2_Machine_Learning/{ => Building ML Models with Db2}/Notebooks/Classification_Demo.ipynb (100%) rename In_Db2_Machine_Learning/{ => Building ML Models with Db2}/Notebooks/Regression_Demo.ipynb (100%) create mode 100644 In_Db2_Machine_Learning/Building ML Models with Db2/README.md rename In_Db2_Machine_Learning/{ => Building ML Models with Db2}/lib/InDBMLModules.py (100%) create mode 100644 In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Cognos_Report_Specs.txt create mode 100644 In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard.png create mode 100644 In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard2.png create mode 100644 In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard3.png create mode 100644 In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Gear.png create mode 100644 In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/README.md create mode 100644 In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/scoring_pipeline diff --git a/In_Db2_Machine_Learning/Datasets/GoSales.csv b/In_Db2_Machine_Learning/Building ML Models with Db2/Datasets/GoSales.csv similarity index 100% rename from In_Db2_Machine_Learning/Datasets/GoSales.csv rename to In_Db2_Machine_Learning/Building ML Models with Db2/Datasets/GoSales.csv diff --git a/In_Db2_Machine_Learning/Datasets/Titanic.csv b/In_Db2_Machine_Learning/Building ML Models with Db2/Datasets/Titanic.csv similarity index 100% rename from In_Db2_Machine_Learning/Datasets/Titanic.csv rename to In_Db2_Machine_Learning/Building ML Models with Db2/Datasets/Titanic.csv diff --git a/In_Db2_Machine_Learning/Notebooks/Classification_Demo.ipynb b/In_Db2_Machine_Learning/Building ML Models with Db2/Notebooks/Classification_Demo.ipynb similarity index 100% rename from In_Db2_Machine_Learning/Notebooks/Classification_Demo.ipynb rename to In_Db2_Machine_Learning/Building ML Models with Db2/Notebooks/Classification_Demo.ipynb diff --git a/In_Db2_Machine_Learning/Notebooks/Regression_Demo.ipynb b/In_Db2_Machine_Learning/Building ML Models with Db2/Notebooks/Regression_Demo.ipynb similarity index 100% rename from In_Db2_Machine_Learning/Notebooks/Regression_Demo.ipynb rename to In_Db2_Machine_Learning/Building ML Models with Db2/Notebooks/Regression_Demo.ipynb diff --git a/In_Db2_Machine_Learning/Building ML Models with Db2/README.md b/In_Db2_Machine_Learning/Building ML Models with Db2/README.md new file mode 100644 index 0000000..6a747c2 --- /dev/null +++ b/In_Db2_Machine_Learning/Building ML Models with Db2/README.md @@ -0,0 +1,137 @@ +# Instructions + +This repository contains notebooks and datasets that will allow Db2 customers build ML models with IBM Db2's in-database machine learning capabilities. + +# Table of Contents +1. [Prerequistes](#Prerequisites) +2. [Downloading the Dataset](#Downloads) +3. [Loading the Dataset into a Db2 Table](#Loading) +4. [Notebook-specific requirements](#Notebook-specific) +5. [Troubleshooting](#Troubleshooting) +6. [Other Resources](#Resources) + +## 1. Prerequisites + +You must meet the following requirements to use the machine learning functionality in Db2: +- Install the `ibm_db` python package +- Enable IDAX Stored Procedures for ML in your Db2 instance + +### 1.1 Installing the ibm_db python package + +Please follow the documentation [here](https://github.com/ibmdb/python-ibmdb#-installation) to install the `ibm_db` python package. This will allow you to connect to and communicate with your Db2 instance. + + +### 1.2 Enable IDAX Stored Proceduces for ML in your Db2 instance + +Please follow the documentation [here](https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.ml.doc/doc/ml_prereqs.html) to enable ML functionality in your Db2 instance. + + +## 2. Downloading the Datasets +### 2.1 Regression with GoSales + +Download the file [GoSales.csv](Datasets/GoSales.csv) from the `Datasets` directory + +### 2.2 Classification with Titanic + +Download the file [Titanic.csv](Datasets/Titanic.csv) from the `Datasets` directory + +## 3. Loading the Dataset into a Db2 Table + +To load the TITANIC dataset into your Db2 table: + +``` +db2 start +db2 connect to + +CREATE TABLE . ( +PASSENGERID INTEGER NOT NULL, +SURVIVED INTEGER, +PCLASS INTEGER, +NAME VARCHAR(255), +SEX VARCHAR(6), +AGE DECIMAL(5,2), +SIBSP INTEGER, +PARCH INTEGER, +TICKET VARCHAR(255), +FARE DECIMAL(30,5), +CABIN VARCHAR(255), +EMBARKED VARCHAR(3), +PRIMARY KEY (PASSENGERID)) +ORGANIZE BY ROW; + +db2 IMPORT FROM "" OF DEL skipcount 1 INSERT INTO +.(PASSENGERID, SURVIVED, PCLASS, NAME, SEX, AGE, SIBSP, PARCH, TICKET, FARE, CABIN, EMBARKED) +``` + +For loading the GO_SALES data you can take the following steps: + +``` +db2start +connect to + +CREATE TABLE . ( +ID INTEGER NOT NULL, +GENDER VARCHAR(3), +AGE INTEGER, +MARITAL_STATUS VARCHAR(30), +PROFESSION VARCHAR(30), +IS_TENT INTEGER, +PRODUCT_LINE VARCHAR(30), +PURCHASE_AMOUNT DECIMAL(30, 5), +PRIMARY KEY (ID)) +ORGANIZE BY ROW; + +IMPORT FROM "" OF DEL skipcount 1 INSERT INTO +.(ID, GENDER, AGE, MARITAL_STATUS, PROFESSION, IS_TENT, PRODUCT_LINE, PURCHASE_AMOUNT) +``` + +## 4. Notebook-specific requirements +### 4.1 Using the Classification Notebook +To use the [classification demo](Notebooks/Classification_Demo.ipynb) notebook, please ensure that the following Python libraries are installed in your development environment: +- [Pandas](https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html) +- [Numpy](https://pypi.org/project/numpy/) +- [IPython](https://ipython.org/install.html) +- [Scipy](https://www.scipy.org/install.html) +- [Itertools](https://docs.python.org/3/library/itertools.html) +- [Matplotlib](https://matplotlib.org/users/installing.html) +- [Seaborn](https://pypi.org/project/seaborn/#description) + +Once the above prerequisites have been met, ensure that: +- The parameters in the connection string variable `conn_str` have been changed to your particular Db2 instance (cell 2) +- The value of the variable `schema` has been changed to the appropriate schema where the ML pipeline will be executed (cell 2) +- The value `DATA.TITANIC` in cells 8, 11, 14, 17, and 18 is changed to the `.` where the csv data was loaded (section 3) + +### 4.2 Using the Regression Notebook +To use the [regression demo](Notebooks/Regression_Demo.ipynb) notebook, please ensure that the following Python libraries are installed in your development environment: +- [Pandas](https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html) +- [Numpy](https://pypi.org/project/numpy/) +- [Matplotlib](https://matplotlib.org/users/installing.html) + +Also make sure that you have the [InDBMLModules.py](lib/InDBMLModules.py) file in the same directory as your notebook. + +Once the above prerequisites have been met, ensure that: +- The parameters in the connection string variable `conn_str` have been changed to your particular Db2 instance (cell 3) +- The value `DATA.GO_SALES` in cells 6,10, and 11 is changed to the `.` where the csv data was loaded (section 3) + +## 5. Troubleshooting + +When using a jupyter notebook, some users may find that they are unable to import a module that has been successfully installed via pip. + +Check `sys.executable` to see which Python and environment you're running in, and `sys.path` to see where it looks to import modules: + +``` +import sys +print(sys.executable) +print(sys.path) +``` + +If the path in `sys.executable` is not in `sys.path`, you can add it using the following: +`sys.path.append('/path/from/sys.executable')` + +## 6. Demo Videos + +Find step-by-step demonstrations here: +- [Classification with Db2](https://youtu.be/jCgschThiRQ) +- [Linear Regression with Db2](https://youtu.be/RpX0iHL97dc) + +Db2 Machine Learning [Documentation](https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.ml.doc/doc/ml_prereqs.html) \ No newline at end of file diff --git a/In_Db2_Machine_Learning/lib/InDBMLModules.py b/In_Db2_Machine_Learning/Building ML Models with Db2/lib/InDBMLModules.py similarity index 100% rename from In_Db2_Machine_Learning/lib/InDBMLModules.py rename to In_Db2_Machine_Learning/Building ML Models with Db2/lib/InDBMLModules.py diff --git a/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Cognos_Report_Specs.txt b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Cognos_Report_Specs.txt new file mode 100644 index 0000000..c85009c --- /dev/null +++ b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Cognos_Report_Specs.txt @@ -0,0 +1,42 @@ + + + + + + + + + + + Gender:MAge:33Marital Status: MarriedProfession:ProfessionalHas purchased tent before:1Product line:Camping Equipment
Estimated purchase amount: + +
+ Estimate + + +
+ Predict purchase amount
+
+
+
+ [C].[C_In_DB_ML_Model].[PredictSP].[PURCHASE_AMOUNT][C].[C_In_DB_ML_Model].[GO_Sales].[GENDER]case [C].[C_In_DB_ML_Model].[GO_Sales].[GENDER] +when ('M') then ('Male') +when ('F') then ('Female') +else (null) +end[C].[C_In_DB_ML_Model].[GO_Sales].[IS_TENT]case [C].[C_In_DB_ML_Model].[GO_Sales].[IS_TENT] +when (1) then('Yes') +when (0) then ('No') +when (null) then ('Not Specified') +end[C].[C_In_DB_ML_Model].[GO_Sales].[MARITAL_STATUS][C].[C_In_DB_ML_Model].[GO_Sales].[MARITAL_STATUS][C].[C_In_DB_ML_Model].[GO_Sales].[PROFESSION][C].[C_In_DB_ML_Model].[GO_Sales].[PROFESSION][C].[C_In_DB_ML_Model].[GO_Sales].[PRODUCT_LINE][C].[C_In_DB_ML_Model].[GO_Sales].[PRODUCT_LINE]CAMID("BluePages:u:uid=0d5135649,c=ca,ou=bluepages")/folder[@name='My Folders']/folder[@name='in-DB ML']/module[@name='In-DB ML Model']GoSales_predict_report
\ No newline at end of file diff --git a/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard.png b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..744976b6506de832ea6a2da293949e58a037a8f1 GIT binary patch literal 49021 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 literal 0 HcmV?d00001 diff --git a/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard2.png b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard2.png new file mode 100644 index 0000000000000000000000000000000000000000..3261e460da5c31e7b77ea59f1d6eb603fc7c9a52 GIT binary patch literal 34324 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 IHVF9t06Jl^mjD0& literal 0 HcmV?d00001 diff --git a/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard3.png b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Dashboard3.png new file mode 100644 index 0000000000000000000000000000000000000000..e39098e48305e12453f62d6c27bf42071d4a4c45 GIT binary patch literal 48752 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 Qivav7$f!zJN*aIuKl}0vwEzGB literal 0 HcmV?d00001 diff --git a/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Gear.png b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/Gear.png new file mode 100644 index 0000000000000000000000000000000000000000..b80d8f3ded6578850dc52b7e6b4248db3e258ee2 GIT binary patch literal 1748 zcmV;_1}piAP)Px#cx6~gW=%~1DgXcg2mk~D8UO_V00031002G#8vq3W00031002e-C;$Th00031 z0ssJqX#fNO00031002$^000000058x000310058x000311E2u_0{{R30RRC20H6W@ z1ONa40RR919-spN1ONa40RR91AOHXW00!NOLjV8(32;bRa{vGqB>(^xB>_oNB=7(L z1@%cpK~zW$wU+5m8%YqwpYZ|aGEN}aKmrbA&8Kc|8abLe60ETc`Ym~D3{CWvUsULFrfYYeI=eJ4DMS~yfJt;CKU>WVnN48 z#|CpgpSMiO7CApZ*U{0DD8+rG$}!DSC=`TI?v;|wX0^DuSb{j6RwxuQ$Km?0J)^U> zwx)02zUk!Tq*7JIVzF$~HDpzdQQq0v(ZRuiDK`y~yhHUb=!_V#w`^mHa|yMP_g*Vm`FZ{Mo3vs0Ea zibT1-zOK)oKkMVij}~F1IU=BBF73hV;KzY;O4jUQgn;(<_H}r0XeFWkG$7D3NBz6H zx}p|tK`oJ% zYsX~E7TMd|lfTAqTZGI|#F=9z-dzKd4Z^xmFeHD#Z&%Ibb#Um?h}_AX=8MH+*HBY4 zkMtA>1QZMf%kVje=HcoOM>Gg)5tk7`aXB6Lj8n543|avAGR>ej(EY4iug6|nrmL%~ zN}Z-k4dg5BIM1Z`VHBt!i|+1j`GbCKZEk64aY?(oyA}j%oLEBMJCxel)v3{uQN8GU zaqak7_cQCra5!w4fB*hnr>CbPD3B=TJw$4JibNtx_9rzyF|NVEK|^PGX;}>o4Vw9T zrtI9IL0NzrN*x;;)A;zf+S=Mmj){&aqtU2_hlh1|cxW9C69Fq1aAK^ZvqP_5y)vf+ zfv`RP|hiHzd2^mIpg`J)Oa<=cx4?~LoLy}RhRbg4wFi$a*Ps` z3FkUmbPm`m2o1!RI66Km+X31iKYnO!ea(<@^<{yTso?R%_LhGA`c)>O(tfxyK~3l8 z=JfUJS0j&rKOizhT$ThiIXP*JG&D41FfJ`EX?kkf*b11fA+I{yp!X|3+S}h#u~4)?9a7E)eGu=6 zYj|i_BO@av$57++^t9gn^-e1*D+V))PTAeDXaRWJ6n29cY|N`4XEk#-*YeId0g!z> z9@m>c-;}l!lMGT1x)3UK?G zGsf8X(Uz#y)HRF?04F#k5bj*eA!Odr*r1jc?>y%S^nyem#)1Rr4a*oMXpIBf3hz-Q zFv4Vf2mlk?Y-3}?n2Gnw09=NA^l^sMM6vdm>Kp2nNoPtQ4_;?K?|p9BLOxYrAQ + +You must meet the following requirements to use the machine learning functionality in Db2: +- Enable IDAX Stored Procedures for ML in your Db2 instance +- Have a linear regression model trained based on the GoSales dataset + +### 1.1 Enable IDAX Stored Proceduces for ML in your Db2 instance +Please follow the documentation [here](https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.ml.doc/doc/ml_prereqs.html) to enable ML functionality in your Db2 instance. + +### 1.2 Train a linear regression model to predict the PURCHASE_AMOUNT using the GoSales dataset + +Please follow the steps provided [here](../Building%20ML%20Models%20with%20Db2/README.md) to download the GoSales dataset and load it into your Db2 database. Then use this [notebook](../Building%20ML%20Models%20with%20Db2/Notebooks/Regression_Demo.ipynb) to pre-process the data, collect and store the statistics, train and deploy a linear regression model in your database. + +Once you take these steps, verify that the following tables are created and contain values: +- GO_SALES_SUM1000_NUM (statistics for the numerical columns) +- GO_SALES_SUM1000_CHAR (statistics for the nominal columns) +- GSLINREG_MODEL (model table) + +## 2. Create the scoring pipeline stored procedure +### 2.1 Copy the stored procedure file + +Copy the file [scoring_pipeline](scoring_pipeline) to your working directory. The steps needed to write the code in this file in described in this demo. + +### 2.2 Create the stored procedure +Execute the following command to create or update the stored procedure: + +``` +db2 -td@ -vf scoring_pipeline +``` + +The @ after -td option indicates the last character in the file, which is called the terminating character. The -v option indicates using the optional verbosity which will cause each SQL statement or command in the script to be displayed to the screen as it is run, along with any output that results from its execution. The -f option indicates that the target of the command is a file. + +### 2.3 Authorize the users who need to execute the pipeline +Once the stored procedure is created, we can call it from either Db2 command line or from a third-party application that is connected to the database, using credentials with the proper authorizations. Specifically, the credentials used must have the EXECUTE privilege on the created stored procedure. Execute the following command to grant execute privilege to `` on your stored procedure `` : + +``` +db2 "grant execute on procedure to user " +``` + +### 2.4 Test your stored procedure +Call your stored procedure using the following command: +db2 "call pipe(1, 'M', 45, 'Single', NULL, 0, NULL)" + +You should see the result printed like this: + +``` + + Result set 1 + -------------- + + PURCHASE_AMOUNT + ------------------------ + +1.21634933813948E+002 + + 1 record(s) selected. + + Return Status = 0 + +``` + +## 3. Calling the stored procedure from Cognos Analytics + +We use Cognos Analytics platform in this demo, but this solution would generalize to different applications that need to interact with Machine Learning models from Db2. In any other use-cases, you would need to: +1) Establish a connection to your Db2 database +2) Call the stored procedure by passing the input parameters +3) Retrieve and use the result which is returned as a table with PURCHASE_AMOUNT as the only column. + +In this demo we call the scoring pipeline from a Cognos Analytics report that connects to Db2 using a JDBC connection. The dashboard receives the input parameters from the user and passes them to the stored procedure. The stored procedure computes and returns the result that is then presented to the user in the dashboard. The following sections describe the steps needed to implement this solution in Cognos Analytics. + +### 3.1. Create a connection to your Db2 database +Follow the instructions provided [here](https://www.ibm.com/support/knowledgecenter/SSEP7J_11.1.0/com.ibm.swg.ba.cognos.ug_cra.doc/c_db2_ds.html#DB2_ds) to create a data source connection in your Cognos Analytics environment. + +### 3.2. Create a data module +Follow the instructions provided [here](https://www.ibm.com/support/knowledgecenter/SSEP7J_11.0.0/com.ibm.swg.ba.cognos.ca_mdlg.doc/t_ca_mldg_src_dataserver.html) to create a data module using the connection to your Db2 database. + +### 3.3. Add the scoring stored procedure to your data module +In your data module, take the following steps to add the scoring stored procedure. In your data module, click on the “…” right to the data module root node. From the menu select *New Table using SQL…* + +![Dashboard](Dashboard.png) + +In the *Edit Table* window, add the following command to the *Expression* box: + +``` +CALL ( 1, + #prompt('pGender' +,'varchar(10)' +,'') # +, + #prompt('pAge' +,'integer' +,'') # +, + #prompt('pMaritalStatus' +,'varchar(50)' +,'') # +, + #prompt('pProfession' +,'varchar(50)' +,'') # +, + #prompt('pIsTent' +,'smallint' +,'') # +, + #prompt('pProductLine' +,'varchar(50)' +,'') # + +) ; +``` + +In the above command, replace `` with your stored procedure name. +The `#prompt()#` blocks make the command parametric so that the input values can be passed from a report. +In `#prompt(,,)# `, `` is the parameter name which will be used for authoring a report, `` is the data type as declared in the stored procedure, and `` is the default value to be passed. Let us call this table *PredictSP*. + +### 3.5. Set the SQL Type +From the SQL Type drop down menu select “Pass-Through SQL”. Click OK. Click Save. + +![Dashboard2](Dashboard2.png) + +### 3.6. Add the table containing the training data +In your data module, add the table from your database that contains the training data. Let us call this table *GO_Sales*. This table will be used to create pre-populate the prompts in the report. + +### 3.7. Use the created table in a report +Open a blank report based on the data module you just created and take the following steps: +- Add the *PURCHASE_AMOUNT* from the table you created from the stored procedure *(PredictSP)* to your report as a *Singleton*. This shows the prediction returned from Db2 in your report. +- Add a *value prompt control* to your report for each input parameter. These controls receive the model input values from the user. +- For each prompt create a query that points to the relevant column of the table containing the training data (Go_Sales). Then in the *Properties* tab, choose that column as *Use Value* and *Display Value* properties. This will pre-populate the prompt when the report runs. +- Add a *Prompt button*. When the report runs, by clicking this button you pass the parameters from the prompt controls to the stored procedure. +- Click *Save*. + +Alternatively, you can copy the report specification provided [here](Cognos_Report_Specs.txt) into your clipboard, and then from *More* menu( ![Gear](Gear.png) ) select *Open report from clipboard*. Click *Save*. + +![Dashboard3](Dashboard3.png) + +## 4. Other resources +Find step-by-step demonstrations for creating the scoring pipeline stored procedure here: +- Building a scoring pipeline inside Db2 + +Db2 Machine Learning [Documentation](https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.ml.doc/doc/ml_prereqs.html) diff --git a/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/scoring_pipeline b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/scoring_pipeline new file mode 100644 index 0000000..58ab79c --- /dev/null +++ b/In_Db2_Machine_Learning/Building a Scoring Pipeline with Db2/scoring_pipeline @@ -0,0 +1,50 @@ +CREATE OR REPLACE PROCEDURE mingpang.pipe(IN ID_VALUE INT, IN GENDER_VALUE VARCHAR(10),IN AGE_VALUE DOUBLE, IN MARITAL_STATUS_VALUE VARCHAR(50), IN PROFESSION_VALUE VARCHAR(50),IN IS_TENT_VALUE SMALLINT, IN PRODUCT_LINE_VALUE VARCHAR(50)) +LANGUAGE SQL +DYNAMIC RESULT SETS 1 +MODIFIES SQL DATA +BEGIN + +-- Declare block +declare myqry varchar(1024); +declare callsp varchar(1024); +declare dropt varchar(1024); +declare tname varchar(128); +declare cretemptab varchar(1024); +declare mystmt statement; +DECLARE C1 CURSOR WITH RETURN FOR mystmt; + +-- Delare an input table +DECLARE GLOBAL TEMPORARY TABLE SESSION.INPUT(ID INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,GENDER VARCHAR(10),STD_AGE DOUBLE,MARITAL_STATUS VARCHAR(50),PROFESSION VARCHAR(50),IS_TENT SMALLINT,PRODUCT_LINE VARCHAR(50)) ON COMMIT PRESERVE ROWS WITH REPLACE; +-- Insert values into the table +INSERT INTO SESSION.INPUT(ID, GENDER, STD_AGE, MARITAL_STATUS, PROFESSION, IS_TENT, PRODUCT_LINE) + VALUES(ID_VALUE, GENDER_VALUE, AGE_VALUE, MARITAL_STATUS_VALUE, PROFESSION_VALUE, IS_TENT_VALUE, PRODUCT_LINE_VALUE); + +-- Null impute numerical columns with mean +UPDATE SESSION.INPUT SET STD_AGE = (SELECT AVERAGE FROM LINREG.GSTRAIN_STATS_NUM WHERE COLUMNNAME='AGE') WHERE STD_AGE IS NULL; +-- Null impute nominal with most frequent +UPDATE SESSION.INPUT SET GENDER = (SELECT MOSTFREQUENTVALUE FROM LINREG.GSTRAIN_STATS_CHAR WHERE COLNAME='GENDER') WHERE GENDER IS NULL; +UPDATE SESSION.INPUT SET MARITAL_STATUS = (SELECT MOSTFREQUENTVALUE FROM LINREG.GSTRAIN_STATS_CHAR WHERE COLNAME='MARITAL_STATUS') WHERE MARITAL_STATUS IS NULL; +UPDATE SESSION.INPUT SET PROFESSION = (SELECT MOSTFREQUENTVALUE FROM LINREG.GSTRAIN_STATS_CHAR WHERE COLNAME='PROFESSION') WHERE PROFESSION IS NULL; +UPDATE SESSION.INPUT SET PRODUCT_LINE = (SELECT MOSTFREQUENTVALUE FROM LINREG.GSTRAIN_STATS_CHAR WHERE COLNAME='PRODUCT_LINE') WHERE PRODUCT_LINE IS NULL; +UPDATE SESSION.INPUT SET IS_TENT = (SELECT MOSTFREQUENTVALUE FROM LINREG.GSTRAIN_STATS_CHAR WHERE COLNAME='IS_TENT') WHERE IS_TENT IS NULL; +-- Standardize Age +UPDATE SESSION.INPUT SET STD_AGE = ((CAST(STD_AGE AS FLOAT) - (SELECT AVERAGE FROM LINREG.GSTRAIN_STATS_NUM WHERE COLUMNNAME='AGE'))/(SELECT STDDEV FROM LINREG.GSTRAIN_STATS_NUM WHERE COLUMNNAME='AGE')); + +-- randomly generate output table name +set tname = TRANSLATE ( CHAR(BIGINT(RAND() * 10000000000 )), 'abcdefghij', '1234567890' ) ; + +-- Call predict stored procedure +set callsp = 'CALL IDAX.PREDICT_LINEAR_REGRESSION(''model=LINREG.GSLINREG, intable=SESSION.INPUT, outtable =LINREG.'||tname||', id=ID'')'; +execute immediate callsp; + +-- Retrieve the prediction result +set cretemptab = 'DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMPTAB AS (select * from LINREG.'||tname||') with data ON COMMIT PRESERVE ROWS WITH REPLACE'; +execute immediate cretemptab; + +set myqry = 'SELECT PURCHASE_AMOUNT FROM SESSION.TEMPTAB'; +prepare mystmt from myqry; +open c1; + +set dropt = 'DROP TABLE LINREG.'||tname; +execute immediate dropt; +END@ \ No newline at end of file diff --git a/In_Db2_Machine_Learning/README.md b/In_Db2_Machine_Learning/README.md index 6da86a6..e799ed6 100644 --- a/In_Db2_Machine_Learning/README.md +++ b/In_Db2_Machine_Learning/README.md @@ -1,137 +1,5 @@ -# Instructions - This repository contains notebooks and datasets that will allow Db2 customers to use in-Db2 machine learning functionality. -# Table of Contents -1. [Prerequistes](#Prerequisites) -2. [Downloading the Dataset](#Downloads) -3. [Loading the Dataset into a Db2 Table](#Loading) -4. [Notebook-specific requirements](#Notebook-specific) -5. [Troubleshooting](#Troubleshooting) -6. [Other Resources](#Resources) - -## 1. Prerequisites - -You must meet the following requirements to use the machine learning functionality in Db2: -- Install the `ibm_db` python package -- Enable IDAX Stored Procedures for ML in your Db2 instance - -### 1.1 Installing the ibm_db python package - -Please follow the documentation [here](https://github.com/ibmdb/python-ibmdb#-installation) to install the `ibm_db` python package. This will allow you to connect to and communicate with your Db2 instance. - - -### 1.2 Enable IDAX Stored Proceduces for ML in your Db2 instance - -Please follow the documentation [here](https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.ml.doc/doc/ml_prereqs.html) to enable ML functionality in your Db2 instance. - - -## 2. Downloading the Datasets -### 2.1 Regression with GoSales - -Download the file [GoSales.csv](https://github.com/IBM/db2-samples/tree/master/In_Db2_Machine_Learning/Datasets/GoSales.csv) from the `Datasets` directory - -### 2.2 Classification with Titanic - -Download the file [Titanic.csv](https://github.com/IBM/db2-samples/tree/master/In_Db2_Machine_Learning/Datasets/Titanic.csv) from the `Datasets` directory - -## 3. Loading the Dataset into a Db2 Table - -To load the TITANIC dataset into your Db2 table: - -``` -db2 start -db2 connect to - -CREATE TABLE . ( -PASSENGERID INTEGER NOT NULL, -SURVIVED INTEGER, -PCLASS INTEGER, -NAME VARCHAR(255), -SEX VARCHAR(6), -AGE DECIMAL(5,2), -SIBSP INTEGER, -PARCH INTEGER, -TICKET VARCHAR(255), -FARE DECIMAL(30,5), -CABIN VARCHAR(255), -EMBARKED VARCHAR(3), -PRIMARY KEY (PASSENGERID)) -ORGANIZE BY ROW; - -db2 IMPORT FROM "" OF DEL skipcount 1 INSERT INTO -.(PASSENGERID, SURVIVED, PCLASS, NAME, SEX, AGE, SIBSP, PARCH, TICKET, FARE, CABIN, EMBARKED) -``` - -For loading the GO_SALES data you can take the following steps: - -``` -db2start -connect to - -CREATE TABLE . ( -ID INTEGER NOT NULL, -GENDER VARCHAR(3), -AGE INTEGER, -MARITAL_STATUS VARCHAR(30), -PROFESSION VARCHAR(30), -IS_TENT INTEGER, -PRODUCT_LINE VARCHAR(30), -PURCHASE_AMOUNT DECIMAL(30, 5), -PRIMARY KEY (ID)) -ORGANIZE BY ROW; - -IMPORT FROM "" OF DEL skipcount 1 INSERT INTO -.(ID, GENDER, AGE, MARITAL_STATUS, PROFESSION, IS_TENT, PRODUCT_LINE, PURCHASE_AMOUNT) -``` - -## 4 Notebook-specific requirements -### 4.1 Using the Classification Notebook -To use the [classification demo](https://github.com/IBM/db2-samples/tree/master/In_Db2_Machine_Learning/Notebooks/Classification_Demo.ipynb) notebook, please ensure that the following Python libraries are installed in your development environment: -- [Pandas](https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html) -- [Numpy](https://pypi.org/project/numpy/) -- [IPython](https://ipython.org/install.html) -- [Scipy](https://www.scipy.org/install.html) -- [Itertools](https://docs.python.org/3/library/itertools.html) -- [Matplotlib](https://matplotlib.org/users/installing.html) -- [Seaborn](https://pypi.org/project/seaborn/#description) - -Once the above prerequisites have been met, ensure that: -- The parameters in the connection string variable `conn_str` have been changed to your particular Db2 instance (cell 2) -- The value of the variable `schema` has been changed to the appropriate schema where the ML pipeline will be executed (cell 2) -- The value `DATA.TITANIC` in cells 8, 11, 14, 17, and 18 is changed to the `.` where the csv data was loaded (section 3) - -### 4.2 Using the Regression Notebook -To use the [regression demo](https://github.com/IBM/db2-samples/tree/master/In_Db2_Machine_Learning/Notebooks/Regression_Demo.ipynb) notebook, please ensure that the following Python libraries are installed in your development environment: -- [Pandas](https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html) -- [Numpy](https://pypi.org/project/numpy/) -- [Matplotlib](https://matplotlib.org/users/installing.html) - -Also make sure that you have the [InDBMLModules.py](https://github.com/IBM/db2-samples/tree/master/In_Db2_Machine_Learning/lib/InDBMLModules.py) file in the same directory as your notebook. - -Once the above prerequisites have been met, ensure that: -- The parameters in the connection string variable `conn_str` have been changed to your particular Db2 instance (cell 3) -- The value `DATA.GO_SALES` in cells 6,10, and 11 is changed to the `.` where the csv data was loaded (section 3) - -## 5. Troubleshooting - -When using a jupyter notebook, some users may find that they are unable to import a module that has been successfully installed via pip. - -Check `sys.executable` to see which Python and environment you're running in, and `sys.path` to see where it looks to import modules: - -``` -import sys -print(sys.executable) -print(sys.path) -``` - -If the path in `sys.executable` is not in `sys.path`, you can add it using the following: -`sys.path.append('/path/from/sys.executable')` - -## 6. Demo Videos - -Find step-by-step demonstrations here: -- [Classification with Db2](https://youtu.be/jCgschThiRQ) -- [Linear Regression with Db2](https://youtu.be/RpX0iHL97dc) - -Db2 Machine Learning [Documentation](https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.ml.doc/doc/ml_prereqs.html) \ No newline at end of file +This repository contains the following example use-cases: +- **Building ML Models with Db2**: Build machine learning models entirely in-database with IBM Db2's in-database machine learning capabilities +- **Building a Scoring Pipeline with Db2**: Use in-Db2 machine learning functionality for single row scoring inside the database \ No newline at end of file