diff --git a/machine-learning/labs/oml4py-live-labs/Lab 0 Run Me First OML4Py table creation and grants.json b/machine-learning/labs/oml4py-live-labs/Lab 0 Run Me First OML4Py table creation and grants.json deleted file mode 100644 index 139e2963..00000000 --- a/machine-learning/labs/oml4py-live-labs/Lab 0 Run Me First OML4Py table creation and grants.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n# Run Me First - Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\n### The following commands should be executed before running the Labs, since it creates some tables and grants access to any users of the PDB.\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER","dateUpdated":"2021-02-23T04:54:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Run Me First - Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

The following commands should be executed before running the Labs, since it creates some tables and grants access to any users of the PDB.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614055277204_1429993038","id":"20210223-044117_1084738104","dateCreated":"2021-02-23T04:41:17+0000","dateStarted":"2021-02-23T04:54:27+0000","dateFinished":"2021-02-23T04:54:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:296"},{"text":"%python\n\nimport oml\n\nfrom sklearn import datasets\nfrom sklearn import linear_model\nimport pandas as pd\n\niris = datasets.load_iris()\nx = pd.DataFrame(iris.data, columns = ['SEPAL_LENGTH','SEPAL_WIDTH','PETAL_LENGTH','PETAL_WIDTH'])\ny = pd.DataFrame(list(map(lambda x: {0: 'setosa', 1: 'versicolor',2:'virginica'}[x], iris.target)), columns = ['SPECIES'])\n\ntry:\n oml.drop(table='IRIS')\nexcept:\n pass\n\nIRIS = oml.create(pd.concat([x, y], axis=1), table = 'IRIS')\niris_df = pd.concat([x, y], axis=1)\nprint(IRIS.columns)","user":"OMLUSER","dateUpdated":"2021-02-23T04:55:34+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/undefined","fontSize":9,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['SEPAL_LENGTH', 'SEPAL_WIDTH', 'PETAL_LENGTH', 'PETAL_WIDTH', 'SPECIES']\n"}]},"interrupted":false,"jobName":"paragraph_1611446871281_-527856967","id":"20210124-000751_741842202","dateCreated":"2021-01-21T00:08:49+0000","dateStarted":"2021-01-24T00:08:34+0000","dateFinished":"2021-01-24T00:08:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:297","title":"Pushes the IRIS Table from SciKit Learn to Oracle Database"},{"text":"%python\n\nimport oml\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\n\ntry:\n oml.drop(table=\"WINE\")\nexcept:\n pass\n\nwine = load_wine()\n\nx = pd.DataFrame(wine.data, columns = wine[\"feature_names\"])\ny = pd.DataFrame(list(map(lambda x: {0:'class_0', 1: 'class_1', 2:'class_2'}[x], wine.target)), columns = ['target'])\n\nwine_df = pd.concat([x,y], axis=1)\nWINE = oml.create(wine_df, table = \"WINE\")","user":"OMLUSER","dateUpdated":"2021-02-23T04:56:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611446871281_773455953","id":"20210124-000751_749705619","dateCreated":"2021-01-21T08:15:26+0000","dateStarted":"2021-01-24T00:08:48+0000","dateFinished":"2021-01-24T00:08:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:298","title":"Pushes the WINE Table from SciKit Learn to Oracle Database"},{"text":"%python\n\nimport pandas as pd\nfrom sklearn.datasets import load_digits\n\ndigits = load_digits()\npd_digits = pd.DataFrame(digits.data, columns=['IMG'+str(i) for i in range(digits['data'].shape[1])])\npd_digits = pd.concat([pd_digits, pd.Series(digits.target,name = 'target')], axis = 1)\n\ntry:\n oml.drop(table=\"DIGITS\")\nexcept:\n pass\n \nDIGITS = oml.create(pd_digits, table = \"DIGITS\")","user":"OMLUSER","dateUpdated":"2021-02-23T04:56:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611446871281_-1345502953","id":"20210124-000751_1744051901","dateCreated":"2021-01-23T23:04:32+0000","dateStarted":"2021-01-24T00:08:52+0000","dateFinished":"2021-01-24T00:08:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:299","title":"Pushes the DIGITS Table from SciKit Learn to Oracle Database"},{"text":"%md\n## Create VIEWS for the TABLES\n---\n","user":"OMLUSER","dateUpdated":"2021-02-23T04:57:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614056210891_-698601155","id":"20210223-045650_1224491736","dateCreated":"2021-02-23T04:56:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":false,"focus":true,"$$hashKey":"object:594","dateFinished":"2021-02-23T04:57:10+0000","dateStarted":"2021-02-23T04:57:10+0000","results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Create VIEWS for the TABLES

\n
\n"}]}},{"text":"%sql\n\nCREATE OR REPLACE view IRIS_VIEW as select * from IRIS;\n","user":"OMLUSER","dateUpdated":"2021-01-24T00:08:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611446871282_-2008565406","id":"20210124-000751_193809375","dateCreated":"2021-01-21T08:04:34+0000","dateStarted":"2021-01-24T00:08:56+0000","dateFinished":"2021-01-24T00:09:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:300"},{"text":"%sql\n\nCREATE OR REPLACE view WINE_VIEW as select * from WINE;\n","user":"OMLUSER","dateUpdated":"2021-01-24T00:09:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611446871282_-1530685919","id":"20210124-000751_465754361","dateCreated":"2021-01-23T22:54:41+0000","dateStarted":"2021-01-24T00:09:09+0000","dateFinished":"2021-01-24T00:09:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:301"},{"text":"%sql\n\nCREATE OR REPLACE view DIGITS_VIEW as select * from DIGITS;","user":"OMLUSER","dateUpdated":"2021-01-24T00:09:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611446871282_-1168055607","id":"20210124-000751_1274128659","dateCreated":"2021-01-23T23:05:12+0000","dateStarted":"2021-01-24T00:09:13+0000","dateFinished":"2021-01-24T00:09:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:302"},{"user":"OMLUSER","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614056558796_646905158","id":"20210223-050238_2143109820","dateCreated":"2021-02-23T05:02:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":false,"focus":true,"$$hashKey":"object:6668","text":"%md\n## Grants all users of the PDB access to the tables and Views\n---","dateUpdated":"2021-02-23T05:03:15+0000","dateFinished":"2021-02-23T05:03:11+0000","dateStarted":"2021-02-23T05:03:11+0000","results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Grants all users of the PDB access to the tables and Views

\n
\n"}]}},{"text":"%script\n\n\nBEGIN\n FOR t IN (SELECT * FROM user_tables where TABLE_NAME IN ('IRIS','WINE','DIGITS') )\n LOOP \n EXECUTE IMMEDIATE 'GRANT SELECT ON ' || t.table_name || ' TO PUBLIC'; \n END LOOP;\nEND;\n/\n","user":"OMLUSER","dateUpdated":"2021-02-23T05:05:04+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"plsql","editOnDblClick":false},"editorMode":"ace/mode/plsql","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nPL/SQL procedure successfully completed.\n\n\n---------------------------\n"}]},"interrupted":false,"jobName":"paragraph_1611446871282_958179893","id":"20210124-000751_213337894","dateCreated":"2021-01-21T00:09:01+0000","dateStarted":"2021-02-23T05:02:24+0000","dateFinished":"2021-02-23T05:02:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:303","title":"Grants access to the Tables"},{"text":"%script\n\nBEGIN\n FOR t IN (SELECT * FROM user_views where VIEW_NAME IN ('IRIS_VIEW','WINE_VIEW','DIGITS_VIEW') ) \n LOOP \n EXECUTE IMMEDIATE 'GRANT SELECT ON ' || t.view_name || ' TO PUBLIC'; \n END LOOP;\nEND;\n/\n\n","user":"OMLUSER","dateUpdated":"2021-02-23T05:05:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"plsql","editOnDblClick":false},"editorMode":"ace/mode/plsql","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nPL/SQL procedure successfully completed.\n\n\n---------------------------\n"}]},"interrupted":false,"jobName":"paragraph_1611446871282_-173431534","id":"20210124-000751_1829058268","dateCreated":"2021-01-21T00:09:40+0000","dateStarted":"2021-02-23T05:04:58+0000","dateFinished":"2021-02-23T05:04:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:304","title":"Grants access to the Views"},{"text":"%script\n","user":"OMLUSER","dateUpdated":"2021-01-24T00:09:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"plsql","editOnDblClick":false},"editorMode":"ace/mode/plsql"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611446871282_-1161368599","id":"20210124-000751_1619869333","dateCreated":"2021-01-23T23:05:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:305"}],"name":"Lab 0: Run Me First - OML4Py table creation and grants","id":"466369","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDWA0063E96A6:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 0_ Run Me First - OML4Py table creation and grants.json b/machine-learning/labs/oml4py-live-labs/Lab 0_ Run Me First - OML4Py table creation and grants.json new file mode 100755 index 00000000..e7dffc6f --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/Lab 0_ Run Me First - OML4Py table creation and grants.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n# Run Me First - Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\n### The following commands should be executed before running the Labs, since it creates some tables and grants access to any users of the PDB.\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER02","dateUpdated":"2021-03-02T18:52:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Run Me First - Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

The following commands should be executed before running the Labs, since it creates some tables and grants access to any users of the PDB.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614642400776_-1529475359","id":"20210301-234640_1655814682","dateCreated":"2021-02-23T04:41:17+0000","dateStarted":"2021-03-02T18:52:44+0000","dateFinished":"2021-03-02T18:52:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Pushes the IRIS Table from SciKit Learn to Oracle Database","text":"%python\n\nimport oml\n\nfrom sklearn import datasets\nfrom sklearn import linear_model\nimport pandas as pd\n\niris = datasets.load_iris()\nx = pd.DataFrame(iris.data, columns = ['SEPAL_LENGTH','SEPAL_WIDTH','PETAL_LENGTH','PETAL_WIDTH'])\ny = pd.DataFrame(list(map(lambda x: {0: 'setosa', 1: 'versicolor',2:'virginica'}[x], iris.target)), columns = ['SPECIES'])\n\ntry:\n oml.drop(table='IRIS')\nexcept:\n pass\n\nIRIS = oml.create(pd.concat([x, y], axis=1), table = 'IRIS')\niris_df = pd.concat([x, y], axis=1)\nprint(IRIS.columns)","user":"OMLUSER02","dateUpdated":"2021-03-02T18:52:46+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/undefined","fontSize":9,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['SEPAL_LENGTH', 'SEPAL_WIDTH', 'PETAL_LENGTH', 'PETAL_WIDTH', 'SPECIES']\n"}]},"interrupted":false,"jobName":"paragraph_1614642400776_1125089108","id":"20210301-234640_70260590","dateCreated":"2021-01-21T00:08:49+0000","dateStarted":"2021-03-02T18:52:47+0000","dateFinished":"2021-03-02T18:52:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"title":"Pushes the WINE Table from SciKit Learn to Oracle Database","text":"%python\n\nimport oml\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\n\ntry:\n oml.drop(table=\"WINE\")\nexcept:\n pass\n\nwine = load_wine()\n\nx = pd.DataFrame(wine.data, columns = wine[\"feature_names\"])\ny = pd.DataFrame(list(map(lambda x: {0:'class_0', 1: 'class_1', 2:'class_2'}[x], wine.target)), columns = ['target'])\n\nwine_df = pd.concat([x,y], axis=1)\nWINE = oml.create(wine_df, table = \"WINE\")","user":"OMLUSER02","dateUpdated":"2021-03-02T18:52:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614642400776_-381654448","id":"20210301-234640_978278896","dateCreated":"2021-01-21T08:15:26+0000","dateStarted":"2021-03-02T18:52:57+0000","dateFinished":"2021-03-02T18:53:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"title":"Pushes the DIGITS Table from SciKit Learn to Oracle Database","text":"%python\n\nimport pandas as pd\nfrom sklearn.datasets import load_digits\n\ndigits = load_digits()\npd_digits = pd.DataFrame(digits.data, columns=['IMG'+str(i) for i in range(digits['data'].shape[1])])\npd_digits = pd.concat([pd_digits, pd.Series(digits.target,name = 'target')], axis = 1)\n\ntry:\n oml.drop(table=\"DIGITS\")\nexcept:\n pass\n \nDIGITS = oml.create(pd_digits, table = \"DIGITS\")","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614642400776_1024154262","id":"20210301-234640_2049057903","dateCreated":"2021-01-23T23:04:32+0000","dateStarted":"2021-03-02T18:53:01+0000","dateFinished":"2021-03-02T18:53:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%md\n## Create VIEWS for the TABLES\n---\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Create VIEWS for the TABLES

\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614642400776_-350190946","id":"20210301-234640_355217499","dateCreated":"2021-02-23T04:56:50+0000","dateStarted":"2021-03-02T18:53:02+0000","dateFinished":"2021-03-02T18:53:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%sql\n\nCREATE OR REPLACE view IRIS_VIEW as select * from IRIS;\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614642400776_-1497127666","id":"20210301-234640_295948023","dateCreated":"2021-01-21T08:04:34+0000","dateStarted":"2021-03-02T18:53:03+0000","dateFinished":"2021-03-02T18:53:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%sql\n\nCREATE OR REPLACE view WINE_VIEW as select * from WINE;\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614642400776_-1697437323","id":"20210301-234640_1373865450","dateCreated":"2021-01-23T22:54:41+0000","dateStarted":"2021-03-02T18:53:20+0000","dateFinished":"2021-03-02T18:53:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%sql\n\nCREATE OR REPLACE view DIGITS_VIEW as select * from DIGITS;","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614642400776_68222166","id":"20210301-234640_973722341","dateCreated":"2021-01-23T23:05:12+0000","dateStarted":"2021-03-02T18:53:20+0000","dateFinished":"2021-03-02T18:53:21+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%md\n## Grants all users of the PDB access to the tables and Views\n---","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Grants all users of the PDB access to the tables and Views

\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614642400776_-1943491669","id":"20210301-234640_1314095895","dateCreated":"2021-02-23T05:02:38+0000","dateStarted":"2021-03-02T18:53:21+0000","dateFinished":"2021-03-02T18:53:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"title":"Grants access to the Tables","text":"%script\n\n\nBEGIN\n FOR t IN (SELECT * FROM user_tables where TABLE_NAME IN ('IRIS','WINE','DIGITS') )\n LOOP \n EXECUTE IMMEDIATE 'GRANT SELECT ON ' || t.table_name || ' TO PUBLIC'; \n END LOOP;\nEND;\n/\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"plsql","editOnDblClick":false},"editorMode":"ace/mode/plsql","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nPL/SQL procedure successfully completed.\n\n\n---------------------------\n"}]},"interrupted":false,"jobName":"paragraph_1614642400776_-2000198876","id":"20210301-234640_1091053660","dateCreated":"2021-01-21T00:09:01+0000","dateStarted":"2021-03-02T18:53:21+0000","dateFinished":"2021-03-02T18:53:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"title":"Grants access to the Views","text":"%script\n\nBEGIN\n FOR t IN (SELECT * FROM user_views where VIEW_NAME IN ('IRIS_VIEW','WINE_VIEW','DIGITS_VIEW') ) \n LOOP \n EXECUTE IMMEDIATE 'GRANT SELECT ON ' || t.view_name || ' TO PUBLIC'; \n END LOOP;\nEND;\n/\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"plsql","editOnDblClick":false},"editorMode":"ace/mode/plsql","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nPL/SQL procedure successfully completed.\n\n\n---------------------------\n"}]},"interrupted":false,"jobName":"paragraph_1614642400776_1579685439","id":"20210301-234640_210315586","dateCreated":"2021-01-21T00:09:40+0000","dateStarted":"2021-03-02T18:53:23+0000","dateFinished":"2021-03-02T18:53:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%script\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"plsql","editOnDblClick":false},"editorMode":"ace/mode/plsql"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614642400776_1223177844","id":"20210301-234640_2028166348","dateCreated":"2021-01-23T23:05:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"}],"name":"Lab 0: Run Me First - OML4Py table creation and grants","id":"40603","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 1 Getting Started with OML4Py.json b/machine-learning/labs/oml4py-live-labs/Lab 1 Getting Started with OML4Py.json deleted file mode 100755 index e23c8563..00000000 --- a/machine-learning/labs/oml4py-live-labs/Lab 1 Getting Started with OML4Py.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nThis example shows you how to:\n\n* Set OML notebook bindings and interpreters\n* Enable the Python interpreter to run Python commands\n* Import the OML4Py **oml** package and verify the database connection\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

This example shows you how to:

\n\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_1250562782","id":"20210125-170339_804682799","dateCreated":"2021-01-08T18:21:43+0000","dateStarted":"2021-02-05T20:35:34+0000","dateFinished":"2021-02-05T20:35:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Zeppelin notebook toolbar","text":"%md\nThe notebook toolbar contains buttons for running code in paragraphs and for setting configuration and display options. \n\nFor example, it displays the current status and the number of users connected to the notebook. It also contains a menu item for keyboard shortcuts and options to show or hide the markdown editor and paragraph output. Additional settings are shown here.","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:34+0000","config":{"colWidth":4,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

The notebook toolbar contains buttons for running code in paragraphs and for setting configuration and display options.

\n

For example, it displays the current status and the number of users connected to the notebook. It also contains a menu item for keyboard shortcuts and options to show or hide the markdown editor and paragraph output. Additional settings are shown here.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-823691855","id":"20210125-170339_711433015","dateCreated":"2021-01-19T22:17:44+0000","dateStarted":"2021-02-05T20:35:34+0000","dateFinished":"2021-02-05T20:35:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%md\n\n
\"OML
","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:34+0000","config":{"colWidth":8,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\"OML
\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-902205764","id":"20210125-170339_1808412327","dateCreated":"2021-01-19T22:14:59+0000","dateStarted":"2021-02-05T20:35:35+0000","dateFinished":"2021-02-05T20:35:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"title":"OML notebook bindings","text":"%md\n\nOracle Machine Learning notebooks contain an internal list of bindings to fetch data from the database or another data source, such as Oracle Cloud Object Storage. For this lab, we set the interpreter binding to connect to the ADW database and run queries. \n\nClick the interpreter bindings icon in the upper right-corner of the Noteook to view the available interpreter bindings.\n\n
\"OML
\n\nThe default service is *low*. Click to bind or unbind an interpreter. Drag-and-drop individual interpreter binding settings up or down to order which binding will be used by default. The first interpeter on the list becomes the default. Those highlighted in blue are active.\n\n\nFor more information on Autonomous Database service levels, refer to the Autonomous Databse User's Guide.\n\n###### [Autonomous Database User's Guide](https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/manage-priorities.html#GUID-19175472-D200-445F-897A-F39801B0E953)\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:35+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning notebooks contain an internal list of bindings to fetch data from the database or another data source, such as Oracle Cloud Object Storage. For this lab, we set the interpreter binding to connect to the ADW database and run queries.

\n

Click the interpreter bindings icon in the upper right-corner of the Noteook to view the available interpreter bindings.

\n
\"OML
\n

The default service is low. Click to bind or unbind an interpreter. Drag-and-drop individual interpreter binding settings up or down to order which binding will be used by default. The first interpeter on the list becomes the default. Those highlighted in blue are active.

\n

For more information on Autonomous Database service levels, refer to the Autonomous Databse User's Guide.

\n
Autonomous Database User's Guide
\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_1314447289","id":"20210125-170339_1501354314","dateCreated":"2021-01-08T18:03:16+0000","dateStarted":"2021-02-05T20:35:35+0000","dateFinished":"2021-02-05T20:35:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"title":"OML notebook interpreters","text":"%md\n\nAn interpreter is a plug-in that allows you to use a specific data processing\nlanguage in your Oracle Machine Learning notebook. You can add multiple paragraphs, and each paragraph can be connected to different interpreters such as SQL or Python. \n\nWe create different paragraphs with different interpreters based on the code we want to run in the paragraphs. The interpreter is set at the top of the paragraph.\n\nThe available interpreters are:\n\n* **%sql** - To call the SQL interpreter and run SQL statements\n* **%script** - To call and run PL/SQL scripts\n* **%md** - To call the Markdown interpreter and generate static html from Markdown plain text\n* **%python** - To call the Python interpreter and run Python scripts\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:35+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

An interpreter is a plug-in that allows you to use a specific data processing\n
language in your Oracle Machine Learning notebook. You can add multiple paragraphs, and each paragraph can be connected to different interpreters such as SQL or Python.

\n

We create different paragraphs with different interpreters based on the code we want to run in the paragraphs. The interpreter is set at the top of the paragraph.

\n

The available interpreters are:

\n\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_693401225","id":"20210125-170339_1173864782","dateCreated":"2021-01-08T19:27:31+0000","dateStarted":"2021-02-05T20:35:36+0000","dateFinished":"2021-02-05T20:35:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"title":"Try it yourself","text":"%md\nUse the Markdown interpreter:\n\nPaste the Markdown code below into the following **%md** paragraph. Then click on the arrow to run the code. Note that it displays the formatted text, and adds a new paragraph. Notebooks save automatically, there is no need to click a save button.\n\n\n\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:36+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the Markdown interpreter:

\n

Paste the Markdown code below into the following %md paragraph. Then click on the arrow to run the code. Note that it displays the formatted text, and adds a new paragraph. Notebooks save automatically, there is no need to click a save button.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_1329918445","id":"20210125-170339_1407141092","dateCreated":"2021-01-12T05:25:21+0000","dateStarted":"2021-02-05T20:35:36+0000","dateFinished":"2021-02-05T20:35:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"#### Oracle Machine Learning for Python Live Lab\nWelcome to the **OML4Py** Live Lab!\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:37+0000","config":{"colWidth":6,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql","editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219658_-824398990","id":"20210125-170339_1767565102","dateCreated":"2021-01-12T20:47:49+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:46"},{"text":"%md\n\n\n\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:37+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219658_-889946946","id":"20210125-170339_1448334790","dateCreated":"2021-01-12T05:26:52+0000","dateStarted":"2021-01-12T20:50:04+0000","dateFinished":"2021-01-12T20:50:04+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"title":"Enable Python interpreter","text":"%md\n\nTo connect to the Python interpreter, we use **%python** at the top of a new paragraph in the notebook.\n\nRun a simple addition command in Python and select the arrow to run the paragraph. Alternatively, you can press the **Shift+Enter** keys to run commands in the notebook.","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To connect to the Python interpreter, we use %python at the top of a new paragraph in the notebook.

\n

Run a simple addition command in Python and select the arrow to run the paragraph. Alternatively, you can press the Shift+Enter keys to run commands in the notebook.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-1112594032","id":"20210125-170339_768967667","dateCreated":"2021-01-08T18:40:36+0000","dateStarted":"2021-02-05T20:35:37+0000","dateFinished":"2021-02-05T20:35:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%python\n\n1+1\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"2\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-673203002","id":"20210125-170339_75762377","dateCreated":"2021-01-08T19:48:29+0000","dateStarted":"2021-02-05T20:35:38+0000","dateFinished":"2021-02-05T20:35:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"title":"Import the oml package","text":"%md\n\nTo use OML4Py, import the **oml** package. This automatically establishes a connection to the Autonomous database.\n\nThe notebook connects to the Python interpreter, and you are ready to run Python and OML4Py commands in your notebook.\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To use OML4Py, import the oml package. This automatically establishes a connection to the Autonomous database.

\n

The notebook connects to the Python interpreter, and you are ready to run Python and OML4Py commands in your notebook.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_2125658335","id":"20210125-170339_978976480","dateCreated":"2021-01-08T19:48:40+0000","dateStarted":"2021-02-05T20:35:38+0000","dateFinished":"2021-02-05T20:35:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%python\n\nimport oml","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:39+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/undefined","fontSize":9,"results":{},"editorSetting":{"language":"text","editOnDblClick":false}},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594219658_-1377868160","id":"20210125-170339_1928130952","dateCreated":"2021-01-08T17:49:03+0000","dateStarted":"2021-02-05T20:35:39+0000","dateFinished":"2021-02-05T20:35:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"title":"Verify Autonomous Database connection","text":"%md\n\n\nRun the ***oml.isconnected()*** command to verify if the oml module is connected to the Autonomous Database. Once your notebook is connected, the command returns *True*. \n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Run the oml.isconnected() command to verify if the oml module is connected to the Autonomous Database. Once your notebook is connected, the command returns True.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_1865015923","id":"20210125-170339_1931951677","dateCreated":"2021-01-08T18:05:44+0000","dateStarted":"2021-02-05T20:35:40+0000","dateFinished":"2021-02-05T20:35:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"text":"%python\n\noml.isconnected()\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"True\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-1061656716","id":"20210125-170339_1473360082","dateCreated":"2021-01-08T17:55:44+0000","dateStarted":"2021-02-05T20:35:40+0000","dateFinished":"2021-02-05T20:35:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"title":"View help files","text":"%md\n\nThe Python ***help*** function is used to display the documentation of packages, modules, functions, classes, and keywords. The help function has the following syntax:\n\n help([object])\n\nFor example, the ***oml.create*** function creates persistent table in your database schema from data in your Python session. To view the help file for ***oml.create***, do the following:","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":false,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

The Python help function is used to display the documentation of packages, modules, functions, classes, and keywords. The help function has the following syntax:

\n
help([object])\n
\n

For example, the oml.create function creates persistent table in your database schema from data in your Python session. To view the help file for oml.create, do the following:

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_469021300","id":"20210125-170339_571144758","dateCreated":"2021-01-12T23:07:51+0000","dateStarted":"2021-02-05T20:35:41+0000","dateFinished":"2021-02-05T20:35:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%python\n\nhelp(oml.create)\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on cython_function_or_method in module oml.core.methods:\n\ncreate(x, table, oranumber=True, dbtypes=None, append=False)\n Creates a table in Oracle Database from a Python data set.\n \n Parameters\n ----------\n x : pandas.DataFrame or a list of tuples of equal size\n If ``x`` is a list of tuples of equal size, each tuple represents\n a row in the table. The column names are set to COL1, COL2, ... and so on.\n table : str\n A name for the table.\n oranumber : bool, True (default)\n If True, use SQL NUMBER for numeric columns. Otherwise, use BINARY_DOUBLE.\n Ignored if ``append`` is True.\n dbtypes : dict mapping str to str or list of str\n A list of SQL types to use on the new table. If a list, its length should\n be equal to the number of columns. If a dict, the keys are the names of the\n columns. Ignored if ``append`` is True.\n append : bool, False (default)\n Indicates whether to append the data to the existing table.\n \n Notes\n -----\n * When creating a new table, for columns whose SQL types are not specified in\n ``dbtypes``, NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. Users should set\n ``oranumber`` to False when the data contains NaN values. For string columns,\n the default type is VARCHAR2(4000), and for bytes columns, the default type\n is BLOB.\n * When ``x`` is specified with an empty pandas.DataFrame, OML creates an\n empty table. NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. VARCHAR2(4000) is\n used for columns of object dtype in the pandas.DataFrame.\n * OML does not support columns containing values of multiple data types,\n data conversion is needed or a TypeError may be raised.\n * OML determines default column types by looking at 20 random rows sampled\n from the table. For tables with less than 20 rows, all rows are used\n in column type determination. NaN values are considered as float type.\n If a column has all Nones, or has inconsistent data types that are not\n None in the sampled rows, a default column type cannot be determined,\n and a ValueError is raised unless a SQL type for the column is specified\n in ``dbtypes``.\n \n Returns\n -------\n new_table : oml.DataFrame\n A proxy object that represents the newly-created table.\n\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-117335030","id":"20210125-170339_939474766","dateCreated":"2021-01-12T23:11:03+0000","dateStarted":"2021-02-05T20:35:41+0000","dateFinished":"2021-02-05T20:35:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"title":"View help for the oml package","text":"%python\n\nhelp(oml)","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on package oml:\n\nNAME\n oml - Oracle Machine Learning for Python\n\nDESCRIPTION\n A component of the Oracle Advanced Analytics Option, Oracle Machine Learning\n for Python makes the open source Python programming language and environment\n ready for enterprise in-database data. Designed for problems involving both\n large and small volumes of data, Oracle Machine Learning for Python integrates\n Python with Oracle Database. Python users can run Python commands and scripts\n for statistical, machine learning, and graphical analyses on data stored in\n Oracle Database. Python users can develop, refine, and deploy Python scripts\n that leverage the parallelism and scalability of Oracle Database to automate\n data analysis. Data analysts and data scientists can run Python modules and\n develop and operationalize Python scripts for machine learning applications\n in one step without having to learn SQL. Oracle Machine Learning for Python\n performs function pushdown for in-database execution of core Python and\n popular Python module functions. Being integrated with Oracle Database,\n Oracle Machine Learning for Python can run any Python module via embedded\n Python while the database manages the data served to the Python engines.\n\nPACKAGE CONTENTS\n algo (package)\n automl (package)\n core (package)\n ds (package)\n embed (package)\n graphics (package)\n mlx (package)\n script (package)\n\nCLASSES\n oml.algo.model.odmModel(builtins.object)\n oml.algo.ai.ai\n oml.algo.ar.ar\n oml.algo.dt.dt\n oml.algo.em.em\n oml.algo.esa.esa\n oml.algo.glm.glm\n oml.algo.km.km\n oml.algo.nb.nb\n oml.algo.nn.nn\n oml.algo.rf.rf\n oml.algo.svd.svd\n oml.algo.svm.svm\n oml.core.number._Number(oml.core.series._Series)\n oml.core.float.Float\n oml.core.series._Series(oml.core.vector._Vector)\n oml.core.boolean.Boolean\n oml.core.bytes.Bytes\n oml.core.string.String\n oml.core.vector._Vector(builtins.object)\n oml.core.frame.DataFrame\n \n class Boolean(oml.core.series._Series)\n | Boolean series data class.\n | \n | Represents a single column of 0, 1, and NULL values in Oracle Database.\n | \n | Method resolution order:\n | Boolean\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __and__(self, other)\n | \n | __init__(self)\n | \n | __invert__(self)\n | \n | __or__(self, other)\n | \n | all(self)\n | Checks whether all elements in the Boolean series data object are True.\n | \n | Returns\n | =======\n | all: bool\n | \n | any(self)\n | Checks whether any elements in the Boolean series data object are True.\n | \n | Returns\n | -------\n | any: bool\n | \n | pull(self)\n | Pulls data represented by this object from Oracle Database into an\n | in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list of bool and None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | describe(self)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of an OML series data distribution.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``unique``\n | (number of unique entries), ``top`` (most common value), ``freq``,\n | (frequency of the most common value).\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class Bytes(oml.core.series._Series)\n | Bytes(other, dbtype)\n | \n | Binary series data class.\n | \n | Represents a single column of RAW or BLOB data in Oracle Database.\n | \n | Method resolution order:\n | Bytes\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, other, dbtype)\n | Convert underlying Oracle Database type.\n | \n | Parameters\n | ----------\n | other : oml.Bytes\n | dbtype : 'raw' or 'blob'\n | \n | len(self)\n | Computes the length of each byte string.\n | \n | Returns\n | -------\n | length : oml.Float\n | \n | pull(self)\n | Pulls data represented by this object from Oracle Database into an\n | in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list of bytes and None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | describe(self)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of an OML series data distribution.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``unique``\n | (number of unique entries), ``top`` (most common value), ``freq``,\n | (frequency of the most common value).\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class DataFrame(oml.core.vector._Vector)\n | DataFrame(other)\n | \n | Tabular dataframe class.\n | \n | Represents multiple columns of Boolean, Bytes, Float, and/or String data.\n | \n | Method resolution order:\n | DataFrame\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | KFold(self, n_splits=3, seed=12345, strata_cols=None, use_hash=True, hash_cols=None, nvl=None)\n | Splits the oml.DataFrame object randomly into k consecutive folds.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | strata_cols : a list of string values or None (default)\n | Names of the columns used for stratification. If None, stratification\n | is not performed. Must be None when ``use_hash`` is False.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | hash_cols : a list of string values or None (default)\n | If a list of string values, use the values from these named columns\n | to hash to split the data. If None, use the values from the 1st 10\n | columns to hash.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of k 2-tuples of oml.DataFrame objects\n | \n | Raises\n | ------\n | ValueError\n | * If ``hash_cols`` refers to a single LOB column.\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean, str, list of str, 2-tuple\n | * oml.Boolean : select only the rows satisfying the condition. Must be from the same data\n | source as self.\n | * str : select the column of the same name\n | * list of str : select the columns whose names matches the elements in the list.\n | * 2-tuple : The first element in the tuple denotes which rows to select.\n | It can be either a oml.Boolean or ``slice(None)`` (this selects all\n | rows). The second element in the tuple denotes which columns to select.\n | It can be either ``slice(None)`` (this selects all columns), str, list\n | of str, int, or list of int. If int or list of int, selects the\n | column(s) in the corresponding position(s).\n | \n | Returns\n | -------\n | subset : OML data object\n | Is a oml.DataFrame if has more than one column, otherwise is a OML series data object.\n | \n | __init__(self, other)\n | Convert OML series data object(s) to oml.DataFrame.\n | \n | Parameters\n | ----------\n | other : OML series data object or dict mapping str to OML series data objects\n | * OML series data object : initializes a single-column oml.DataFrame containing the\n | same data. \n | * dict : initializes a oml.DataFrame that comprises all the OML series data objects\n | in the dict in an arbitrary order. Each column in the resulting oml.DataFrame has as\n | its column name its corresponding key in the dict.\n | \n | corr(self, method='pearson', min_periods=1, skipna=True)\n | Computes pairwise correlation between all columns where possible,\n | given the type of coefficient.\n | \n | Parameters\n | ----------\n | method : 'pearson' (default), 'kendall', or 'spearman'\n | * pearson : Uses Pearson's correlation coefficient. Can only calculate\n | correlations between Float or Boolean columns.\n | * kendall : Uses Kendall's tau-b coefficient.\n | * spearman : Uses Spearman's rho coefficient.\n | min_periods : int, optional, 1 (default)\n | The minimum number of observations required per pair of columns to \n | have a valid result.\n | skipna : bool, True (default)\n | If True, NaN and (+/-)Inf values are mapped to NULL.\n | \n | Returns\n | -------\n | y : :py:class:`pandas.DataFrame`\n | \n | count(self, numeric_only=False)\n | Returns the number of elements that are not NULL for each column.\n | \n | Parameters\n | ----------\n | numeric_only : boolean, False (default)\n | Includes only Float and Boolean columns.\n | \n | Returns\n | -------\n | count : :py:class:`pandas.Series`\n | \n | crosstab(self, index, columns=None, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False, pivot=False)\n | Computes a simple cross-tabulation of two or more columns. By default,\n | computes a frequency table for the columns unless a column and\n | an aggregation function have been passed.\n | \n | Parameters\n | ----------\n | index : str or list of str\n | Names of the column(s) of the DataFrame to group by. If ``pivot`` is\n | True, these columns are displayed in the rows of the result table.\n | columns : str or list of str, optional\n | Names of the other column(s) of the Dataframe to group by. If ``pivot``\n | is True, these columns are displayed in the columns of the result\n | table.\n | values : str, optional\n | The name of the column to aggregate according to the grouped columns.\n | Requires ``aggfunc`` to be specified.\n | aggfunc : OML DataFrame aggregation function object, optional\n | The supported oml.DataFrame aggregation functions include: count, \n | max, mean, median, min, nunique, std and sum. To use ``aggfunc``, \n | specify the function object using its full name, for example, \n | ``oml.DataFrame.sum``, ``oml.DataFrame.nunique``, and so on.\n | If specified, requires ``values`` to also be specified.\n | rownames : str or list of str, None (default)\n | If specified, must match number of names in ``index``. If None, names in\n | ``index`` are used. \n | colnames : str or list of str, None (default)\n | If specified, must match number of strings in ``columns``. If None,\n | names in ``columns`` are used. Ignored if ``pivot`` is True.\n | margins : bool, False (default)\n | Includes row and column margins (subtotals)\n | margins_name : str, 'All' (default)\n | Names of the row and column that contain the totals when ``margins``\n | is True. Should be a value not contained in any of the columns specified\n | by ``index`` and ``columns``. \n | dropna : bool, True (default)\n | In addition, if ``pivot`` is True, drops columns from the result\n | table if all the entries of the column are NaN.\n | normalize : boolean, {'all', 'index', 'columns'} or {0, 1}, False (default)\n | Normalizes by dividing the values by their sum.\n | \n | * If 'all' or True, normalizes over all values.\n | * If 'index' or 0, normalizes over each row.\n | * If 'columns' or 1, normalizes over each column.\n | * If ``margins`` is True, also normalizes margin values.\n | pivot : bool, False (default)\n | If True, returns results in pivot table format. Else, returns results in\n | relational table format.\n | \n | Returns\n | -------\n | crosstab : oml.DataFrame\n | \n | See Also\n | --------\n | DataFrame.pivot_table\n | \n | cumsum(self, by, ascending=True, na_position='last', skipna=True)\n | Gets the cumulative sum of each ``Float`` or ``Boolean`` column after the\n | ``DataFrame`` object is sorted.\n | \n | Parameters\n | ----------\n | by : str or list of str\n | A single column name or list of column names by which to sort the \n | DataFrame object. Columns in ``by`` do not have to be ``Float`` or \n | ``Boolean``.\n | ascending : bool or list of bool, True (default)\n | If True, sort is in ascending order, otherwise descending. Specify \n | list for multiple sort orders. If this is a list of bools, must match\n | the length of ``by``.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NaN and None at the beginning, ``last`` places them \n | at the end.\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | cumsum : oml.DataFrame\n | \n | describe(self, percentiles=None, include=None, exclude=None)\n | Generates descriptive statistics that summarize the central tendency,\n | dispersion, and shape of the data in each column\n | \n | Parameters\n | ----------\n | percentiles : bool, list-like of numbers, or None (default), optional \n | The percentiles to include in the output for `Float` columns. All\n | must be between 0 and 1. If ``percentiles`` is None or True,\n | ``percentiles`` is set to ``[.25, .5, .75]``, which corresponds\n | to the 25th, 50th, and 75th percentiles. If `percentiles` is False,\n | only ``min`` and ``max`` stats and no other percentiles is\n | included.\n | include : 'all', list-like of OML column types or None (default), optional\n | Types of columns to include in the result. Available options:\n | \n | - 'all': Includes all columns.\n | - List of OML column types : Only includes specified types in\n | the results.\n | - None (default) : If ``Float`` columns exist and ``exclude`` is\n | None, only includes ``Float`` columns. Otherwise, includes all\n | columns.\n | exclude : list of OML column types or None (default), optional\n | Types of columns to exclude from the result. Available options:\n | \n | - List of OML column types : Excludes specified types from\n | the results.\n | - None (default) : Result excludes nothing.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.DataFrame`\n | The concatenation of the summary statistics for each column.\n | \n | See Also\n | --------\n | DataFrame.count\n | DataFrame.max\n | DataFrame.min\n | DataFrame.mean\n | DataFrame.std\n | DataFrame.select_types\n | \n | drop(self, columns)\n | Drops specified columns.\n | \n | Parameters\n | ----------\n | columns : str or list of str\n | Columns to drop from the object.\n | \n | Returns\n | -------\n | dropped : oml.DataFrame\n | \n | drop_duplicates(self, subset=None)\n | Removes duplicated rows from oml.DataFrame object.\n | \n | Use ``subset`` to consider a set of rows duplicates if they have\n | identical values for only a subset of the columns. In this case, after\n | deduplication, each of the other columns contains the minimum value\n | found across the set.\n | \n | Parameters\n | ----------\n | subset : str or list of str, optional\n | Columns to consider for identifying duplicates. If None, use all\n | columns.\n | \n | Returns\n | -------\n | deduplicated : oml.DataFrame\n | \n | dropna(self, how='any', thresh=None, subset=None)\n | Removes rows containing missing values.\n | \n | Parameters\n | ----------\n | how : {'any', 'all'}, 'any' (default)\n | Determines if row is removed from DataFrame when at least one or all\n | values are missing.\n | thresh : int, optional\n | Requires that many of missing values to drop a row from DataFrame.\n | subset : list, optional\n | The names of the columns to check for missing values.\n | \n | Returns\n | -------\n | dropped : oml.DataFrame\n | DataFrame without missing values.\n | \n | kurtosis(self, skipna=True)\n | Returns the sample kurtosis of the values for each ``Float``\n | column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | kurt : :py:class:`pandas.Series`\n | \n | max(self, skipna=True, numeric_only=False)\n | Returns the maximum value in each column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | numeric_only : boolean, False (default)\n | Includes only ``Float`` and ``Boolean`` columns. \n | \n | Returns\n | -------\n | max : :py:class:`pandas.Series`\n | \n | mean(self, skipna=True)\n | Returns the mean of the values for each ``Float`` or ``Boolean`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | mean : :py:class:`pandas.Series`\n | \n | median(self, skipna=True)\n | Returns the median of the values for each ``Float`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Exclude NaN values when computing the result\n | \n | Returns\n | -------\n | median : :py:class:`pandas.Series`\n | \n | merge(self, other, on=None, left_on=None, right_on=None, how='left', suffixes=('_l', '_r'), nvl=True)\n | Joins data sets.\n | \n | Parameters\n | ----------\n | other : an OML data set object\n | on : str or list of str, optional\n | Column names to join on. Must be found in both ``self`` and ``other``.\n | left_on : str or list of str, optional\n | Column names of ``self`` to join on.\n | right_on : str or list of str, optional\n | Column names of ``other`` to join on. If specified, must specify the same\n | number of columns as ``left_on``.\n | how : 'left' (default), 'right', 'inner', 'full'\n | * left : left outer join\n | * right : right outer join\n | * full : full outer join\n | * inner : inner join\n | \n | If ``on`` and ``left_on`` are both None, then ``how`` is ignored,\n | and a cross join is performed.\n | suffixes : sequence of length 2\n | Suffix to apply to column names on the left and right side,\n | respectively.\n | nvl : True (default), False, dict \n | * True : join condition includes NULL value\n | * False : join condition excludes NULL value\n | * dict : specifies the values that join columns use in replacement of NULL value with column names as keys\n | \n | Returns\n | -------\n | merged : oml.DataFrame\n | \n | min(self, skipna=True, numeric_only=False)\n | Returns the minimum value in each column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | numeric_only : boolean, False (default)\n | Includes only ``Float`` and ``Boolean`` columns\n | \n | Returns\n | -------\n | min : :py:class:`pandas.Series`\n | \n | nunique(self, dropna=True)\n | Returns number of unique values for each column of DataFrame.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : pandas.Series\n | \n | pivot_table(self, index, columns=None, values=None, aggfunc=, margins=False, dropna=True, margins_name='All')\n | Converts data set to a spreadsheet-style pivot table. Due to the Oracle\n | 1000 column limit, pivot tables with more than 1000 columns are\n | automatically truncated to display the categories with the most entries\n | for each value column.\n | \n | Parameters\n | ----------\n | index : str or list of str\n | Names of columns containing the keys to group by on the pivot table\n | index.\n | columns : str or list of str, optional\n | Names of columns containing the keys to group by on the pivot table\n | columns. \n | values : str or list of str, optional\n | Names of columns to aggregate on. If None, values are inferred \n | as all columns not in ``index`` or ``columns``.\n | aggfunc : OML DataFrame aggregation function or a list of them, oml.DataFrame.mean (default)\n | The supported oml.DataFrame aggregation functions include: count, max,\n | mean, median, min, nunique, std and sum. When using aggregation\n | functions, specify the function object using its full name, for example,\n | ``oml.DataFrame.sum``, ``oml.DataFrame.nunique``, and so on.\n | If ``aggfunc`` contains more than one function, each function is \n | applied to each column in ``values``. If the function does not apply to\n | the type of a column in ``values``, the result table skips applying \n | the function to the particular column. \n | margins : bool, False (default)\n | Include row and column margins (subtotals)\n | dropna : bool, True (default)\n | Unless ``columns`` is None, drop column labels from the result table if\n | all the entries corresponding to the column label are NaN for all\n | aggregations.\n | margins_name : string, 'All' (default)\n | Names of the row and column that contain the totals when ``margins``\n | is True. Should be a value not contained in any of the columns specified\n | by ``index`` and ``columns``. \n | \n | Returns\n | -------\n | pivoted : oml.DataFrame\n | \n | See Also\n | --------\n | DataFrame.crosstab\n | \n | pull(self, aslist=False)\n | Pulls data represented by the DataFrame from Oracle Database\n | into an in-memory Python object.\n | \n | Parameters\n | ----------\n | aslist : bool\n | If False, returns a pandas.DataFrame. Otherwise, returns the data\n | as a list of tuples.\n | \n | Returns\n | -------\n | pulled_obj : :py:class:`pandas.DataFrame` or list of tuples\n | \n | rename(self, columns)\n | Renames columns.\n | \n | Parameters\n | ----------\n | columns : dict or list\n | ``dict`` contains old and new column names.\n | ``list`` contains the new names for all the columns in order.\n | \n | Notes\n | -----\n | The method changes the column names of the caller DataFrame object too.\n | \n | Returns\n | -------\n | renamed : DataFrame\n | \n | replace(self, old, new, default=None, columns=None)\n | Replace values given in `old` with `new` in specified columns.\n | \n | Parameters\n | ----------\n | columns : list of str or None (default)\n | Columns to look for values in `old`. If None, then all columns\n | of DataFrame will be replaced.\n | old : list of float, or list of str\n | Specifying the old values. When specified with a list of float, it \n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | new : list of float, or list of str\n | A list of the same length as argument `old` specifying \n | the new values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | default : float, str, or None (default)\n | A single value to use for the non-matched elements in argument\n | `old`. If None, non-matched elements will preserve their\n | original values. If not None, data type should be consistent\n | with values in `new`. Must be set when `old` and `new` contain \n | values of different data types.\n | \n | Returns\n | -------\n | replaced : oml.DataFrame\n | \n | Raises\n | ------\n | ValueError\n | * if values in `old` have data types inconsistent with original values\n | in the target columns\n | * if `default` is specifed with a non-None value which has data type\n | inconsistent with values in `new`\n | * if `default` is None when `old` and `new` contain values of different \n | data types\n | \n | round(self, decimals=0)\n | Rounds oml.Float values in the oml.DataFrame object to \n | the specified decimal place.\n | \n | Parameters\n | ----------\n | decimals : non-negative int\n | \n | Returns\n | -------\n | rounded: oml.DataFrame\n | \n | sample(self, frac=None, n=None, random_state=None)\n | Return a random sample data sets from an oml.DataFrame object.\n | \n | Parameters\n | ----------\n | frac : a float value\n | Fraction of data sets to return. The value should be between 0 and 1.\n | Cannot be used with n.\n | n : an integer value\n | Number of rows to return. Default = 1 if frac = None.\n | Cannot be used with frac. \n | random_state : int or 12345 (default)\n | The seed to use for random sampling.\n | \n | Returns\n | -------\n | sample_data : an oml.DataFrame objects\n | It contains the random sample rows from an oml.DataFrame object.\n | The fraction of returned data sets is specified by the frac parameter.\n | \n | select_types(self, include=None, exclude=None)\n | Returns the subset of columns include/excluding columns based on their OML\n | type.\n | \n | Parameters\n | ----------\n | include, exclude : list of OML column types\n | A selection of OML column types to be included/excluded. At least one of\n | these parameters must be supplied. \n | \n | Raises\n | ------\n | ValueError\n | * If both of ``include`` and ``exclude`` are None.\n | * If ``include`` and ``exclude`` have overlapping elements.\n | \n | Returns\n | -------\n | subset : oml.DataFrame\n | \n | skew(self, skipna=True)\n | Returns the sample skewness of the values for each ``Float``\n | column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | skew : :py:class:`pandas.Series`\n | \n | sort_values(self, by, ascending=True, na_position='last')\n | Specifies the order in which rows appear in the result set.\n | \n | Parameters\n | ----------\n | by : str or list of str\n | Column names or list of column names.\n | ascending : bool or list of bool, True (default)\n | If True, sort is in ascending order. Sort is in descending order\n | otherwise. Specify list for multiple sort orders. If this is a list of\n | bools, must match the length of ``by``.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them \n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : oml.DataFrame\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, strata_cols=None, use_hash=True, hash_cols=None, nvl=None)\n | Splits the oml.DataFrame object randomly into multiple data sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) default\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | strata_cols: a list of string values or None (default):\n | Names of the columns used for stratification. If None, stratification\n | is not performed. Must be None when use_hash is False.\n | use_hash: boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use random\n | number to split the data.\n | hash_cols: a list of string values or None (default):\n | If a list of string values, use the values from these named columns\n | to hash to split the data. If None, use the values from the 1st 10\n | columns to hash.\n | nvl: numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of oml.DataFrame objects\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | ValueError\n | * If ``hash_cols`` refers to a single LOB column.\n | \n | std(self, skipna=True)\n | Returns the sample standard deviation of the values of each ``Float`` or\n | ``Boolean`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | std : :py:class:`pandas.Series`\n | \n | sum(self, skipna=True)\n | Returns the sum of the values of each ``Float`` or ``Boolean`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Exclude NaN values when computing the result\n | \n | Returns\n | -------\n | sum : :py:class:`pandas.Series`\n | \n | t_dot(self, other=None, skipna=True, pull_from_db=True)\n | Calculates the matrix cross-product of self with other.\n | \n | Equivalent to transposing self first, then multiplying it with other. \n | \n | Parameters\n | ----------\n | other : oml.DataFrame, optional\n | If not specified, self is used.\n | skipna : bool, True (default)\n | Treats NaN entries as 0.\n | pull_from_db : bool, True (default)\n | If True, returns a pandas.DataFrame. If False, returns a\n | oml.DataFrame consisting of three columns:\n | \n | - ROWID: the row number of the resulting matrix \n | - COLID: the column number of the resulting matrix \n | - VALUE: the value at the corresponding position of the matrix \n | \n | Returns\n | -------\n | prod : float, :py:class:`pandas.Series`, or :py:class:`pandas.DataFrame`\n | \n | See Also\n | --------\n | oml.Float.dot\n | \n | ----------------------------------------------------------------------\n | Readonly properties defined here:\n | \n | columns\n | The column names of the data set.\n | \n | dtypes\n | The types of the columns of the data set.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class Float(oml.core.number._Number)\n | Float(other, dbtype=None)\n | \n | Numeric series data class.\n | \n | Represents a single column of NUMBER, BINARY_DOUBLE or BINARY_FLOAT data \n | in Oracle Database.\n | \n | Method resolution order:\n | Float\n | oml.core.number._Number\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __abs__(self)\n | Return the absolute value of every element in ``self``.\n | \n | Equivalent to ``abs(self)``.\n | \n | Returns\n | -------\n | absval : oml.Float\n | \n | __add__(self, other)\n | Equivalent to ``self + other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : add the scalar to each element in ``self``. \n | * oml.Float : must come from the same data source. Add corresponding\n | elements in ``self`` and ``other``.\n | \n | Returns\n | -------\n | sum : oml.Float\n | \n | __contains__(self, item)\n | Check whether all elements in ``item`` exists in the Float series\n | \n | Equivalent to ``item in self``.\n | \n | Parameters\n | ----------\n | item : int/float, list of int/float, oml.Float\n | Values to check in series\n | \n | Returns\n | -------\n | contains : bool\n | Returns `True` if all elements exists, otherwise `False`\n | \n | __divmod__(self, other)\n | Equivalent to ``divmod(self, other)``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : Find the quotient and remainder when each element in ``self`` is\n | divided by the scalar.\n | * oml.Float : must come from the same data source. Find the quotient and\n | remainder when each element in ``self`` is divided by the corresponding element\n | in ``other``.\n | \n | Returns\n | -------\n | divrem : oml.DataFrame\n | The first column contains the floor of the quotient, and the second column\n | contains the remainder.\n | \n | __floordiv__(self, other)\n | Equivalent to ``self // other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : divide each element in ``self`` by the scalar. \n | * oml.Float : must come from the same data source. Divide each element in\n | ``self`` by the corresponding element in ``other``.\n | \n | Returns\n | -------\n | quotient : oml.Float\n | \n | __init__(self, other, dbtype=None)\n | Convert to oml.Float, or convert underlying Oracle Database type.\n | \n | Parameters\n | ----------\n | other : oml.Boolean or oml.Float\n | * oml.Boolean : initialize a oml.Float object that has value 1 (resp. 0)\n | wherever ``other`` has value True (resp. False).\n | * oml.Float : initialize a oml.Float object with the same data as \n | ``other``, except the underlying Oracle Database type has been converted\n | to the one specified by ``dbtype``. \n | dbtype : 'number' or 'binary_double'\n | Ignored if ``other`` is type ``oml.Boolean``. Must be specified if ``other``\n | is type ``oml.Float``.\n | \n | __matmul__(self, other)\n | Equivalent to ``self @ other`` and ``self.dot(other)``.\n | \n | Returns the inner product with an oml.Float. Matrix multiplication with a\n | oml.DataFrame.\n | \n | Parameters\n | ----------\n | other : oml.Float or oml.DataFrame\n | \n | Returns\n | -------\n | matprod : oml.Float\n | \n | See Also\n | --------\n | Float.dot\n | \n | __mod__(self, other)\n | Equivalent to ``self % other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : Find the remainder when each element in ``self`` is divided by the\n | scalar.\n | * oml.Float : must come from the same data source. Find the remainder when each\n | element in ``self`` is divided by the corresponding element in ``other``.\n | \n | Returns\n | -------\n | remainder : oml.Float\n | \n | __mul__(self, other)\n | Equivalent to ``self * other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : multiply the scalar with each element in ``self``. \n | * oml.Float : must come from the same data source. Multiply corresponding\n | elements in ``self`` and ``other``.\n | \n | Returns\n | -------\n | product : oml.Float\n | \n | __neg__(self)\n | Return the negation of every element in ``self``. Equivalent to ``-self``.\n | \n | Returns\n | -------\n | negation : oml.Float\n | \n | __pow__(self, other)\n | Equivalent to ``self ** other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : Raise each element in ``self`` to the power of the scalar. \n | * oml.Float : must come from the same data source. Raise each element in \n | ``self`` to the power of the corresponding element in ``other``.\n | \n | Returns\n | -------\n | power : oml.Float\n | \n | __sub__(self, other)\n | Equivalent to ``self - other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : subtract the scalar from each element in ``self``. \n | * oml.Float : must come from the same data source. From each element in\n | ``self``, subtract the corresponding element in ``other``.\n | \n | Returns\n | -------\n | difference : oml.Float\n | \n | __truediv__(self, other)\n | Equivalent to ``self / other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : divide each element in ``self`` by the scalar. \n | * oml.Float : must come from the same data source. Divide each element in\n | ``self`` by the corresponding element in ``other``.\n | \n | Returns\n | -------\n | quotient : oml.Float\n | \n | ceil(self)\n | Returns the ceiling of each element in the Float series data object.\n | \n | Returns\n | -------\n | ceil : oml.Float\n | \n | cut(self, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)\n | Returns the indices of half-open bins to which each value belongs.\n | \n | Parameters\n | ----------\n | bins : int or strictly monotonically increasing sequence of float/int\n | If int, defines number of equal-width bins in the range of this column.\n | In this case, to include the min and max value, the range is extended by\n | .1% on each side where the bin does not include the endpoint.\n | If a sequence, defines bin edges allowing for non-uniform bin-widths. In \n | this case, the range of x is not extended.\n | right : bool, True (default)\n | Indicates whether the bins include the rightmost edge or the leftmost\n | edge.\n | labels : sequence of unique str, int, or float values, False, or None (default)\n | If a sequence, must be the same length as the resulting number of bins\n | and must have values of same type. If False, bins are sequentially\n | labeled with integers. If None, bins are labeled with the intervals\n | they correspond to.\n | retbins : bool, False (default)\n | Indicates whether to return the bin edges or not. \n | precision : int, 3 (default)\n | When ``labels`` is None, determines the precision of the bin labels.\n | include_lowest : bool, False (default) \n | Indicates whether the first interval should be left-inclusive.\n | \n | Returns\n | -------\n | out : oml.Float or oml.String\n | If labels are ints or floats, return oml.Float.\n | If labels are str, return oml.String.\n | bins : :py:class:`numpy.ndarray` of floats\n | Returned only if ``retbins`` is True.\n | \n | describe(self, percentiles=None)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of the OML series data distribution.\n | \n | Parameters\n | ----------\n | percentiles : list-like of numbers, optional \n | The percentiles to include in the output. All must be between 0 and 1.\n | The default is [.25, .5, .75], which corresponds to the inclusion of \n | the 25th, 50th, and 75th percentiles.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``mean``, ``std``,\n | ``min``, ``max``, and the specified ``percentiles``. The 50th\n | percentile is always included.\n | \n | dot(self, other=None, skipna=True)\n | Returns the inner product with an oml.Float. Matrix multiplication with a\n | oml.DataFrame.\n | \n | Can be called using self @ other.\n | \n | Parameters\n | ----------\n | other : oml.Float or oml.DataFrame, optional\n | If not specified, self is used.\n | skipna : bool, True (default)\n | Treats NaN entries as 0.\n | \n | Returns\n | -------\n | dot_product : :py:class:`pandas.Series` or float\n | \n | exp(self)\n | Returns element-wise e to the power of values in the Float series data object.\n | \n | Returns\n | -------\n | exp : oml.Float\n | \n | floor(self)\n | Returns the floor of each element in the Float series data object.\n | \n | Returns\n | -------\n | floor : oml.Float\n | \n | isinf(self)\n | Detects infinite values element-wise in the Float series data object.\n | \n | Returns\n | -------\n | isinf : oml.Boolean\n | \n | isnan(self)\n | Detects a NaN (not a number) element from Float object.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates NaN for each element.\n | \n | log(self, base=None)\n | Returns element-wise logarithm, to the given ``base``, of values\n | in the Float series data object.\n | \n | Parameters\n | ----------\n | base : int, float, optional\n | The base of the logarithm, by default natural logarithm\n | \n | Returns\n | -------\n | log : oml.Float\n | \n | replace(self, old, new, default=None)\n | Replace values given in `old` with `new`.\n | \n | Parameters\n | ----------\n | old : list of float, or list of str\n | Specifying the old values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | new : list of float, or list of str\n | A list of the same length as argument `old` specifying\n | the new values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | default : float, str, or None (default)\n | A single value to use for the non-matched elements in argument\n | `old`. If None, non-matched elements will preserve their\n | original values. If not None, data type should be consistent\n | with values in `new`. Must be set when `old` and `new` contain\n | values of different data types.\n | \n | Returns\n | -------\n | replaced : oml.Float\n | \n | Raises\n | ------\n | ValueError\n | * if values in `old` have data types inconsistent with original values\n | * if `default` is specifed with a non-None value which has data type \n | inconsistent with values in `new`\n | * if `default` is None when `old` and `new` contain values of different\n | data types\n | \n | round(self, decimals=0)\n | Rounds oml.Float values to the specified decimal place.\n | \n | Parameters\n | ----------\n | decimals : non-negative int\n | \n | Returns\n | -------\n | rounded : oml.Float\n | \n | sqrt(self)\n | Returns the square root of each element in the Float series data object.\n | \n | Returns\n | -------\n | sqrt : oml.Float\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.number._Number:\n | \n | cumsum(self, ascending=True, na_position='last', skipna=True)\n | Gets the cumulative sum after the OML series data object is sorted.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | Sorts ascending, otherwise descending.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NaN and None at the beginning, ``last`` places them \n | at the end.\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | cumsum : oml.Float\n | \n | kurtosis(self, skipna=True)\n | Returns the sample kurtosis of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | kurt : float or nan\n | \n | mean(self, skipna=True)\n | Returns the mean of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | mean : float or numpy.nan\n | \n | median(self, skipna=True)\n | Returns the median of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | median : float or numpy.nan\n | \n | skew(self, skipna=True)\n | Returns the sample skewness of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | skew : float or nan\n | \n | std(self, skipna=True)\n | Returns the sample standard deviation of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | std : float or numpy.nan\n | \n | sum(self, skipna=True)\n | Returns the sum of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | sum : float or numpy.nan\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | pull(self)\n | Pulls data represented by the series data object from Oracle Database\n | into an in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class String(oml.core.series._Series)\n | String(other, dbtype)\n | \n | Character series data class.\n | \n | Represents a single column of VARCHAR2, CHAR, or CLOB data in Oracle Database.\n | \n | Method resolution order:\n | String\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __contains__(self, item)\n | Check whether all elements in ``item`` exists in the String series\n | \n | Equivalent to ``item in self``.\n | \n | Parameters\n | ----------\n | item : str, list of str, oml.String\n | Values to check in series\n | \n | Returns\n | -------\n | contains : bool\n | Returns ``True`` if all elements exist, otherwise ``False``.\n | \n | __init__(self, other, dbtype)\n | Convert underlying Oracle Database type.\n | \n | Parameters\n | ----------\n | other : oml.String\n | dbtype : 'varchar2' or 'clob'\n | \n | count_pattern(self, pat, flags=0)\n | Counts the number of occurrences of the pattern in each string. \n | \n | Parameters\n | ----------\n | pat : str that is a valid regular expression conforming to the POSIX standard\n | flags : int, 0 (default, no flags)\n | The following :py:mod:`python:re` module flags are supported:\n | \n | - :py:data:`python:re.I`/:py:data:`python:re.IGNORECASE` : Performs case-insensitive matching.\n | - :py:data:`python:re.M`/:py:data:`python:re.MULTILINE` : Treats the source string as multiple lines.\n | Interprets the caret (^) and dollar sign ($) as the start and end,\n | respectively, of any line anywhere in source string. Without this flag,\n | the caret and dollar sign match only the start and end, respectively, of\n | the source string.\n | - :py:data:`python:re.S`/:py:data:`python:re.DOTALL` : Allows the period (.) to match all characters,\n | including the newline character. Without this flag, the period matches all\n | characters except the newline character.\n | \n | Multiple flags can be specifed by bitwise OR-ing them.\n | \n | Returns\n | -------\n | counts : oml.Float\n | \n | find(self, sub, start=0)\n | Returns the lowest index in each string where substring is found that is\n | greater than or equal to ``start``. Returns -1 on failure.\n | \n | Parameters\n | ----------\n | sub : str\n | The text expression to search.\n | start : int\n | A nonnegative integer indicating when the function begins the search. \n | \n | Returns\n | -------\n | found : oml.Float\n | \n | len(self)\n | Computes the length of each string.\n | \n | Returns\n | -------\n | length : oml.Float\n | \n | pull(self)\n | Pulls data represented by this object from Oracle Database into an\n | in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list of str and None\n | \n | replace(self, old, new, default=None)\n | Replace values given in `old` with `new`.\n | \n | Parameters\n | ----------\n | old : list of float, or list of str\n | Specifying the old values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | new : list of float, or list of str\n | A list of the same length as argument `old` specifying\n | the new values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | default : float, str, or None (default)\n | A single value to use for the non-matched elements in argument\n | `old`. If None, non-matched elements will preserve their\n | original values. If not None, data type should be consistent\n | with values in `new`. Must be set when `old` and `new` contain \n | values of different data types.\n | \n | Returns\n | -------\n | replaced : oml.String\n | \n | Raises\n | ------\n | ValueError\n | * if values in `old` have data types inconsistent with original values\n | * if `default` is specifed with a non-None value which has data type\n | inconsistent with values in `new`\n | * if `default` is None when `old` and `new` contain values of different\n | data types\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | describe(self)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of an OML series data distribution.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``unique``\n | (number of unique entries), ``top`` (most common value), ``freq``,\n | (frequency of the most common value).\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class ai(oml.algo.model.odmModel)\n | ai(model_name=None, model_owner=None, **params)\n | \n | In-database `Attribute Importance `_ Model\n | \n | Computes the relative importance of variables (aka attributes or columns) when predicting\n | a target variable (numeric or categorical column). This function exposes the \n | corresponding Oracle Advanced Analytics in-database algorithm. \n | Oracle Advanced Analytics does not support the prediction functions\n | for attribute importance. The results of attribute importance are the attributes\n | of the build data ranked according to their predictive influence. The ranking and\n | the measure of importance can be used for selecting attributes.\n | \n | :Attributes:\n | \n | **importance** : oml.DataFrame\n | \n | Relative importance of predictor variables for predicting a response variable.\n | It includes the following components:\n | \n | - variable: The name of the predictor variable\n | - importance: The importance of the predictor variable\n | - rank: The predictor variable rank based on the importance value.\n | \n | Method resolution order:\n | ai\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of Attribute Importance object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Attribute Importance model to create an oml.ai object from.\n | The specified database model is not dropped when the oml.ai object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Attribute Importance model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings or Algorithm-specific Settings are not\n | applicable to Attribute Importance model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None)\n | Fits an Attribute Importance Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.ai object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.ai object is deleted\n | unless oml.ai object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class ar(oml.algo.model.odmModel)\n | ar(model_name=None, model_owner=None, **params)\n | \n | In-database `Association Rules `_ Model\n | \n | Builds an Association Rules Model used to discover the probability of item co-occurrence\n | in a collection. This function exposes the corresponding Oracle Advanced Analytics \n | in-database algorithm. The relationships between co-occurring items are expressed as \n | association rules.\n | Oracle Advanced Analytics does not support the prediction functions for association modeling.\n | The results of an association model are the rules that identify patterns of\n | association within the data. Association rules can be ranked by support\n | (How often do these items occur together in the data?) and confidence\n | (How likely are these items to occur together in the data?).\n | \n | :Attributes:\n | \n | **rules** : oml.DataFrame\n | \n | Details of each rule that shows \n | how the appearance of a set of items in a transactional\n | record implies the existence of another set of items.\n | It includes the following components:\n | \n | - rule_id: The identifier of the rule\n | - number_of_items: The total number of attributes referenced in the antecedent and consequent of the rule\n | - lhs_name: The name of the antecedent.\n | - lhs_value: The value of the antecedent.\n | - rhs_name: The name of the consequent.\n | - rhs_value: The value of the consequent.\n | - support: The number of transactions that satisfy the rule.\n | - confidence: The likelihood of a transaction satisfying the rule.\n | - revconfidence: The number of transactions in which the rule occurs divided by the number of transactions in which the consequent occurs.\n | - lift: The degree of improvement in the prediction over random chance when the rule is satisfied.\n | \n | **itemsets** : oml.DataFrame\n | \n | Description of the item sets from the model built.\n | It includes the following components:\n | \n | - itemset_id: The itemset identifier\n | - support: The support of the itemset\n | - number_of_items: The number of items in the itemset\n | - item_name: The name of the item\n | - item_value: The value of the item\n | \n | Method resolution order:\n | ar\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of Association Rules object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Association Rules model to create an oml.ar object from.\n | The specified database model is not dropped when the oml.ar object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Association Rules model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic\n | Data Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Association are applicable.\n | No algorithm-specific Settings are applicable to Association model.\n | \n | __repr__(self)\n | \n | fit(self, x, model_name=None, case_id=None)\n | Fits an Association Rules Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.ar object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.ar object is deleted\n | unless oml.ar object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class dt(oml.algo.model.odmModel)\n | dt(model_name=None, model_owner=None, **params)\n | \n | In-database `Decision Tree `_ Model\n | \n | Builds a Decision Tree Model used to generate rules (conditional statements \n | that can easily be understood by humans and be used within a database to identify \n | a set of records) to predict a target value (numeric or categorical column). This \n | function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | A decision tree predicts a target value by asking a sequence of questions. \n | At a given stage in the sequence, the question that is asked depends upon the \n | answers to the previous questions. The goal is to ask questions that, taken \n | together, uniquely identify specific target values. Graphically, this process \n | forms a tree structure. During the training process, the Decision Tree algorithm \n | must repeatedly find the most efficient way to split a set of cases (records) \n | into two child nodes. The model offers two homogeneity metrics, gini and entropy, \n | for calculating the splits. The default metric is gini.\n | \n | \n | :Attributes:\n | \n | **nodes** : oml.DataFrame\n | \n | The node summary information with tree node details.\n | It includes the following components:\n | \n | - parent: The node ID of the parent\n | - node.id: The node ID\n | - row.count: The number of records in the training set that belong to the node\n | - prediction: The predicted Target value\n | - split: The main split\n | - surrogate: The surrogate split\n | - full.splits: The full splitting criterion\n | \n | **distributions** : oml.DataFrame\n | \n | The target class distributions at each tree node.\n | It includes the following components:\n | \n | - node_id: The node ID\n | - target_value: The target value\n | - target_count: The number of rows for a given target_value\n | \n | Method resolution order:\n | dt\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of dt object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Decision Tree model to create an oml.dt object from.\n | The specified database model is not dropped when the oml.dt object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Decision Tree model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Decision Tree model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, cost_matrix=None, case_id=None)\n | Fits a decision tree model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.dt object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.dt object is deleted\n | unless oml.dt object is saved into a datastore.\n | cost_matrix : OML DataFrame, list of ints, floats or None (default)\n | An optional numerical matrix that specifies the costs for incorrectly\n | predicting the target values. The first value represents the actual target value.\n | The second value represents the predicted target value. The third value is the cost.\n | In general, the diagonal entries of the matrix are zeros. Refer to `Oracle Data\n | Mining User's Guide `_\n | for more details about cost matrix.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if proba is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols``, and the\n | results. The results include the most likely target class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data and returns the mean accuracy.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class em(oml.algo.model.odmModel)\n | em(n_clusters=None, model_name=None, model_owner=None, **params)\n | \n | In-database `Expectation Maximization `_ Model\n | \n | Builds an Expectation Maximization (EM) Model used to performs probabilistic \n | clustering based on a density estimation algorithm. This function exposes the \n | corresponding Oracle Advanced Analytics in-database algorithm. In density estimation, \n | the goal is to construct a density function that captures how a given population is \n | distributed. The density estimate is based on observed data that represents a \n | sample of the population.\n | \n | :Attributes:\n | \n | **clusters** : oml.DataFrame\n | \n | The general per-cluster information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - cluster_name: The name of a cluster in the model\n | - record_count: The number of rows used in the build\n | - parent: The ID of the parent\n | - tree_level: The number of splits from the root\n | - left_child_id: The ID of the left child\n | - right_child_id: The ID of the right child\n | \n | **taxonomy**: oml.DataFrame\n | \n | The parent/child cluster relationship.\n | It includes the following components:\n | \n | - parent_cluster_id: The ID of the parent cluster\n | - child_cluster_id: The ID of the child cluster\n | \n | **centroids**: oml.DataFrame\n | \n | Per cluster-attribute center (centroid) information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - attribute_name: The attribute name\n | - mean: The average value of a numeric attribute\n | - mode_value: The most frequent value of a categorical attribute\n | - variance: The variance of a numeric attribute\n | \n | **leaf_cluster_counts**: pandas.DataFrame\n | \n | Leaf clusters with support.\n | It includes the following components:\n | \n | - cluster_id: The ID of a leaf cluster in the model\n | - cnt: The number of records in a leaf cluster\n | \n | **attribute_importance**: oml.DataFrame\n | \n | Attribute importance of the fitted model.\n | It includes the following components:\n | \n | - attribute_name: The attribute name\n | - attribute_importance_value: The attribute importance for an attribute\n | - attribute_rank: The rank of the attribute based on importance\n | \n | **projection**: oml.DataFrame\n | \n | The coefficients used by random projections to map nested columns to a lower dimensional space.\n | It exists only when nested or text data is present in the build data.\n | It includes the following components:\n | \n | - feature_name: The name of feature\n | - attribute_name: The attribute name\n | - attribute_value: The attribute value\n | - coefficient: The projection coefficient for an attribute\n | \n | **components**: oml.DataFrame\n | \n | EM components information about their prior probabilities and what cluster they map to.\n | It includes the following components:\n | \n | - component_id: The unique identifier of a component\n | - cluster_id: The ID of a cluster in the model\n | - prior_probability: The component prior probability\n | \n | **cluster_hists**: oml.DataFrame\n | Cluster histogram information.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - variable: The attribute name\n | - bin.id: The ID of a bin\n | - lower.bound: The numeric lower bin boundary\n | - upper.bound: The numeric upper bin boundary\n | - label: The label of the cluster\n | - count: The histogram count\n | \n | **rules**: oml.DataFrame\n | \n | Conditions for a case to be assigned with some probability to a cluster.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - rhs.support: The record count\n | - rhs.conf: The record confidence\n | - lhr.support: The rule support\n | - lhs.conf: The rule confidence\n | - lhs.var: The attribute predicate name\n | - lhs.var.support: The attribute predicate support\n | - lhs.var.conf: The attribute predicate confidence\n | - predicate: The attribute predicate\n | \n | Method resolution order:\n | em\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, n_clusters=None, model_name=None, model_owner=None, **params)\n | Initializes an instance of em object.\n | \n | Parameters\n | ----------\n | n_clusters : positive integer, None (default)\n | The number of clusters. If n_clusters is None, the number of clusters will be determined\n | either by current setting parameters or automatically by the algorithm.\n | model_name : string or None (default)\n | The name of an existing database Expectation Maximization model to create an oml.em object from.\n | The specified database model is not dropped when the oml.em object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Expectation Maximization model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Clustering and `Algorithm-specific\n | Settings `_\n | are applicable to Expectation Maximization model.\n | \n | __repr__(self)\n | \n | fit(self, x, model_name=None, case_id=None)\n | Fits an Expectation Maximization Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.em object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.em object is deleted\n | unless oml.em object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. If the mode is 'class', the results include the most likely\n | target class and its probability. If mode is 'raw', the results\n | include for each target class, the probability belonging\n | to that class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each cluster on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned clusters to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each cluster, the probability\n | belonging to that cluster.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class esa(oml.algo.model.odmModel)\n | esa(model_name=None, model_owner=None, **params)\n | \n | In-database `Explicit Semantic Analysis `_ Model\n | \n | Builds an Explicit Semantic Analysis (ESA) Model to be used for feature extraction. \n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | ESA uses concepts of an existing knowledge base as features rather than latent\n | features derived by latent semantic analysis methods such as Singular\n | Value Decomposition and Latent Dirichlet Allocation. Each row, for example,\n | a document in the training data maps to a feature, that is, a concept.\n | ESA works best with concepts represented by text documents.\n | It has multiple applications in the area of text processing, most\n | notably semantic relatedness (similarity) and explicit topic modeling.\n | Text similarity use cases might involve, for example, resume matching, searching\n | for similar blog postings, and so on.\n | \n | :Attributes:\n | \n | **features** : oml.DataFrame\n | \n | Description of each feature extracted. \n | It includes the following components:\n | \n | - feature_id: The unique identifier of a feature as it appears in the training data\n | - attribute_name: The attribute name\n | - attribute_value: The attribute value\n | - coefficient: The coefficient (weight) associated with the attribute in a particular feature.\n | \n | Method resolution order:\n | esa\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of esa object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Explicit Semantic Analysis model to create an oml.esa object from.\n | The specified database model is not dropped when the oml.esa object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Explicit Semantic Analysis model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Feature Extraction and `Algorithm-specific\n | Settings `_\n | are applicable to Explicit Semantic Analysis model.\n | \n | __repr__(self)\n | \n | feature_compare(self, x, compare_cols=None, supplemental_cols=None)\n | Compares features of data and generates relatedness.\n | \n | Parameters\n | ----------\n | x : an OML object\n | The data used to measure relatedness.\n | compare_cols : str, a list of str or None (default)\n | The column(s) used to measure data relatedness.\n | If None, all the columns of ``x`` are compared to measure relatedness.\n | supplemental_cols : a list of str or None (default)\n | A list of columns to display along with the resulting 'SIMILARITY' column.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains a 'SIMILARITY' column that measures relatedness and supplementary columns if specified.\n | \n | fit(self, x, model_name=None, case_id=None, ctx_settings=None)\n | Fits an ESA Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.esa object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.esa object is deleted\n | unless oml.esa object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include the most likely feature and its probability.\n | \n | transform(self, x, supplemental_cols=None, topN=None)\n | Make predictions and return relevancy for each feature on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned values to\n | the specified number of features that have the highest topN values.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the relevancy for each feature on new data and the specified ``supplemental_cols``.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class glm(oml.algo.model.odmModel)\n | glm(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Generalized Linear Models `_\n | \n | Builds Generalized Linear Models (GLM), which include and extend the class of \n | linear models (linear regression), to be used for classification or regression. \n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | Generalized linear models relax the restrictions on linear models, which are often \n | violated in practice. For example, binary (yes/no or 0/1) responses do not have same \n | variance across classes. This model uses a parametric modeling technique. Parametric \n | models make assumptions about the distribution of the data. When the assumptions are \n | met, parametric models can be more efficient than non-parametric models.\n | \n | :Attributes:\n | \n | **coef** : oml.DataFrame\n | \n | The coefficients of the GLM model, one for each predictor variable.\n | It includes the following components:\n | \n | - nonreference: The target value used as nonreference\n | - name: The attribute name\n | - level: The attribute value\n | - estimate: The estimated coefficient\n | \n | **fit_details**: oml.DataFrame\n | \n | The model fit details such as adjusted_r_square, error_mean_square and so on.\n | It includes the following components:\n | \n | - name: The fit detail name\n | - value: The fit detail value\n | \n | **deviance**: float\n | \n | Minus twice the maximized log-likelihood, up to a constant.\n | \n | **null_deviance**: float\n | \n | The deviance for the null (intercept only) model.\n | \n | **aic**: float\n | \n | Akaike information criterion.\n | \n | **rank**: integer\n | \n | The numeric rank of the fitted model.\n | \n | **df_residual**: float\n | \n | The residual degrees of freedom.\n | \n | **df_null**: float\n | \n | The residual degrees of freedom for the null model.\n | \n | **converged**: bool\n | \n | The indicator for whether the model converged.\n | \n | **nonreference**: int or str\n | \n | For logistic regression, the response values that represents success.\n | \n | Method resolution order:\n | glm\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of glm object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' or 'REGRESSION', 'CLASSIFICATION' (default)\n | Type of model mining functionality\n | model_name : string or None (default)\n | The name of an existing database Generalized Linear Model to create an oml.glm object from.\n | The specified database model is not dropped when the oml.glm object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Generalized Linear Model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Generalized Linear Model model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, ctx_settings=None)\n | Fits a GLM Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.glm object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.glm object is deleted\n | unless oml.glm object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None, confint=None, level=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | confint : bool, False (default)\n | A logical indicator for whether to produce confidence intervals.\n | for the predicted values.\n | level : float between 0 and 1 or None (default)\n | A numeric value within [0, 1] to use for the confidence level.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True for classification.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and optionally its probability and confidence\n | intervals. For a linear regression model, the results consist of a column\n | for the prediction and optionally its confidence intervals.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | residuals(self, x, y)\n | Return the deviance residuals, which includes the following components:\n | - deviance: The deviance residual\n | - pearson: The Pearson residual\n | - response: The residual of the working response.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | \n | Return: oml.DataFrame\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class km(oml.algo.model.odmModel)\n | km(n_clusters=None, model_name=None, model_owner=None, **params)\n | \n | In-database `k-means `_ Model\n | \n | Builds a K-Means (KM) Model that uses a distance-based clustering algorithm to \n | partition data into a specified number of clusters. This function exposes the \n | corresponding Oracle Advanced Analytics in-database algorithm. Distance-based \n | algorithms rely on a distance function to measure the similarity between cases. \n | Cases are assigned to the nearest cluster according to the distance function used.\n | \n | :Attributes:\n | \n | **clusters** : oml.DataFrame\n | \n | The general per-cluster information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - row_cnt: The number of rows used in the build\n | - parent_cluster_id: The ID of the parent\n | - tree_level: The number of splits from the root\n | - dispersion: The measure of the quality of the cluster, and computationally, the sum of square errors\n | \n | **taxonomy**: oml.DataFrame\n | \n | The parent/child cluster relationship.\n | It includes the following components:\n | \n | - parent_cluster_id: The ID of the parent cluster\n | - child_cluster_id: The ID of the child cluster\n | \n | **centroids**: oml.DataFrame\n | \n | Per cluster-attribute center (centroid) information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - attribute_name: The attribute name\n | - mean: The average value of a numeric attribute\n | - mode_value: The most frequent value of a categorical attribute\n | - variance: The variance of a numeric attribute\n | \n | **leaf_cluster_counts**: pandas.DataFrame\n | \n | Leaf clusters with support.\n | It includes the following components:\n | \n | - cluster_id: The ID of a leaf cluster in the model\n | - cnt: The number of records in a leaf cluster\n | \n | **cluster_hists**: oml.DataFrame\n | \n | Cluster histogram information.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - variable: The attribute name\n | - bin.id: The ID of a bin\n | - lower.bound: The numeric lower bin boundary\n | - upper.bound: The numeric upper bin boundary\n | - label: The label of the cluster\n | - count: The histogram count\n | \n | **rules**: oml.DataFrame\n | \n | Conditions for a case to be assigned with some probability to a cluster.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - rhs.support: The record count\n | - rhs.conf: The record confidence\n | - lhr.support: The rule support\n | - lhs.conf: The rule confidence\n | - lhs.var: The attribute predicate name\n | - lhs.var.support: The attribute predicate support\n | - lhs.var.conf: The attribute predicate confidence\n | - predicate: The attribute predicate\n | \n | Method resolution order:\n | km\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, n_clusters=None, model_name=None, model_owner=None, **params)\n | Initializes an instance of km object.\n | \n | Parameters\n | ----------\n | n_clusters : positive integer, default None\n | Number of clusters. If n_clusters is None, the number of clusters will be determined\n | either by current setting parameters or automatically by the internal algorithm.\n | model_name : string or None (default)\n | The name of an existing database K-Means model to create an oml.km object from.\n | The specified database model is not dropped when the oml.km object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing K-Means model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Clustering and `Algorithm-specific\n | Settings `_\n | are applicable to K-Means model.\n | \n | __repr__(self)\n | \n | fit(self, x, model_name=None, case_id=None, ctx_settings=None)\n | Fits a K-Means Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.km object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.km object is deleted\n | unless oml.km object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None(default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each cluster on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer\n | A positive integer that restricts the returned clusters to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each cluster, the probability\n | belonging to that cluster.\n | \n | score(self, x)\n | Calculates the score value based on the input data ``x``.\n | \n | Parameters\n | ----------\n | x : an OML object\n | A new data set used to calculate score value.\n | \n | Returns\n | -------\n | pred : float\n | Score values, that is, opposite of the value of ``x`` on the K-means objective.\n | \n | transform(self, x)\n | Transforms ``x`` to a cluster-distance space.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the distance to each cluster.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class nb(oml.algo.model.odmModel)\n | nb(model_name=None, model_owner=None, **params)\n | \n | In-database `Naive Bayes `_ Model\n | \n | Builds a Naive Bayes Model that uses conditional probabilities to predict a target \n | variable (numeric or categorical column). Naive Bayes looks at the historical data \n | and calculates conditional probabilities for the target values by observing the \n | frequency of attribute values and of combinations of attribute values. Naive Bayes \n | assumes that each predictor is conditionally independent of the others. (Bayes' \n | Theorem requires that the predictors be independent.)\n | \n | :Attributes:\n | \n | **priors** : oml.DataFrame\n | \n | An optional named numerical vector that specifies the priors for the target classes.\n | It includes the following components:\n | \n | - target_name: The name of the target column\n | - target_value: The target value\n | - prior_probability: The prior probability for a given target_value\n | - count: The number of rows for a given target_value\n | \n | **conditionals** : oml.DataFrame\n | \n | Conditional probabilities for each predictor variable.\n | It includes the following components:\n | \n | - target_name: The name of the target column\n | - target_value: The target value\n | - attribute_name: The column name\n | - attribute_subname: The nested column subname.\n | - attribute_value: The mining attribute value\n | - conditional_probability: The conditional probability of a mining attribute for a given target\n | - count: The number of rows for a given mining attribute and a given target\n | \n | Method resolution order:\n | nb\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of nb object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Naive Bayes model to create an oml.nb object from.\n | The specified database model is not dropped when the oml.nb object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Naive Bayes model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Naive Bayes model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, priors=None, case_id=None)\n | Fits a Naive Bayes Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.nb object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.nb object is deleted\n | unless oml.nb object is saved into a datastore.\n | priors : OML DataFrame or dict or list of ints or floats or None (default)\n | The priors represent the overall distribution of the target in the\n | population. By default, the priors are computed from the sample.\n | If the sample is known to be a distortion of the population target\n | distribution, then the user can override the default by providing\n | a priors table as a setting for model creation. For OML DataFrame\n | input, the first value represents the target value. The second value\n | represents the prior probability. For dictionary type input, the key\n | represents the target value. The value represents the prior probability.\n | For list type input, the first value represents target value. The\n | second value represents the prior probability. See `Oracle Data\n | Mining Concepts Guide `_\n | for more details.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include the most likely target class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | TopN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data and returns the mean accuracy.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class nn(oml.algo.model.odmModel)\n | nn(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Neural Network `_ Model\n | \n | Builds a Neural Network (NN) Model that uses an algorithm inspired from biological\n | neural network for classification and regression. Neural Network is used to to estimate\n | or approximate functions that depend on a large number of generally unknown inputs.\n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | An artificial neural network is composed of a large number of interconnected neurons\n | which exchange messages between each other to solve specific problems. They learn by\n | examples and tune the weights of the connections among the neurons during the learning\n | process. Neural Network is capable of solving a wide variety of tasks such as computer\n | vision, speech recognition, and various complex business problems.\n | \n | :Attributes:\n | \n | **weights** : oml.DataFrame\n | \n | Weights of fitted model between nodes in different layers.\n | It includes the following components:\n | \n | - layer: The layer ID, 0 as an input layer\n | - idx_from: The node index that the weight connects from (attribute id for input layer)\n | - idx_to: The node index that the weights connects to\n | - attribute_name: The attribute name (only for the input layer)\n | - attribute_subname: The attribute subname\n | - attribute_value: The attribute value\n | - target_value: The target value.\n | - weight: The value of weight\n | \n | **topology** : oml.DataFrame\n | \n | Topology of the fitted model including number of nodes and hidden layers.\n | It includes the following components:\n | \n | - hidden_layer_id: The id number of the hidden layer\n | - num_node: The number of nodes in each layer\n | - activation_function: The activation function in each layer\n | \n | Method resolution order:\n | nn\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of nn object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' or 'REGRESSION', 'CLASSIFICATION' (default)\n | Type of model mining functionality\n | model_name : string or None (default)\n | The name of an existing database Neural Network model to create an oml.nn object from.\n | The specified database model is not dropped when the oml.nn object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Neural Network model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Neural Network model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, class_weight=None)\n | Fits a Neural Network Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.nn object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.nn object is deleted\n | unless oml.nn object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | class_weight : OML DataFrame or dict or list of ints or floats or None (default)\n | An optional matrix that is used to influence the weighting of\n | target classes during model creation. For OML DataFrame input, the first\n | value represents the target value. The second value represents the class weight.\n | For dictionary type input, the key represents the target value. The value\n | represents the class weight. For list type input, the first value represents\n | target value. The second value represents the predicted target value.\n | Refer to `Oracle Data Mining User's Guide `_\n | for more details about class weights.\n | \n | get_params(self, params=None, deep=False)\n | Fetches settings of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If params is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and its probability. For a regression\n | model, the results consist of a column for the prediction. For an\n | anomaly detection model, the results include a prediction and its\n | probability. If the prediction is 1, the case is considered typical.\n | If the prediction is 0, the case is considered anomalous. This\n | behavior reflects the fact that the model is trained with normal data.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class rf(oml.algo.model.odmModel)\n | rf(model_name=None, model_owner=None, **params)\n | \n | In-database `Random Forest `_ Model\n | \n | Builds a Random Forest (RF) Model that uses an ensemble (also called forest) of trees \n | for classification. This function exposes the corresponding Oracle Advanced Analytics \n | in-database algorithm. Random Forest is a popular ensemble learning technique for \n | classification. By combining the ideas of bagging and random selection of variables, \n | the algorithm produces collection of decision trees with controlled variance, while \n | avoiding overfitting - a common problem for decision trees.\n | \n | :Attributes:\n | \n | **importance** : oml.DataFrame\n | \n | Attribute importance of the fitted model.\n | It includes the following components:\n | \n | - attribute_name: The attribute name\n | - attribute_subname: The attribute subname \n | - attribute_importance: The attribute importance for an attribute in the forest\n | \n | Method resolution order:\n | rf\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of rf object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Random Forest model to create an oml.rf object from.\n | The specified database model is not dropped when the oml.rf object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Random Forest model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Random Forest model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, cost_matrix=None, case_id=None)\n | Fits a Random Forest Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.rf object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.rf object is deleted\n | unless oml.rf object is saved into a datastore.\n | cost_matrix : OML DataFrame or list of ints or floats or None (default)\n | An optional numerical square matrix that specifies the costs for incorrectly\n | predicting the target values. The first value represents the actual target value.\n | The second value represents the predicted target value. The third value is the cost.\n | In general, the diagonal entries of the matrix are zeros. Refer to `Oracle Data\n | Mining User's Guide `_\n | for more details about cost matrix.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols``, and the most likely\n | target class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data and returns the mean accuracy.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class svd(oml.algo.model.odmModel)\n | svd(model_name=None, model_owner=None, **params)\n | \n | In-database `Singular Value Decomposition `_ Model\n | \n | Builds a Singular Value Decomposition (SVD) Model that can be used for feature \n | extraction. SVD provides orthogonal linear transformations that capture the \n | underlying variance of the data by decomposing a rectangular matrix into three \n | matrixes: U, D, and V. Matrix D is a diagonal matrix and its singular values \n | reflect the amount of data variance captured by the bases. Columns of matrix V \n | contain the right singular vectors and columns of matrix U contain the left singular\n | vectors.\n | \n | :Attributes:\n | \n | **features** : oml.DataFrame\n | \n | Features extracted by the fitted model including feature id and associated coefficient.\n | It includes the following components:\n | \n | - feature_id: The ID of a feature in the model\n | - attribute_name: The attribute name\n | - attribute_value: The attribute value\n | - value: The matrix entry value\n | \n | **u** : oml.DataFrame\n | \n | A dataframe whose columns contain the left singular vectors.\n | The column name is the corresponding feature id.\n | \n | **v** : oml.DataFrame\n | \n | A dataframe whose columns contain the right singular vectors.\n | The column name is the corresponding feature id.\n | \n | **d** : oml.DataFrame\n | \n | A dataframe containing the singular values of the input data.\n | It includes the following components:\n | \n | - feature_id: The ID of a feature in the model\n | - value: The singular values of the input data\n | \n | Method resolution order:\n | svd\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of svd object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Singular Value Decomposition model to create an oml.svd object from.\n | The specified database model is not dropped when the oml.svd object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Singular Value Decomposition model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Feature Extraction and `Algorithm-specific\n | Settings `_\n | are applicable to Singular Value Decomposition model.\n | \n | __repr__(self)\n | \n | feature_compare(self, x, compare_cols=None, supplemental_cols=None)\n | Compares features of data and generates relatedness.\n | \n | Parameters\n | ----------\n | x : an OML object\n | The data used to measure relatedness.\n | compare_cols : str, a list of str or None (default)\n | The column(s) used to measure data relatedness.\n | If None, all the columns of ``x`` are compared to measure relatedness.\n | supplemental_cols : a list of str or None (default)\n | A list of columns to display along with the resulting 'SIMILARITY' column.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains a 'SIMILARITY' column that measures relatedness and supplementary columns if specified.\n | \n | fit(self, x, model_name=None, case_id=None, ctx_settings=None)\n | Fits an SVD Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.svd object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.svd object is deleted\n | unless oml.svd object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model. \n | ``case_id`` and SVDS_U_MATRIX_OUTPUT in ``odm_settings`` \n | must be specified in order to produce matrix U.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the predicted feature index on the new data and the specified ``supplemental_cols``.\n | \n | transform(self, x, supplemental_cols=None, topN=None)\n | Performs dimensionality reduction and returns value for each feature on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned values to\n | the specified number of features that have the highest topN values.\n | If None, all features will be returned.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the values of new data after the SVD transform and the specified ``supplemental_cols``.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class svm(oml.algo.model.odmModel)\n | svm(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Support Vector Machine `_ Model\n | \n | Builds a Support Vector Machine (SVM) Model to be used for regression, classification, \n | or anomaly detection. This function exposes the corresponding Oracle Advanced Analytics \n | in-database algorithm. SVM is a powerful, state-of-the-art algorithm with strong \n | theoretical foundations based on the Vapnik-Chervonenkis theory. SVM has strong \n | regularization properties. Regularization refers to the generalization of the model to \n | new data.\n | \n | \n | :Attributes:\n | \n | **coef** : oml.DataFrame\n | \n | The coefficients of the SVM model, one for each predictor variable.\n | It includes the following components:\n | \n | - target_value: The target value\n | - attribute_name: The attribute name\n | - attribute_subname: The attribute subname\n | - attribute_value: The attribute value\n | - coef: The projection coefficient value\n | \n | Method resolution order:\n | svm\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of svm object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' (default), 'REGRESSION' or 'ANOMALY_DETECTION'\n | Type of model mining functionality.\n | model_name : string or None (default)\n | The name of an existing database Support Vector Machine model to create an oml.svm object from.\n | The specified database model is not dropped when the oml.svm object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Support Vector Machine model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Support Vector Machine model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, ctx_settings=None)\n | Fits an SVM Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object or None, or string\n | Target values.\n | Must be specified when SVM algorithm is used for classification\n | or regression and must be None when used for anomaly detection.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.svm object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.svm object is deleted\n | unless oml.svm object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : oml.DataFrame\n | Predictor values used by the model to generate scores\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and its probability. For a regression\n | model, the results consist of a column for the prediction. For an\n | anomaly detection model, the results include a prediction and its\n | probability. If the prediction is 1, the case is considered normal.\n | If the prediction is 0, the case is considered anomalous. This\n | behavior reflects the fact that the model is trained with normal data.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n\nFUNCTIONS\n boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None)\n Makes a box and whisker plot.\n \n For every column of ``x`` or for every column object in ``x``, makes a box and whisker plot.\n \n Parameters\n ----------\n x : oml.DataFrame or oml.Float or list of oml.Float\n The data to plot.\n notch : bool, False (default), optional\n If True, produces a notched box plot. Otherwise, a rectangular\n boxplot is produced. By default, the confidence intervals are approximated\n as ``median +/-1.57 IQR/sqrt(n)`` where ``n`` is the number of not-null/NA\n values in the column. \n conf_intervals : array-like, optional\n Array or sequence whose first dimension is equal to the number of columns\n in ``x`` and whose second dimension is 2.\n labels : sequence, optional\n Length must be equal to the number of columns in ``x``. When an element of\n ``labels`` is not None, the default label of the column, which is the name\n of the column, is overridden.\n \n Notes\n -----\n For information on the other parameters, see documentation for :py:func:`matplotlib.pyplot.boxplot`.\n \n Returns\n -------\n ax : :py:class:`matplotlib.axes.Axes`\n The :py:class:`matplotlib.axes.Axes` instance of the boxplot figure.\n result : dict\n A dict mapping each component of the boxplot to the corresponding list of\n :py:class:`matplotlib.lines.Lines2D` instances created.\n \n check_embed()\n Indicates whether embedded Python is set up in the connected Oracle Database.\n \n Returns\n -------\n embed_status : bool or None\n None when not connected.\n \n connect(user=None, password=None, host=None, port=None, sid=None, service_name=None, dsn=None, encoding='UTF-8', nencoding='UTF-8', automl=None, **kwargs)\n Establishes an Oracle Database connection.\n \n Just as with :py:func:`cx_Oracle.connect`, the user, password, and data\n source name can be provided separately or with host, port, sid or\n service_name.\n \n There can be only one active connection. Calling this method when an\n active connection already exists replaces the active connection with\n a new one. This results in the previous connection being implicitly\n disconnected with the corresponding release of resources.\n \n Parameters\n ----------\n user : str or None (default)\n password : str or None (default)\n host : str or None (default)\n Host name of the Oracle Database.\n port : int, str or None (default)\n The Oracle Database port number.\n sid : str or None (default)\n The Oracle Database SID.\n service_name : str or None (default)\n The service name to be used in the connection identifier for\n the Oracle Database.\n dsn : str or None (default)\n Data source name. The TNS entry of the database, or an TNS\n alias in the Oracle Wallet.\n encoding : str, 'UTF-8' (default)\n Encoding to use for regular database strings.\n nenconding : str, 'UTF-8' (default)\n Encoding to use for national character set database strings.\n automl : str, or bool or None (default)\n To enable automl, specify:\n * True: if ``host``, ``port``, ``sid`` or ``service_name``\n are specified and a connection pool is running for this\n (``host``, ``port``, ``sid`` or ``service_name``).\n * Data source name: for a running connection pool\n if ``dsn`` is specified with a data source name.\n * TNS alias in an Oracle Wallet: for a running connection pool\n if ``dsn`` is also specified with Wallet TNS alias.\n Otherwise, automl is disabled.\n \n Notes\n -----\n * Parameters ``sid`` and ``service_name`` are exclusive.\n * Parameters (``host``, ``port``, ``sid`` or ``service_name``),\n and ``dsn`` can only be specified exclusively.\n * Parameter ``user`` and ``password`` must be provided when\n (``host``, ``port``, ``sid`` or ``service_name``) is specified,\n or ``dsn`` (and optionally ``automl``) is specified with\n a data source name.\n * Parameter ``user`` and ``password`` should be set to empty str \"\",\n when ``dsn`` (and optionally ``automl``) is specified with\n Wallet TNS alias, to establish connection with Oracle Wallet.\n * Automl requires `Database Resident Connection Pooling (DRCP)\n `_\n running on the Database server.\n \n create(x, table, oranumber=True, dbtypes=None, append=False)\n Creates a table in Oracle Database from a Python data set.\n \n Parameters\n ----------\n x : pandas.DataFrame or a list of tuples of equal size\n If ``x`` is a list of tuples of equal size, each tuple represents\n a row in the table. The column names are set to COL1, COL2, ... and so on.\n table : str\n A name for the table.\n oranumber : bool, True (default)\n If True, use SQL NUMBER for numeric columns. Otherwise, use BINARY_DOUBLE.\n Ignored if ``append`` is True.\n dbtypes : dict mapping str to str or list of str\n A list of SQL types to use on the new table. If a list, its length should\n be equal to the number of columns. If a dict, the keys are the names of the\n columns. Ignored if ``append`` is True.\n append : bool, False (default)\n Indicates whether to append the data to the existing table.\n \n Notes\n -----\n * When creating a new table, for columns whose SQL types are not specified in\n ``dbtypes``, NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. Users should set\n ``oranumber`` to False when the data contains NaN values. For string columns,\n the default type is VARCHAR2(4000), and for bytes columns, the default type\n is BLOB.\n * When ``x`` is specified with an empty pandas.DataFrame, OML creates an\n empty table. NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. VARCHAR2(4000) is\n used for columns of object dtype in the pandas.DataFrame.\n * OML does not support columns containing values of multiple data types,\n data conversion is needed or a TypeError may be raised.\n * OML determines default column types by looking at 20 random rows sampled\n from the table. For tables with less than 20 rows, all rows are used\n in column type determination. NaN values are considered as float type.\n If a column has all Nones, or has inconsistent data types that are not\n None in the sampled rows, a default column type cannot be determined,\n and a ValueError is raised unless a SQL type for the column is specified\n in ``dbtypes``.\n \n Returns\n -------\n new_table : oml.DataFrame\n A proxy object that represents the newly-created table.\n \n cursor()\n Returns a cx_Oracle cursor object of the current OML database connection.\n It can be used to execute queries against Oracle Database.\n \n Returns\n -------\n cursor_obj : a cx_Oracle :ref:`cx:cursorobj`.\n \n dir()\n Returns the names of OML objects in the workspace.\n \n Returns\n -------\n obj_names : list of str\n \n disconnect(cleanup=True)\n Terminates the Oracle Database connection. By default, the OML\n objects created through this connection will be deleted.\n \n Parameters\n ----------\n cleanup : bool, True (default)\n Cleans up OML objects defined in Python's main module before\n disconnecting from the database.\n \n do_eval(func, func_owner=None, graphics=False, **kwargs)\n Executes a Python function in Oracle Database server.\n \n Parameters\n ----------\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : Python object or oml.embed.data_image._DataImage\n If no image is rendered in the script, returns whatever Python object returned\n by the function. Otherwise, returns an oml.embed.data_image._DataImage object.\n See :ref:`more-output`.\n \n drop(table=None, view=None, model=None)\n Drops a database table, view, or model.\n \n Parameters\n ----------\n table : str or None (default)\n The name of the table to drop.\n view : str or None (default)\n The name of the view to drop.\n model : str or None (default)\n The name of the model to drop.\n \n grant(name, typ='datastore', user=None)\n Grants read privilege for a Python script or datastore.\n Requires the user to have the `PYQADMIN` Oracle Database role.\n \n Parameters\n ----------\n name : str\n The name of Python script in the Python script repository or the name of\n a datastore. The current user must be the owner of the Python script or\n datastore.\n typ : 'datastore' (default) or 'pyqscript'\n A str specifying either 'datastore' or 'pyqscript' to grant the\n read privilege. 'pyqscript' requires Embedded Python.\n user : str or None (default)\n The user to grant read privilege of the named Python script or datastore\n to. Treated as case-sensitive if wrapped in double quotes. Treated as\n case-insensitive otherwise. If None, grant read privilege to public.\n \n group_apply(data, index, func, func_owner=None, parallel=None, orderby=None, graphics=False, **kwargs)\n Partitions an in-database data set by the column(s) specified in ``index``\n and executes a python function on those partitions within Python processes\n running inside Oracle Database server.\n \n Parameters\n ----------\n data : oml.DataFrame\n The OML DataFrame that represents the in-database data that ``func`` is\n applied on.\n index : OML data object\n The columns to partition the ``data`` before sending it to ``func``.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n parallel : bool or int or None (default)\n A preferred degree of parallelism to use in the embedded Python job;\n either a positive integer greater than or equal to 1\n for a specific degree of parallelism,\n a value of 'None', 'False' or '0' for no parallelism,\n a value of 'True' for the ``data`` default parallelism.\n Cannot exceed the degree of parallelism limit controlled by \n service level in ADW.\n orderby : oml.DataFrame, oml.Float, or oml.String\n An optional argument used to specify the ordering of group partitions.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : dict \n If no image is rendered in the script, returns a dict of Python objects\n returned by the function. Otherwise, returns a dict of \n oml.embed.data_image._DataImage objects. See :ref:`more-output`.\n \n hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, **kwargs)\n Plots a histogram.\n \n Computes and draws a histogram for every data set column contained in ``x``.\n \n Parameters\n ----------\n x : oml.Float\n bins : int, strictly monotonic increasing sequence, 'auto', 'doane', 'fd', 'rice', 'scott', 'sqrt', or 'sturges', optional\n * If an integer, denotes the number of equal width bins to generate.\n * If a sequence, denotes bin edges and overrides the values of ``range``.\n * If a string, denotes the estimator to use calculate the optimal number\n of bins. 'auto' is the maximum of the 'fd' and 'sturges' estimators.\n * Default is taken from the matplotlib rcParam ``hist.bins``.\n weights : oml.Float\n Must come from the same table as ``x``.\n cumulative : int, float, or boolean, False (Default)\n If greater than zero, then a histogram is computed where each bin gives\n the counts in that bin plus all bins for smaller values. If ``density``\n is also True, then the histogram is normalized so the last bin equals 1.\n If less than zero, the direction of accumulation is reversed. In this\n case, if ``density`` is True, then the histogram is normalized so that the\n first bin equals 1. \n rwidth : int, float, or None (default)\n Ratio of the width of the bars to the bin widths. Values less than 0\n is treated as 0. Values more than 1 is treated as 1. If None,\n defaults to 1.\n color : str that indicates a color spec or None (default)\n If None, use the standard line color sequence. \n label : str or None (default) \n The label that is applied to the first patch of the histogram.\n \n Notes\n -----\n For information on the other parameters, see documentation for :py:func:`matplotlib.pyplot.hist`.\n \n Returns\n -------\n n : :py:class:`numpy.ndarray`\n The values of the histogram bins. \n bins : :py:class:`numpy.ndarray`\n The edges of the bins. An array of length #bins + 1.\n patches : list of :py:class:`matplotlib.patches.Rectangle`\n Individual patches used to create the histogram.\n \n index_apply(times, func, func_owner=None, parallel=None, graphics=False, **kwargs)\n Executes a python function multiple times inside Oracle Database server.\n \n Parameters\n ----------\n times : int\n The number of times to execute the function.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n parallel : bool or int or None (default)\n A preferred degree of parallelism to use in the embedded Python job;\n either a positive integer greater than or equal to 1\n for a specific degree of parallelism,\n a value of 'None', 'False' or '0' for no parallelism,\n a value of 'True' for the ``data`` default parallelism.\n Cannot exceed the degree of parallelism limit controlled by\n service level in ADW.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : list\n If no image is rendered in the script, returns a list of Python objects\n returned by the function. Otherwise, returns a list of \n oml.embed.data_image._DataImage objects. See :ref:`more-output`.\n \n isconnected(check_automl=False)\n Indicates whether an active Oracle Database connection exists.\n \n Parameters\n ----------\n check_automl: bool, False (default)\n Indicates whether to check the connection is automl-enabled.\n \n Returns\n -------\n connected : bool\n \n push(x, oranumber=True, dbtypes=None)\n Pushes data into Oracle Database.\n \n Creates an internal table in Oracle Database and inserts the data\n into the table. The table exists as long as an OML object (either\n in the Python client or saved in the datastore) references the table.\n \n Parameters\n ----------\n x : pandas.DataFrame or a list of tuples of equal size\n If ``x`` is a list of tuples of equal size, each tuple represents\n a row in the table. The column names are set to COL1, COL2, ... and so on.\n oranumber : bool\n If True (default), use SQL NUMBER for numeric columns. Otherwise\n use BINARY_DOUBLE. Ignored if ``append`` is True.\n dbtypes : dict or list of str\n The SQL data types to use in the table.\n \n Notes\n -----\n * When creating a new table, for columns whose SQL types are not specified in\n ``dbtypes``, NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. Users should set\n ``oranumber`` to False when the data contains NaN values. For string columns,\n the default type is VARCHAR2(4000), and for bytes columns, the default type\n is BLOB.\n * When ``x`` is specified with an empty pandas.DataFrame, OML creates an\n empty table. NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. VARCHAR2(4000) is\n used for columns of object dtype in the pandas.DataFrame.\n * OML does not support columns containing values of multiple data types,\n data conversion is needed or a TypeError may be raised.\n * OML determines default column types by looking at 20 random rows sampled\n from the table. For tables with less than 20 rows, all rows are used\n in column type determination. NaN values are considered as float type.\n If a column has all Nones, or has inconsistent data types that are not\n None in the sampled rows, a default column type cannot be determined,\n and a ValueError is raised unless a SQL type for the column is specified\n in ``dbtypes``.\n \n Returns\n -------\n temp_table : oml.DataFrame\n \n revoke(name, typ='datastore', user=None)\n Revokes read privilege for a Python script or datastore.\n Requires the user to have the `PYQADMIN` Oracle Database role.\n \n Parameters\n ----------\n name : str\n The name of Python script in the Python script repository or the name of\n a datastore. The current user must be the owner of the Python script or\n datastore.\n typ : 'datastore' (default) or 'pyqscript'\n A str specifying either 'datastore' or 'pyqscript' to revoke the\n read privilege. 'pyqscript' requires Embedded Python.\n user : str or None (default)\n The user to revoke read privilege of the named Python script or datastore\n from. Treated as case-sensitive if wrapped in double quotes. Treated as\n case-insensitive otherwise. If None, revoke read privilege from public.\n \n row_apply(data, func, func_owner=None, rows=1, parallel=None, graphics=False, **kwargs)\n Partitions an in-database data set into row chunks and executes a python\n function on the data pulled from those chunks within Python processes\n running inside Oracle Database server.\n \n Parameters\n ----------\n data : oml.DataFrame\n The OML DataFrame that represents the in-database data that ``func``\n is applied on.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n rows : int, 1 (default)\n The maximum number of rows in each chunk.\n parallel : bool or int or None (default)\n A preferred degree of parallelism to use in the embedded Python job;\n either a positive integer greater than or equal to 1\n for a specific degree of parallelism,\n a value of 'None', 'False' or '0' for no parallelism,\n a value of 'True' for the ``data`` default parallelism.\n Cannot exceed the degree of parallelism limit controlled by \n service level in ADW.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : pandas.DataFrame or a list of oml.embed.data_image._DataImage\n If no image is rendered in the script, returns a :py:class:`pandas.DataFrame`.\n Otherwise, returns a list of oml.embed.data_image._DataImage objects.\n See :ref:`more-output`.\n \n sync(schema=None, regex_match=False, **kwargs)\n Creates a DataFrame proxy object in Python that represents an Oracle\n Database data set.\n \n The data set can be one of the following: a database table, view, or query.\n \n Parameters\n ----------\n schema : str or None (default)\n The name of the schema where the database object exists;\n if None, then the current schema is used.\n regex_match : bool, False (default)\n Synchronizes tables or views that match a regular expression.\n Ignored if ``query`` is used.\n table, view, query : str or None (default)\n The name of a table, of a view, or of an Oracle SQL query to select\n from the database. When ``regex_match`` is True, this specifies the\n name pattern. Exactly one of these parameters must be a str and the\n other two must be None.\n \n Notes\n -----\n When ``regex_match`` is True, synchronizes the matched tables or views\n to a dict with the table or view name as the key.\n \n Returns\n -------\n data_set : oml.DataFrame, or if ``regex_match`` is used, returns\n a dict of oml.DataFrame\n \n table_apply(data, func, func_owner=None, graphics=False, **kwargs)\n Executes a Python function with data pulled from Oracle Database.\n \n Parameters\n ----------\n data : oml.DataFrame\n The oml.DataFrame that represents the data ``func`` is applied on.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : Python object or oml.embed.data_image._DataImage\n If no image is rendered in the script, returns whatever Python object returned\n by the function. Otherwise, returns an oml.embed.data_image._DataImage object.\n See :ref:`more-output`.\n\nDATA\n __all__ = ['connect', 'disconnect', 'isconnected', 'check_embed', 'cur...\n __build_serial__ = '1.0_05122020_1855'\n\nVERSION\n 1.0\n\nFILE\n /usr/local/lib/python3.8/site-packages/oml/__init__.py\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1612554902826_-433389084","id":"20210205-195502_404053537","dateCreated":"2021-02-05T19:55:02+0000","dateStarted":"2021-02-05T20:35:42+0000","dateFinished":"2021-02-05T20:35:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"title":"Try it yourself","text":"%md\n\nView the ***oml.push*** help file.","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:42+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

View the oml.push help file.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-250284223","id":"20210125-170339_2112043354","dateCreated":"2021-01-17T04:53:18+0000","dateStarted":"2021-02-05T20:35:42+0000","dateFinished":"2021-02-05T20:35:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%python\n\n# Insert code here\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1612555992026_-1170351957","id":"20210205-201312_344733276","dateCreated":"2021-02-05T20:13:12+0000","dateStarted":"2021-02-05T20:35:43+0000","dateFinished":"2021-02-05T20:35:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"title":"Notes","text":"%md\n\n* ***z*** is a reserved zeppelin-context variable and must not be used as a variable in **%python** paragraphs in Oracle Machine Learning Notebooks. In OML notebooks we use the show method ***z.show*** to display Python objects and proxy object content.\n\n* The Oracle Database connectivity package **cx_Oracle** is used to support database access and users can get access to the underlying connection to use **cx_Oracle** directly via the function ***oml.cursor***. See for general **cx_Oracle** documentation. \n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:44:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
    \n
  • z is a reserved zeppelin-context variable and must not be used as a variable in %python paragraphs in Oracle Machine Learning Notebooks. In OML notebooks we use the show method z.show to display Python objects and proxy object content.

    \n
  • \n
  • The Oracle Database connectivity package cx_Oracle is used to support database access and users can get access to the underlying connection to use cx_Oracle directly via the function oml.cursor. See https://cx-oracle.readthedocs.io/en/latest for general cx_Oracle documentation.

    \n
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_-554500926","id":"20210125-170339_669929748","dateCreated":"2021-01-08T17:59:31+0000","dateStarted":"2021-02-05T20:42:16+0000","dateFinished":"2021-02-05T20:42:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"text":"%md\n\n## End of Script\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1611594219658_1971271336","id":"20210125-170339_1388369045","dateCreated":"2021-01-08T19:58:28+0000","dateStarted":"2021-02-05T20:35:44+0000","dateFinished":"2021-02-05T20:35:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%md\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:35:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1612557344199_1788360019","id":"20210205-203544_177907629","dateCreated":"2021-02-05T20:35:44+0000","status":"READY","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:61"}],"name":"Lab 1: Getting Started with OML4Py","id":"32092","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 1_ Getting Started with OML4Py.json b/machine-learning/labs/oml4py-live-labs/Lab 1_ Getting Started with OML4Py.json new file mode 100755 index 00000000..b43cc6c1 --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/Lab 1_ Getting Started with OML4Py.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nThis example shows you how to:\n\n* Set OML notebook bindings and interpreters\n* Enable the Python interpreter to run Python commands\n* Import the OML4Py **oml** package and verify the database connection\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:05+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

This example shows you how to:

\n
    \n
  • Set OML notebook bindings and interpreters
  • \n
  • Enable the Python interpreter to run Python commands
  • \n
  • Import the OML4Py oml package and verify the database connection
  • \n
\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_551616368","id":"20210302-001843_487176680","dateCreated":"2021-01-08T18:21:43+0000","dateStarted":"2021-03-02T18:53:05+0000","dateFinished":"2021-03-02T18:53:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Zeppelin notebook toolbar","text":"%md\nThe notebook toolbar contains buttons for running code in paragraphs and for setting configuration and display options. \n\nFor example, it displays the current status and the number of users connected to the notebook. It also contains a menu item for keyboard shortcuts and options to show or hide the markdown editor and paragraph output. Additional settings are shown here.","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:05+0000","config":{"colWidth":4,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

The notebook toolbar contains buttons for running code in paragraphs and for setting configuration and display options.

\n

For example, it displays the current status and the number of users connected to the notebook. It also contains a menu item for keyboard shortcuts and options to show or hide the markdown editor and paragraph output. Additional settings are shown here.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_1651145701","id":"20210302-001843_694491385","dateCreated":"2021-01-19T22:17:44+0000","dateStarted":"2021-03-02T18:53:06+0000","dateFinished":"2021-03-02T18:53:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%md\n\n
\"OML
","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:06+0000","config":{"colWidth":8,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\"OML
\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_-851553290","id":"20210302-001843_1167621944","dateCreated":"2021-01-19T22:14:59+0000","dateStarted":"2021-03-02T18:53:06+0000","dateFinished":"2021-03-02T18:53:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"title":"OML notebook bindings","text":"%md\n\nOracle Machine Learning notebooks contain an internal list of bindings to fetch data from the database or another data source, such as Oracle Cloud Object Storage. For this lab, we set the interpreter binding to connect to the ADW database and run queries. \n\nClick the interpreter bindings icon in the upper right-corner of the Noteook to view the available interpreter bindings.\n\n
\"OML
\n\nThe default service is *low*. Click to bind or unbind an interpreter. Drag-and-drop individual interpreter binding settings up or down to order which binding will be used by default. The first interpeter on the list becomes the default. Those highlighted in blue are active.\n\n\nFor more information on Autonomous Database service levels, refer to the Autonomous Databse User's Guide.\n\n###### [Autonomous Database User's Guide](https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/manage-priorities.html#GUID-19175472-D200-445F-897A-F39801B0E953)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:06+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning notebooks contain an internal list of bindings to fetch data from the database or another data source, such as Oracle Cloud Object Storage. For this lab, we set the interpreter binding to connect to the ADW database and run queries.

\n

Click the interpreter bindings icon in the upper right-corner of the Noteook to view the available interpreter bindings.

\n
\"OML
\n

The default service is low. Click to bind or unbind an interpreter. Drag-and-drop individual interpreter binding settings up or down to order which binding will be used by default. The first interpeter on the list becomes the default. Those highlighted in blue are active.

\n

For more information on Autonomous Database service levels, refer to the Autonomous Databse User's Guide.

\n
Autonomous Database User's Guide
\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_-1349205181","id":"20210302-001843_1099565532","dateCreated":"2021-01-08T18:03:16+0000","dateStarted":"2021-03-02T18:53:07+0000","dateFinished":"2021-03-02T18:53:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"title":"OML notebook interpreters","text":"%md\n\nAn interpreter is a plug-in that allows you to use a specific data processing\nlanguage in your Oracle Machine Learning notebook. You can add multiple paragraphs, and each paragraph can be connected to different interpreters such as SQL or Python. \n\nWe create different paragraphs with different interpreters based on the code we want to run in the paragraphs. The interpreter is set at the top of the paragraph.\n\nThe available interpreters are:\n\n* **%sql** - To call the SQL interpreter and run SQL statements\n* **%script** - To call and run PL/SQL scripts\n* **%md** - To call the Markdown interpreter and generate static html from Markdown plain text\n* **%python** - To call the Python interpreter and run Python scripts\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:07+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

An interpreter is a plug-in that allows you to use a specific data processing\n
language in your Oracle Machine Learning notebook. You can add multiple paragraphs, and each paragraph can be connected to different interpreters such as SQL or Python.

\n

We create different paragraphs with different interpreters based on the code we want to run in the paragraphs. The interpreter is set at the top of the paragraph.

\n

The available interpreters are:

\n
    \n
  • %sql - To call the SQL interpreter and run SQL statements
  • \n
  • %script - To call and run PL/SQL scripts
  • \n
  • %md - To call the Markdown interpreter and generate static html from Markdown plain text
  • \n
  • %python - To call the Python interpreter and run Python scripts
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_1469843127","id":"20210302-001843_287063804","dateCreated":"2021-01-08T19:27:31+0000","dateStarted":"2021-03-02T18:53:07+0000","dateFinished":"2021-03-02T18:53:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"title":"Try it yourself","text":"%md\nUse the Markdown interpreter:\n\nPaste the Markdown code below into the following **%md** paragraph. Then click on the arrow to run the code. Note that it displays the formatted text, and adds a new paragraph. Notebooks save automatically, there is no need to click a save button.\n\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:07+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the Markdown interpreter:

\n

Paste the Markdown code below into the following %md paragraph. Then click on the arrow to run the code. Note that it displays the formatted text, and adds a new paragraph. Notebooks save automatically, there is no need to click a save button.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_100624001","id":"20210302-001843_272584438","dateCreated":"2021-01-12T05:25:21+0000","dateStarted":"2021-03-02T18:53:08+0000","dateFinished":"2021-03-02T18:53:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"#### Oracle Machine Learning for Python Live Lab\nWelcome to the **OML4Py** Live Lab!\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:08+0000","config":{"colWidth":6,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql","editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644323263_1856591355","id":"20210302-001843_374899318","dateCreated":"2021-01-12T20:47:49+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:46"},{"text":"%md\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:08+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644323263_211768138","id":"20210302-001843_126729608","dateCreated":"2021-01-12T05:26:52+0000","dateStarted":"2021-02-18T21:18:17+0000","dateFinished":"2021-02-18T21:18:17+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"title":"Enable Python interpreter","text":"%md\n\nTo connect to the Python interpreter, we use **%python** at the top of a new paragraph in the notebook.\n\nRun a simple addition command in Python and select the arrow to run the paragraph. Alternatively, you can press the **Shift+Enter** keys to run commands in the notebook.","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To connect to the Python interpreter, we use %python at the top of a new paragraph in the notebook.

\n

Run a simple addition command in Python and select the arrow to run the paragraph. Alternatively, you can press the Shift+Enter keys to run commands in the notebook.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_503903484","id":"20210302-001843_2006358107","dateCreated":"2021-01-08T18:40:36+0000","dateStarted":"2021-03-02T18:53:09+0000","dateFinished":"2021-03-02T18:53:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%python\n\n1+1\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"2\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_-1795475466","id":"20210302-001843_498344097","dateCreated":"2021-01-08T19:48:29+0000","dateStarted":"2021-03-02T18:53:10+0000","dateFinished":"2021-03-02T18:53:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"title":"Import the oml package","text":"%md\n\nTo use OML4Py, import the **oml** package. This automatically establishes a connection to the Autonomous database.\n\nThe notebook connects to the Python interpreter, and you are ready to run Python and OML4Py commands in your notebook.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To use OML4Py, import the oml package. This automatically establishes a connection to the Autonomous database.

\n

The notebook connects to the Python interpreter, and you are ready to run Python and OML4Py commands in your notebook.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_460315593","id":"20210302-001843_1336760915","dateCreated":"2021-01-08T19:48:40+0000","dateStarted":"2021-03-02T18:53:16+0000","dateFinished":"2021-03-02T18:53:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%python\n\nimport oml","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:16+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/undefined","fontSize":9,"results":{},"editorSetting":{"language":"text","editOnDblClick":false}},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644323263_-1278571336","id":"20210302-001843_623300563","dateCreated":"2021-01-08T17:49:03+0000","dateStarted":"2021-03-02T18:53:16+0000","dateFinished":"2021-03-02T18:53:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"title":"Verify Autonomous Database connection","text":"%md\n\nUsing the default interpreter bindings, OML Notebooks automatically establishes a database connection for the notebook. To verify the Python interpreter has established a database connection through the ***oml*** module, run the ***oml.isconnected()*** command. Once your notebook is connected, the command returns *True*. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Using the default interpreter bindings, OML Notebooks automatically establishes a database connection for the notebook. To verify the Python interpreter has established a database connection through the oml module, run the oml.isconnected() command. Once your notebook is connected, the command returns True.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_2043630086","id":"20210302-001843_1722929004","dateCreated":"2021-01-08T18:05:44+0000","dateStarted":"2021-03-02T18:53:17+0000","dateFinished":"2021-03-02T18:53:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"text":"%python\n\noml.isconnected()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"True\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_547082654","id":"20210302-001843_1522293299","dateCreated":"2021-01-08T17:55:44+0000","dateStarted":"2021-03-02T18:53:18+0000","dateFinished":"2021-03-02T18:53:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"title":"View help files","text":"%md\n\nThe Python ***help*** function is used to display the documentation of packages, modules, functions, classes, and keywords. The help function has the following syntax:\n\n help([object])\n\nFor example, the ***oml.create*** function creates persistent table in your database schema from data in your Python session. To view the help file for ***oml.create***, do the following:","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

The Python help function is used to display the documentation of packages, modules, functions, classes, and keywords. The help function has the following syntax:

\n
help([object])\n
\n

For example, the oml.create function creates persistent table in your database schema from data in your Python session. To view the help file for oml.create, do the following:

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_-814184231","id":"20210302-001843_2145844469","dateCreated":"2021-01-12T23:07:51+0000","dateStarted":"2021-03-02T18:53:18+0000","dateFinished":"2021-03-02T18:53:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%python\n\nhelp(oml.create)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on cython_function_or_method in module oml.core.methods:\n\ncreate(x, table, oranumber=True, dbtypes=None, append=False)\n Creates a table in Oracle Database from a Python data set.\n \n Parameters\n ----------\n x : pandas.DataFrame or a list of tuples of equal size\n If ``x`` is a list of tuples of equal size, each tuple represents\n a row in the table. The column names are set to COL1, COL2, ... and so on.\n table : str\n A name for the table.\n oranumber : bool, True (default)\n If True, use SQL NUMBER for numeric columns. Otherwise, use BINARY_DOUBLE.\n Ignored if ``append`` is True.\n dbtypes : dict mapping str to str or list of str\n A list of SQL types to use on the new table. If a list, its length should\n be equal to the number of columns. If a dict, the keys are the names of the\n columns. Ignored if ``append`` is True.\n append : bool, False (default)\n Indicates whether to append the data to the existing table.\n \n Notes\n -----\n * When creating a new table, for columns whose SQL types are not specified in\n ``dbtypes``, NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. Users should set\n ``oranumber`` to False when the data contains NaN values. For string columns,\n the default type is VARCHAR2(4000), and for bytes columns, the default type\n is BLOB.\n * When ``x`` is specified with an empty pandas.DataFrame, OML creates an\n empty table. NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. VARCHAR2(4000) is\n used for columns of object dtype in the pandas.DataFrame.\n * OML does not support columns containing values of multiple data types,\n data conversion is needed or a TypeError may be raised.\n * OML determines default column types by looking at 20 random rows sampled\n from the table. For tables with less than 20 rows, all rows are used\n in column type determination. NaN values are considered as float type.\n If a column has all Nones, or has inconsistent data types that are not\n None in the sampled rows, a default column type cannot be determined,\n and a ValueError is raised unless a SQL type for the column is specified\n in ``dbtypes``.\n \n Returns\n -------\n new_table : oml.DataFrame\n A proxy object that represents the newly-created table.\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_-2056072090","id":"20210302-001843_1814949005","dateCreated":"2021-01-12T23:11:03+0000","dateStarted":"2021-03-02T18:53:19+0000","dateFinished":"2021-03-02T18:53:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"title":"View help for the oml package","text":"%python\n\nhelp(oml)","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on package oml:\n\nNAME\n oml - Oracle Machine Learning for Python\n\nDESCRIPTION\n A component of the Oracle Advanced Analytics Option, Oracle Machine Learning\n for Python makes the open source Python programming language and environment\n ready for enterprise in-database data. Designed for problems involving both\n large and small volumes of data, Oracle Machine Learning for Python integrates\n Python with Oracle Database. Python users can run Python commands and scripts\n for statistical, machine learning, and graphical analyses on data stored in\n Oracle Database. Python users can develop, refine, and deploy Python scripts\n that leverage the parallelism and scalability of Oracle Database to automate\n data analysis. Data analysts and data scientists can run Python modules and\n develop and operationalize Python scripts for machine learning applications\n in one step without having to learn SQL. Oracle Machine Learning for Python\n performs function pushdown for in-database execution of core Python and\n popular Python module functions. Being integrated with Oracle Database,\n Oracle Machine Learning for Python can run any Python module via embedded\n Python while the database manages the data served to the Python engines.\n\nPACKAGE CONTENTS\n algo (package)\n automl (package)\n core (package)\n ds (package)\n embed (package)\n graphics (package)\n mlx (package)\n script (package)\n\nCLASSES\n oml.algo.model.odmModel(builtins.object)\n oml.algo.ai.ai\n oml.algo.ar.ar\n oml.algo.dt.dt\n oml.algo.em.em\n oml.algo.esa.esa\n oml.algo.glm.glm\n oml.algo.km.km\n oml.algo.nb.nb\n oml.algo.nn.nn\n oml.algo.rf.rf\n oml.algo.svd.svd\n oml.algo.svm.svm\n oml.core.number._Number(oml.core.series._Series)\n oml.core.float.Float\n oml.core.series._Series(oml.core.vector._Vector)\n oml.core.boolean.Boolean\n oml.core.bytes.Bytes\n oml.core.string.String\n oml.core.vector._Vector(builtins.object)\n oml.core.frame.DataFrame\n \n class Boolean(oml.core.series._Series)\n | Boolean series data class.\n | \n | Represents a single column of 0, 1, and NULL values in Oracle Database.\n | \n | Method resolution order:\n | Boolean\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __and__(self, other)\n | \n | __init__(self)\n | \n | __invert__(self)\n | \n | __or__(self, other)\n | \n | all(self)\n | Checks whether all elements in the Boolean series data object are True.\n | \n | Returns\n | =======\n | all: bool\n | \n | any(self)\n | Checks whether any elements in the Boolean series data object are True.\n | \n | Returns\n | -------\n | any: bool\n | \n | pull(self)\n | Pulls data represented by this object from Oracle Database into an\n | in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list of bool and None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | describe(self)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of an OML series data distribution.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``unique``\n | (number of unique entries), ``top`` (most common value), ``freq``,\n | (frequency of the most common value).\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class Bytes(oml.core.series._Series)\n | Bytes(other, dbtype)\n | \n | Binary series data class.\n | \n | Represents a single column of RAW or BLOB data in Oracle Database.\n | \n | Method resolution order:\n | Bytes\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, other, dbtype)\n | Convert underlying Oracle Database type.\n | \n | Parameters\n | ----------\n | other : oml.Bytes\n | dbtype : 'raw' or 'blob'\n | \n | len(self)\n | Computes the length of each byte string.\n | \n | Returns\n | -------\n | length : oml.Float\n | \n | pull(self)\n | Pulls data represented by this object from Oracle Database into an\n | in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list of bytes and None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | describe(self)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of an OML series data distribution.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``unique``\n | (number of unique entries), ``top`` (most common value), ``freq``,\n | (frequency of the most common value).\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class DataFrame(oml.core.vector._Vector)\n | DataFrame(other)\n | \n | Tabular dataframe class.\n | \n | Represents multiple columns of Boolean, Bytes, Float, and/or String data.\n | \n | Method resolution order:\n | DataFrame\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | KFold(self, n_splits=3, seed=12345, strata_cols=None, use_hash=True, hash_cols=None, nvl=None)\n | Splits the oml.DataFrame object randomly into k consecutive folds.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | strata_cols : a list of string values or None (default)\n | Names of the columns used for stratification. If None, stratification\n | is not performed. Must be None when ``use_hash`` is False.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | hash_cols : a list of string values or None (default)\n | If a list of string values, use the values from these named columns\n | to hash to split the data. If None, use the values from the 1st 10\n | columns to hash.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of k 2-tuples of oml.DataFrame objects\n | \n | Raises\n | ------\n | ValueError\n | * If ``hash_cols`` refers to a single LOB column.\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean, str, list of str, 2-tuple\n | * oml.Boolean : select only the rows satisfying the condition. Must be from the same data\n | source as self.\n | * str : select the column of the same name\n | * list of str : select the columns whose names matches the elements in the list.\n | * 2-tuple : The first element in the tuple denotes which rows to select.\n | It can be either a oml.Boolean or ``slice(None)`` (this selects all\n | rows). The second element in the tuple denotes which columns to select.\n | It can be either ``slice(None)`` (this selects all columns), str, list\n | of str, int, or list of int. If int or list of int, selects the\n | column(s) in the corresponding position(s).\n | \n | Returns\n | -------\n | subset : OML data object\n | Is a oml.DataFrame if has more than one column, otherwise is a OML series data object.\n | \n | __init__(self, other)\n | Convert OML series data object(s) to oml.DataFrame.\n | \n | Parameters\n | ----------\n | other : OML series data object or dict mapping str to OML series data objects\n | * OML series data object : initializes a single-column oml.DataFrame containing the\n | same data. \n | * dict : initializes a oml.DataFrame that comprises all the OML series data objects\n | in the dict in an arbitrary order. Each column in the resulting oml.DataFrame has as\n | its column name its corresponding key in the dict.\n | \n | corr(self, method='pearson', min_periods=1, skipna=True)\n | Computes pairwise correlation between all columns where possible,\n | given the type of coefficient.\n | \n | Parameters\n | ----------\n | method : 'pearson' (default), 'kendall', or 'spearman'\n | * pearson : Uses Pearson's correlation coefficient. Can only calculate\n | correlations between Float or Boolean columns.\n | * kendall : Uses Kendall's tau-b coefficient.\n | * spearman : Uses Spearman's rho coefficient.\n | min_periods : int, optional, 1 (default)\n | The minimum number of observations required per pair of columns to \n | have a valid result.\n | skipna : bool, True (default)\n | If True, NaN and (+/-)Inf values are mapped to NULL.\n | \n | Returns\n | -------\n | y : :py:class:`pandas.DataFrame`\n | \n | count(self, numeric_only=False)\n | Returns the number of elements that are not NULL for each column.\n | \n | Parameters\n | ----------\n | numeric_only : boolean, False (default)\n | Includes only Float and Boolean columns.\n | \n | Returns\n | -------\n | count : :py:class:`pandas.Series`\n | \n | crosstab(self, index, columns=None, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False, pivot=False)\n | Computes a simple cross-tabulation of two or more columns. By default,\n | computes a frequency table for the columns unless a column and\n | an aggregation function have been passed.\n | \n | Parameters\n | ----------\n | index : str or list of str\n | Names of the column(s) of the DataFrame to group by. If ``pivot`` is\n | True, these columns are displayed in the rows of the result table.\n | columns : str or list of str, optional\n | Names of the other column(s) of the Dataframe to group by. If ``pivot``\n | is True, these columns are displayed in the columns of the result\n | table.\n | values : str, optional\n | The name of the column to aggregate according to the grouped columns.\n | Requires ``aggfunc`` to be specified.\n | aggfunc : OML DataFrame aggregation function object, optional\n | The supported oml.DataFrame aggregation functions include: count, \n | max, mean, median, min, nunique, std and sum. To use ``aggfunc``, \n | specify the function object using its full name, for example, \n | ``oml.DataFrame.sum``, ``oml.DataFrame.nunique``, and so on.\n | If specified, requires ``values`` to also be specified.\n | rownames : str or list of str, None (default)\n | If specified, must match number of names in ``index``. If None, names in\n | ``index`` are used. \n | colnames : str or list of str, None (default)\n | If specified, must match number of strings in ``columns``. If None,\n | names in ``columns`` are used. Ignored if ``pivot`` is True.\n | margins : bool, False (default)\n | Includes row and column margins (subtotals)\n | margins_name : str, 'All' (default)\n | Names of the row and column that contain the totals when ``margins``\n | is True. Should be a value not contained in any of the columns specified\n | by ``index`` and ``columns``. \n | dropna : bool, True (default)\n | In addition, if ``pivot`` is True, drops columns from the result\n | table if all the entries of the column are NaN.\n | normalize : boolean, {'all', 'index', 'columns'} or {0, 1}, False (default)\n | Normalizes by dividing the values by their sum.\n | \n | * If 'all' or True, normalizes over all values.\n | * If 'index' or 0, normalizes over each row.\n | * If 'columns' or 1, normalizes over each column.\n | * If ``margins`` is True, also normalizes margin values.\n | pivot : bool, False (default)\n | If True, returns results in pivot table format. Else, returns results in\n | relational table format.\n | \n | Returns\n | -------\n | crosstab : oml.DataFrame\n | \n | See Also\n | --------\n | DataFrame.pivot_table\n | \n | cumsum(self, by, ascending=True, na_position='last', skipna=True)\n | Gets the cumulative sum of each ``Float`` or ``Boolean`` column after the\n | ``DataFrame`` object is sorted.\n | \n | Parameters\n | ----------\n | by : str or list of str\n | A single column name or list of column names by which to sort the \n | DataFrame object. Columns in ``by`` do not have to be ``Float`` or \n | ``Boolean``.\n | ascending : bool or list of bool, True (default)\n | If True, sort is in ascending order, otherwise descending. Specify \n | list for multiple sort orders. If this is a list of bools, must match\n | the length of ``by``.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NaN and None at the beginning, ``last`` places them \n | at the end.\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | cumsum : oml.DataFrame\n | \n | describe(self, percentiles=None, include=None, exclude=None)\n | Generates descriptive statistics that summarize the central tendency,\n | dispersion, and shape of the data in each column\n | \n | Parameters\n | ----------\n | percentiles : bool, list-like of numbers, or None (default), optional \n | The percentiles to include in the output for `Float` columns. All\n | must be between 0 and 1. If ``percentiles`` is None or True,\n | ``percentiles`` is set to ``[.25, .5, .75]``, which corresponds\n | to the 25th, 50th, and 75th percentiles. If `percentiles` is False,\n | only ``min`` and ``max`` stats and no other percentiles is\n | included.\n | include : 'all', list-like of OML column types or None (default), optional\n | Types of columns to include in the result. Available options:\n | \n | - 'all': Includes all columns.\n | - List of OML column types : Only includes specified types in\n | the results.\n | - None (default) : If ``Float`` columns exist and ``exclude`` is\n | None, only includes ``Float`` columns. Otherwise, includes all\n | columns.\n | exclude : list of OML column types or None (default), optional\n | Types of columns to exclude from the result. Available options:\n | \n | - List of OML column types : Excludes specified types from\n | the results.\n | - None (default) : Result excludes nothing.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.DataFrame`\n | The concatenation of the summary statistics for each column.\n | \n | See Also\n | --------\n | DataFrame.count\n | DataFrame.max\n | DataFrame.min\n | DataFrame.mean\n | DataFrame.std\n | DataFrame.select_types\n | \n | drop(self, columns)\n | Drops specified columns.\n | \n | Parameters\n | ----------\n | columns : str or list of str\n | Columns to drop from the object.\n | \n | Returns\n | -------\n | dropped : oml.DataFrame\n | \n | drop_duplicates(self, subset=None)\n | Removes duplicated rows from oml.DataFrame object.\n | \n | Use ``subset`` to consider a set of rows duplicates if they have\n | identical values for only a subset of the columns. In this case, after\n | deduplication, each of the other columns contains the minimum value\n | found across the set.\n | \n | Parameters\n | ----------\n | subset : str or list of str, optional\n | Columns to consider for identifying duplicates. If None, use all\n | columns.\n | \n | Returns\n | -------\n | deduplicated : oml.DataFrame\n | \n | dropna(self, how='any', thresh=None, subset=None)\n | Removes rows containing missing values.\n | \n | Parameters\n | ----------\n | how : {'any', 'all'}, 'any' (default)\n | Determines if row is removed from DataFrame when at least one or all\n | values are missing.\n | thresh : int, optional\n | Requires that many of missing values to drop a row from DataFrame.\n | subset : list, optional\n | The names of the columns to check for missing values.\n | \n | Returns\n | -------\n | dropped : oml.DataFrame\n | DataFrame without missing values.\n | \n | kurtosis(self, skipna=True)\n | Returns the sample kurtosis of the values for each ``Float``\n | column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | kurt : :py:class:`pandas.Series`\n | \n | max(self, skipna=True, numeric_only=False)\n | Returns the maximum value in each column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | numeric_only : boolean, False (default)\n | Includes only ``Float`` and ``Boolean`` columns. \n | \n | Returns\n | -------\n | max : :py:class:`pandas.Series`\n | \n | mean(self, skipna=True)\n | Returns the mean of the values for each ``Float`` or ``Boolean`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | mean : :py:class:`pandas.Series`\n | \n | median(self, skipna=True)\n | Returns the median of the values for each ``Float`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Exclude NaN values when computing the result\n | \n | Returns\n | -------\n | median : :py:class:`pandas.Series`\n | \n | merge(self, other, on=None, left_on=None, right_on=None, how='left', suffixes=('_l', '_r'), nvl=True)\n | Joins data sets.\n | \n | Parameters\n | ----------\n | other : an OML data set object\n | on : str or list of str, optional\n | Column names to join on. Must be found in both ``self`` and ``other``.\n | left_on : str or list of str, optional\n | Column names of ``self`` to join on.\n | right_on : str or list of str, optional\n | Column names of ``other`` to join on. If specified, must specify the same\n | number of columns as ``left_on``.\n | how : 'left' (default), 'right', 'inner', 'full'\n | * left : left outer join\n | * right : right outer join\n | * full : full outer join\n | * inner : inner join\n | \n | If ``on`` and ``left_on`` are both None, then ``how`` is ignored,\n | and a cross join is performed.\n | suffixes : sequence of length 2\n | Suffix to apply to column names on the left and right side,\n | respectively.\n | nvl : True (default), False, dict \n | * True : join condition includes NULL value\n | * False : join condition excludes NULL value\n | * dict : specifies the values that join columns use in replacement of NULL value with column names as keys\n | \n | Returns\n | -------\n | merged : oml.DataFrame\n | \n | min(self, skipna=True, numeric_only=False)\n | Returns the minimum value in each column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | numeric_only : boolean, False (default)\n | Includes only ``Float`` and ``Boolean`` columns\n | \n | Returns\n | -------\n | min : :py:class:`pandas.Series`\n | \n | nunique(self, dropna=True)\n | Returns number of unique values for each column of DataFrame.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : pandas.Series\n | \n | pivot_table(self, index, columns=None, values=None, aggfunc=, margins=False, dropna=True, margins_name='All')\n | Converts data set to a spreadsheet-style pivot table. Due to the Oracle\n | 1000 column limit, pivot tables with more than 1000 columns are\n | automatically truncated to display the categories with the most entries\n | for each value column.\n | \n | Parameters\n | ----------\n | index : str or list of str\n | Names of columns containing the keys to group by on the pivot table\n | index.\n | columns : str or list of str, optional\n | Names of columns containing the keys to group by on the pivot table\n | columns. \n | values : str or list of str, optional\n | Names of columns to aggregate on. If None, values are inferred \n | as all columns not in ``index`` or ``columns``.\n | aggfunc : OML DataFrame aggregation function or a list of them, oml.DataFrame.mean (default)\n | The supported oml.DataFrame aggregation functions include: count, max,\n | mean, median, min, nunique, std and sum. When using aggregation\n | functions, specify the function object using its full name, for example,\n | ``oml.DataFrame.sum``, ``oml.DataFrame.nunique``, and so on.\n | If ``aggfunc`` contains more than one function, each function is \n | applied to each column in ``values``. If the function does not apply to\n | the type of a column in ``values``, the result table skips applying \n | the function to the particular column. \n | margins : bool, False (default)\n | Include row and column margins (subtotals)\n | dropna : bool, True (default)\n | Unless ``columns`` is None, drop column labels from the result table if\n | all the entries corresponding to the column label are NaN for all\n | aggregations.\n | margins_name : string, 'All' (default)\n | Names of the row and column that contain the totals when ``margins``\n | is True. Should be a value not contained in any of the columns specified\n | by ``index`` and ``columns``. \n | \n | Returns\n | -------\n | pivoted : oml.DataFrame\n | \n | See Also\n | --------\n | DataFrame.crosstab\n | \n | pull(self, aslist=False)\n | Pulls data represented by the DataFrame from Oracle Database\n | into an in-memory Python object.\n | \n | Parameters\n | ----------\n | aslist : bool\n | If False, returns a pandas.DataFrame. Otherwise, returns the data\n | as a list of tuples.\n | \n | Returns\n | -------\n | pulled_obj : :py:class:`pandas.DataFrame` or list of tuples\n | \n | rename(self, columns)\n | Renames columns.\n | \n | Parameters\n | ----------\n | columns : dict or list\n | ``dict`` contains old and new column names.\n | ``list`` contains the new names for all the columns in order.\n | \n | Notes\n | -----\n | The method changes the column names of the caller DataFrame object too.\n | \n | Returns\n | -------\n | renamed : DataFrame\n | \n | replace(self, old, new, default=None, columns=None)\n | Replace values given in `old` with `new` in specified columns.\n | \n | Parameters\n | ----------\n | columns : list of str or None (default)\n | Columns to look for values in `old`. If None, then all columns\n | of DataFrame will be replaced.\n | old : list of float, or list of str\n | Specifying the old values. When specified with a list of float, it \n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | new : list of float, or list of str\n | A list of the same length as argument `old` specifying \n | the new values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | default : float, str, or None (default)\n | A single value to use for the non-matched elements in argument\n | `old`. If None, non-matched elements will preserve their\n | original values. If not None, data type should be consistent\n | with values in `new`. Must be set when `old` and `new` contain \n | values of different data types.\n | \n | Returns\n | -------\n | replaced : oml.DataFrame\n | \n | Raises\n | ------\n | ValueError\n | * if values in `old` have data types inconsistent with original values\n | in the target columns\n | * if `default` is specifed with a non-None value which has data type\n | inconsistent with values in `new`\n | * if `default` is None when `old` and `new` contain values of different \n | data types\n | \n | round(self, decimals=0)\n | Rounds oml.Float values in the oml.DataFrame object to \n | the specified decimal place.\n | \n | Parameters\n | ----------\n | decimals : non-negative int\n | \n | Returns\n | -------\n | rounded: oml.DataFrame\n | \n | sample(self, frac=None, n=None, random_state=None)\n | Return a random sample data sets from an oml.DataFrame object.\n | \n | Parameters\n | ----------\n | frac : a float value\n | Fraction of data sets to return. The value should be between 0 and 1.\n | Cannot be used with n.\n | n : an integer value\n | Number of rows to return. Default = 1 if frac = None.\n | Cannot be used with frac. \n | random_state : int or 12345 (default)\n | The seed to use for random sampling.\n | \n | Returns\n | -------\n | sample_data : an oml.DataFrame objects\n | It contains the random sample rows from an oml.DataFrame object.\n | The fraction of returned data sets is specified by the frac parameter.\n | \n | select_types(self, include=None, exclude=None)\n | Returns the subset of columns include/excluding columns based on their OML\n | type.\n | \n | Parameters\n | ----------\n | include, exclude : list of OML column types\n | A selection of OML column types to be included/excluded. At least one of\n | these parameters must be supplied. \n | \n | Raises\n | ------\n | ValueError\n | * If both of ``include`` and ``exclude`` are None.\n | * If ``include`` and ``exclude`` have overlapping elements.\n | \n | Returns\n | -------\n | subset : oml.DataFrame\n | \n | skew(self, skipna=True)\n | Returns the sample skewness of the values for each ``Float``\n | column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | skew : :py:class:`pandas.Series`\n | \n | sort_values(self, by, ascending=True, na_position='last')\n | Specifies the order in which rows appear in the result set.\n | \n | Parameters\n | ----------\n | by : str or list of str\n | Column names or list of column names.\n | ascending : bool or list of bool, True (default)\n | If True, sort is in ascending order. Sort is in descending order\n | otherwise. Specify list for multiple sort orders. If this is a list of\n | bools, must match the length of ``by``.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them \n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : oml.DataFrame\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, strata_cols=None, use_hash=True, hash_cols=None, nvl=None)\n | Splits the oml.DataFrame object randomly into multiple data sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) default\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | strata_cols: a list of string values or None (default):\n | Names of the columns used for stratification. If None, stratification\n | is not performed. Must be None when use_hash is False.\n | use_hash: boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use random\n | number to split the data.\n | hash_cols: a list of string values or None (default):\n | If a list of string values, use the values from these named columns\n | to hash to split the data. If None, use the values from the 1st 10\n | columns to hash.\n | nvl: numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of oml.DataFrame objects\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | ValueError\n | * If ``hash_cols`` refers to a single LOB column.\n | \n | std(self, skipna=True)\n | Returns the sample standard deviation of the values of each ``Float`` or\n | ``Boolean`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result\n | \n | Returns\n | -------\n | std : :py:class:`pandas.Series`\n | \n | sum(self, skipna=True)\n | Returns the sum of the values of each ``Float`` or ``Boolean`` column.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Exclude NaN values when computing the result\n | \n | Returns\n | -------\n | sum : :py:class:`pandas.Series`\n | \n | t_dot(self, other=None, skipna=True, pull_from_db=True)\n | Calculates the matrix cross-product of self with other.\n | \n | Equivalent to transposing self first, then multiplying it with other. \n | \n | Parameters\n | ----------\n | other : oml.DataFrame, optional\n | If not specified, self is used.\n | skipna : bool, True (default)\n | Treats NaN entries as 0.\n | pull_from_db : bool, True (default)\n | If True, returns a pandas.DataFrame. If False, returns a\n | oml.DataFrame consisting of three columns:\n | \n | - ROWID: the row number of the resulting matrix \n | - COLID: the column number of the resulting matrix \n | - VALUE: the value at the corresponding position of the matrix \n | \n | Returns\n | -------\n | prod : float, :py:class:`pandas.Series`, or :py:class:`pandas.DataFrame`\n | \n | See Also\n | --------\n | oml.Float.dot\n | \n | ----------------------------------------------------------------------\n | Readonly properties defined here:\n | \n | columns\n | The column names of the data set.\n | \n | dtypes\n | The types of the columns of the data set.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class Float(oml.core.number._Number)\n | Float(other, dbtype=None)\n | \n | Numeric series data class.\n | \n | Represents a single column of NUMBER, BINARY_DOUBLE or BINARY_FLOAT data \n | in Oracle Database.\n | \n | Method resolution order:\n | Float\n | oml.core.number._Number\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __abs__(self)\n | Return the absolute value of every element in ``self``.\n | \n | Equivalent to ``abs(self)``.\n | \n | Returns\n | -------\n | absval : oml.Float\n | \n | __add__(self, other)\n | Equivalent to ``self + other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : add the scalar to each element in ``self``. \n | * oml.Float : must come from the same data source. Add corresponding\n | elements in ``self`` and ``other``.\n | \n | Returns\n | -------\n | sum : oml.Float\n | \n | __contains__(self, item)\n | Check whether all elements in ``item`` exists in the Float series\n | \n | Equivalent to ``item in self``.\n | \n | Parameters\n | ----------\n | item : int/float, list of int/float, oml.Float\n | Values to check in series\n | \n | Returns\n | -------\n | contains : bool\n | Returns `True` if all elements exists, otherwise `False`\n | \n | __divmod__(self, other)\n | Equivalent to ``divmod(self, other)``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : Find the quotient and remainder when each element in ``self`` is\n | divided by the scalar.\n | * oml.Float : must come from the same data source. Find the quotient and\n | remainder when each element in ``self`` is divided by the corresponding element\n | in ``other``.\n | \n | Returns\n | -------\n | divrem : oml.DataFrame\n | The first column contains the floor of the quotient, and the second column\n | contains the remainder.\n | \n | __floordiv__(self, other)\n | Equivalent to ``self // other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : divide each element in ``self`` by the scalar. \n | * oml.Float : must come from the same data source. Divide each element in\n | ``self`` by the corresponding element in ``other``.\n | \n | Returns\n | -------\n | quotient : oml.Float\n | \n | __init__(self, other, dbtype=None)\n | Convert to oml.Float, or convert underlying Oracle Database type.\n | \n | Parameters\n | ----------\n | other : oml.Boolean or oml.Float\n | * oml.Boolean : initialize a oml.Float object that has value 1 (resp. 0)\n | wherever ``other`` has value True (resp. False).\n | * oml.Float : initialize a oml.Float object with the same data as \n | ``other``, except the underlying Oracle Database type has been converted\n | to the one specified by ``dbtype``. \n | dbtype : 'number' or 'binary_double'\n | Ignored if ``other`` is type ``oml.Boolean``. Must be specified if ``other``\n | is type ``oml.Float``.\n | \n | __matmul__(self, other)\n | Equivalent to ``self @ other`` and ``self.dot(other)``.\n | \n | Returns the inner product with an oml.Float. Matrix multiplication with a\n | oml.DataFrame.\n | \n | Parameters\n | ----------\n | other : oml.Float or oml.DataFrame\n | \n | Returns\n | -------\n | matprod : oml.Float\n | \n | See Also\n | --------\n | Float.dot\n | \n | __mod__(self, other)\n | Equivalent to ``self % other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : Find the remainder when each element in ``self`` is divided by the\n | scalar.\n | * oml.Float : must come from the same data source. Find the remainder when each\n | element in ``self`` is divided by the corresponding element in ``other``.\n | \n | Returns\n | -------\n | remainder : oml.Float\n | \n | __mul__(self, other)\n | Equivalent to ``self * other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : multiply the scalar with each element in ``self``. \n | * oml.Float : must come from the same data source. Multiply corresponding\n | elements in ``self`` and ``other``.\n | \n | Returns\n | -------\n | product : oml.Float\n | \n | __neg__(self)\n | Return the negation of every element in ``self``. Equivalent to ``-self``.\n | \n | Returns\n | -------\n | negation : oml.Float\n | \n | __pow__(self, other)\n | Equivalent to ``self ** other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : Raise each element in ``self`` to the power of the scalar. \n | * oml.Float : must come from the same data source. Raise each element in \n | ``self`` to the power of the corresponding element in ``other``.\n | \n | Returns\n | -------\n | power : oml.Float\n | \n | __sub__(self, other)\n | Equivalent to ``self - other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : subtract the scalar from each element in ``self``. \n | * oml.Float : must come from the same data source. From each element in\n | ``self``, subtract the corresponding element in ``other``.\n | \n | Returns\n | -------\n | difference : oml.Float\n | \n | __truediv__(self, other)\n | Equivalent to ``self / other``.\n | \n | Parameters\n | ----------\n | other : int, float, or oml.Float\n | * scalar : divide each element in ``self`` by the scalar. \n | * oml.Float : must come from the same data source. Divide each element in\n | ``self`` by the corresponding element in ``other``.\n | \n | Returns\n | -------\n | quotient : oml.Float\n | \n | ceil(self)\n | Returns the ceiling of each element in the Float series data object.\n | \n | Returns\n | -------\n | ceil : oml.Float\n | \n | cut(self, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)\n | Returns the indices of half-open bins to which each value belongs.\n | \n | Parameters\n | ----------\n | bins : int or strictly monotonically increasing sequence of float/int\n | If int, defines number of equal-width bins in the range of this column.\n | In this case, to include the min and max value, the range is extended by\n | .1% on each side where the bin does not include the endpoint.\n | If a sequence, defines bin edges allowing for non-uniform bin-widths. In \n | this case, the range of x is not extended.\n | right : bool, True (default)\n | Indicates whether the bins include the rightmost edge or the leftmost\n | edge.\n | labels : sequence of unique str, int, or float values, False, or None (default)\n | If a sequence, must be the same length as the resulting number of bins\n | and must have values of same type. If False, bins are sequentially\n | labeled with integers. If None, bins are labeled with the intervals\n | they correspond to.\n | retbins : bool, False (default)\n | Indicates whether to return the bin edges or not. \n | precision : int, 3 (default)\n | When ``labels`` is None, determines the precision of the bin labels.\n | include_lowest : bool, False (default) \n | Indicates whether the first interval should be left-inclusive.\n | \n | Returns\n | -------\n | out : oml.Float or oml.String\n | If labels are ints or floats, return oml.Float.\n | If labels are str, return oml.String.\n | bins : :py:class:`numpy.ndarray` of floats\n | Returned only if ``retbins`` is True.\n | \n | describe(self, percentiles=None)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of the OML series data distribution.\n | \n | Parameters\n | ----------\n | percentiles : list-like of numbers, optional \n | The percentiles to include in the output. All must be between 0 and 1.\n | The default is [.25, .5, .75], which corresponds to the inclusion of \n | the 25th, 50th, and 75th percentiles.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``mean``, ``std``,\n | ``min``, ``max``, and the specified ``percentiles``. The 50th\n | percentile is always included.\n | \n | dot(self, other=None, skipna=True)\n | Returns the inner product with an oml.Float. Matrix multiplication with a\n | oml.DataFrame.\n | \n | Can be called using self @ other.\n | \n | Parameters\n | ----------\n | other : oml.Float or oml.DataFrame, optional\n | If not specified, self is used.\n | skipna : bool, True (default)\n | Treats NaN entries as 0.\n | \n | Returns\n | -------\n | dot_product : :py:class:`pandas.Series` or float\n | \n | exp(self)\n | Returns element-wise e to the power of values in the Float series data object.\n | \n | Returns\n | -------\n | exp : oml.Float\n | \n | floor(self)\n | Returns the floor of each element in the Float series data object.\n | \n | Returns\n | -------\n | floor : oml.Float\n | \n | isinf(self)\n | Detects infinite values element-wise in the Float series data object.\n | \n | Returns\n | -------\n | isinf : oml.Boolean\n | \n | isnan(self)\n | Detects a NaN (not a number) element from Float object.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates NaN for each element.\n | \n | log(self, base=None)\n | Returns element-wise logarithm, to the given ``base``, of values\n | in the Float series data object.\n | \n | Parameters\n | ----------\n | base : int, float, optional\n | The base of the logarithm, by default natural logarithm\n | \n | Returns\n | -------\n | log : oml.Float\n | \n | replace(self, old, new, default=None)\n | Replace values given in `old` with `new`.\n | \n | Parameters\n | ----------\n | old : list of float, or list of str\n | Specifying the old values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | new : list of float, or list of str\n | A list of the same length as argument `old` specifying\n | the new values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | default : float, str, or None (default)\n | A single value to use for the non-matched elements in argument\n | `old`. If None, non-matched elements will preserve their\n | original values. If not None, data type should be consistent\n | with values in `new`. Must be set when `old` and `new` contain\n | values of different data types.\n | \n | Returns\n | -------\n | replaced : oml.Float\n | \n | Raises\n | ------\n | ValueError\n | * if values in `old` have data types inconsistent with original values\n | * if `default` is specifed with a non-None value which has data type \n | inconsistent with values in `new`\n | * if `default` is None when `old` and `new` contain values of different\n | data types\n | \n | round(self, decimals=0)\n | Rounds oml.Float values to the specified decimal place.\n | \n | Parameters\n | ----------\n | decimals : non-negative int\n | \n | Returns\n | -------\n | rounded : oml.Float\n | \n | sqrt(self)\n | Returns the square root of each element in the Float series data object.\n | \n | Returns\n | -------\n | sqrt : oml.Float\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.number._Number:\n | \n | cumsum(self, ascending=True, na_position='last', skipna=True)\n | Gets the cumulative sum after the OML series data object is sorted.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | Sorts ascending, otherwise descending.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NaN and None at the beginning, ``last`` places them \n | at the end.\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | cumsum : oml.Float\n | \n | kurtosis(self, skipna=True)\n | Returns the sample kurtosis of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | kurt : float or nan\n | \n | mean(self, skipna=True)\n | Returns the mean of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | mean : float or numpy.nan\n | \n | median(self, skipna=True)\n | Returns the median of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | median : float or numpy.nan\n | \n | skew(self, skipna=True)\n | Returns the sample skewness of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | skew : float or nan\n | \n | std(self, skipna=True)\n | Returns the sample standard deviation of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | std : float or numpy.nan\n | \n | sum(self, skipna=True)\n | Returns the sum of the values.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | sum : float or numpy.nan\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | pull(self)\n | Pulls data represented by the series data object from Oracle Database\n | into an in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class String(oml.core.series._Series)\n | String(other, dbtype)\n | \n | Character series data class.\n | \n | Represents a single column of VARCHAR2, CHAR, or CLOB data in Oracle Database.\n | \n | Method resolution order:\n | String\n | oml.core.series._Series\n | oml.core.vector._Vector\n | builtins.object\n | \n | Methods defined here:\n | \n | __contains__(self, item)\n | Check whether all elements in ``item`` exists in the String series\n | \n | Equivalent to ``item in self``.\n | \n | Parameters\n | ----------\n | item : str, list of str, oml.String\n | Values to check in series\n | \n | Returns\n | -------\n | contains : bool\n | Returns ``True`` if all elements exist, otherwise ``False``.\n | \n | __init__(self, other, dbtype)\n | Convert underlying Oracle Database type.\n | \n | Parameters\n | ----------\n | other : oml.String\n | dbtype : 'varchar2' or 'clob'\n | \n | count_pattern(self, pat, flags=0)\n | Counts the number of occurrences of the pattern in each string. \n | \n | Parameters\n | ----------\n | pat : str that is a valid regular expression conforming to the POSIX standard\n | flags : int, 0 (default, no flags)\n | The following :py:mod:`python:re` module flags are supported:\n | \n | - :py:data:`python:re.I`/:py:data:`python:re.IGNORECASE` : Performs case-insensitive matching.\n | - :py:data:`python:re.M`/:py:data:`python:re.MULTILINE` : Treats the source string as multiple lines.\n | Interprets the caret (^) and dollar sign ($) as the start and end,\n | respectively, of any line anywhere in source string. Without this flag,\n | the caret and dollar sign match only the start and end, respectively, of\n | the source string.\n | - :py:data:`python:re.S`/:py:data:`python:re.DOTALL` : Allows the period (.) to match all characters,\n | including the newline character. Without this flag, the period matches all\n | characters except the newline character.\n | \n | Multiple flags can be specifed by bitwise OR-ing them.\n | \n | Returns\n | -------\n | counts : oml.Float\n | \n | find(self, sub, start=0)\n | Returns the lowest index in each string where substring is found that is\n | greater than or equal to ``start``. Returns -1 on failure.\n | \n | Parameters\n | ----------\n | sub : str\n | The text expression to search.\n | start : int\n | A nonnegative integer indicating when the function begins the search. \n | \n | Returns\n | -------\n | found : oml.Float\n | \n | len(self)\n | Computes the length of each string.\n | \n | Returns\n | -------\n | length : oml.Float\n | \n | pull(self)\n | Pulls data represented by this object from Oracle Database into an\n | in-memory Python object.\n | \n | Returns\n | -------\n | pulled_obj : list of str and None\n | \n | replace(self, old, new, default=None)\n | Replace values given in `old` with `new`.\n | \n | Parameters\n | ----------\n | old : list of float, or list of str\n | Specifying the old values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | new : list of float, or list of str\n | A list of the same length as argument `old` specifying\n | the new values. When specified with a list of float, it\n | can contain float('nan') and None. When specified with a list of str, it\n | can contain None.\n | default : float, str, or None (default)\n | A single value to use for the non-matched elements in argument\n | `old`. If None, non-matched elements will preserve their\n | original values. If not None, data type should be consistent\n | with values in `new`. Must be set when `old` and `new` contain \n | values of different data types.\n | \n | Returns\n | -------\n | replaced : oml.String\n | \n | Raises\n | ------\n | ValueError\n | * if values in `old` have data types inconsistent with original values\n | * if `default` is specifed with a non-None value which has data type\n | inconsistent with values in `new`\n | * if `default` is None when `old` and `new` contain values of different\n | data types\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.series._Series:\n | \n | KFold(self, n_splits=3, seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into k consecutive folds \n | for use with k-fold cross validation.\n | \n | Parameters\n | ----------\n | n_splits : int, 3 (default)\n | The number of folds. Must be greater than or equal to 2.\n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default):\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | kfold_data : a list of pairs of series objects of the same type as caller\n | Each pair within the list is a fold. The first element of the pair is the\n | train set, and the second element is the test set, which consists of all\n | elements not in the train set.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | __eq__(self, other)\n | Equivalent to ``self == other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | equal : oml.Boolean\n | \n | __ge__(self, other)\n | Equivalent to ``self >= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterequal : oml.Boolean\n | \n | __gt__(self, other)\n | Equivalent to ``self > other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | greaterthan : oml.Boolean\n | \n | __le__(self, other)\n | Equivalent to ``self <= other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessequal : oml.Boolean\n | \n | __lt__(self, other)\n | Equivalent to ``self < other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | lessthan : oml.Boolean\n | \n | __ne__(self, other)\n | Equivalent to ``self != other``.\n | \n | Parameters\n | ----------\n | other : OML series data object of compatible type or corresponding built-in python scalar\n | * scalar : every element in ``self`` will be compared to the scalar.\n | * a OML series : must come from the same data source. Every element in ``self`` will be\n | compared to the corresponding element in ``other``. oml.Float and oml.Boolean series\n | can be compared to each other. oml.String and oml.Bytes series can be compared to each\n | other.\n | \n | Returns\n | -------\n | notequal : oml.Boolean\n | \n | count(self)\n | Returns the number of elements that are not NULL.\n | \n | Returns\n | -------\n | nobs : int\n | \n | describe(self)\n | Generates descriptive statistics that summarize the central tendency, \n | dispersion, and shape of an OML series data distribution.\n | \n | Returns\n | -------\n | summary : :py:class:`pandas.Series`\n | Includes ``count`` (number of non-null entries), ``unique``\n | (number of unique entries), ``top`` (most common value), ``freq``,\n | (frequency of the most common value).\n | \n | drop_duplicates(self)\n | Removes duplicated elements.\n | \n | Returns\n | -------\n | deduplicated : type of caller\n | \n | dropna(self)\n | Removes missing values.\n | \n | Missing values include None and/or nan if applicable.\n | \n | Returns\n | -------\n | dropped : type of caller\n | \n | isnull(self)\n | Detects the missing value None.\n | \n | Returns\n | -------\n | isnull : oml.Boolean\n | Indicates missing value None for each element.\n | \n | max(self, skipna=True)\n | Returns the maximum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | max : Python type corresponding to the column or numpy.nan\n | \n | min(self, skipna=True)\n | Returns the minimum value.\n | \n | Parameters\n | ----------\n | skipna : boolean, True (default)\n | Excludes NaN values when computing the result.\n | \n | Returns\n | -------\n | min : Python type corresponding to the column or numpy.nan\n | \n | nunique(self, dropna=True)\n | Returns the number of unique values.\n | \n | Parameters\n | ----------\n | dropna : bool, True (default)\n | If True, NULL values are not included in the count. \n | \n | Returns\n | -------\n | nunique : int\n | \n | sort_values(self, ascending=True, na_position='last')\n | Sorts the values in the series data object.\n | \n | Parameters\n | ----------\n | ascending : bool, True (default)\n | If True, sorts in ascending order. Otherwise, sorts in descending order.\n | na_position : {'first', 'last'}, 'last' (default)\n | ``first`` places NANs and Nones at the beginning; ``last`` places them\n | at the end.\n | \n | Returns\n | -------\n | sorted_obj : type of caller\n | \n | split(self, ratio=(0.7, 0.3), seed=12345, use_hash=True, nvl=None)\n | Splits the series data object randomly into multiple sets.\n | \n | Parameters\n | ----------\n | ratio : a list of float values or (0.7, 0.3) (default)\n | All the numbers must be positive and the sum of them are no more than \n | 1. Each number represents the ratio of split data in one set. \n | seed : int or 12345 (default)\n | The seed to use for random splitting.\n | use_hash : boolean, True (default)\n | If True, use hashing to randomly split the data. If False, use a random\n | number to split the data.\n | nvl : numeric value, str, or None (default)\n | If not None, the specified values are used to hash in place of Null.\n | \n | Returns\n | -------\n | split_data : a list of series objects of the same type as caller\n | Each of which contains the portion of data by the specified ratio.\n | \n | Raises\n | ------\n | TypeError\n | * If ``use_hash`` is True, and the underlying database column type of\n | ``self`` is a LOB.\n | \n | ----------------------------------------------------------------------\n | Data and other attributes inherited from oml.core.series._Series:\n | \n | __hash__ = None\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.core.vector._Vector:\n | \n | __del__(self)\n | \n | __getitem__(self, key)\n | Index self. Equivalent to ``self[key]``.\n | \n | Parameters\n | ----------\n | key : oml.Boolean\n | Must be from the same data source as self.\n | \n | Returns\n | -------\n | subset : same type as self\n | Contains only the rows satisfying the condition in ``key``.\n | \n | __len__(self)\n | Returns number of rows. Equivalent to ``len(self)``.\n | \n | Returns\n | -------\n | rownum : int\n | \n | __repr__(self)\n | \n | append(self, other, all=True)\n | Appends the ``other`` OML data object of the same class to this data object.\n | \n | Parameters\n | ----------\n | other : An OML data object of the same class\n | all : boolean, True (default)\n | Keeps the duplicated elements from the two data objects.\n | \n | Returns\n | -------\n | appended : type of caller\n | A new data object containing the elements from both objects.\n | \n | concat(self, other, auto_name=False)\n | Combines current OML data object with the ``other`` data objects column-wise.\n | \n | Current object and the ``other`` data objects must be combinable, that is,\n | they both represent data from the same underlying database table, view, or query.\n | \n | Parameters\n | ----------\n | other : an OML data object, a list of OML data objects, or a dict mapping str to OML data objects.\n | * OML data object: an OML series data object or an oml.DataFrame\n | * list: a sequence of OML series and DataFrame objects to concat.\n | * dict: a dict mapping str to OML series and DataFrame objects,\n | the column name of concatenated OML series object is replaced with str,\n | column names of concatenated OML DataFrame object is prefixed with str.\n | Need to specify a :py:obj:`python:collections.OrderedDict` if the \n | concatenation order is expected to follow the key insertion order.\n | auto_name : boolean, False (default)\n | Indicates whether to automatically resolve conflict column names.\n | If True, append duplicated column names with suffix ``[column_index]``.\n | \n | Notes\n | -----\n | After concatenation is done, if there is any empty column names in the resulting \n | oml.DataFrame, they will be renamed with ``COL[column_index]``.\n | \n | Raises\n | ------\n | ValueError\n | * If ``other`` is not a single nor a list/dict of OML objects, or if ``other`` is empty.\n | * If objects in ``other`` are not from same data source.\n | * If ``auto_name`` is False and duplicated column names are detected.\n | \n | Returns\n | -------\n | concat_table : oml.DataFrame\n | An oml.DataFrame data object with its original columns followed by the \n | columns of ``other``.\n | \n | create_view(self, view=None, use_colname=False)\n | Creates an Oracle Database view for the data represented by the OML data \n | object.\n | \n | Parameters\n | ----------\n | view : str or None (default)\n | The name of a database view. If ``view`` is None, the created view is managed\n | by OML and the view is automatically dropped when no longer needed.\n | If a ``view`` is specified, then it is up to the user to drop the view.\n | use_colname : bool, False (default)\n | Indicates whether to create the view with the same column names as the\n | DataFrame object. Ignored if ``view`` is specified.\n | \n | Raises\n | ------\n | TypeError\n | * If the object represents data from a temporary table or view, and the view\n | to create is meant to persist past the current session.\n | \n | Returns\n | -------\n | new_view : oml.DataFrame\n | \n | head(self, n=5)\n | Returns the first n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_head : type of caller\n | \n | materialize(self, table=None)\n | Pushes the contents represented by an OML proxy object (a view, a table and so on) \n | into a table in Oracle Database.\n | \n | Parameters\n | ----------\n | table : str or None (default)\n | The name of a table. If ``table`` is None, an OML-managed table is \n | created, that is, OML drops the table when it is no longer used by \n | any OML object or when you invoke ``oml.disconnect(cleanup=True)`` to \n | terminate the database connection. If a table is specified, \n | then it's up to the user to drop the named table.\n | \n | Returns\n | -------\n | new_table : same type as self\n | \n | tail(self, n=5)\n | Returns the last n elements.\n | \n | Parameters\n | ----------\n | n : int, 5 (default)\n | The number of elements to return.\n | \n | Returns\n | -------\n | obj_tail : type of caller\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.core.vector._Vector:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | shape\n | The dimensions of the data set.\n | The first element is the number of rows and the second is the number of\n | columns.\n \n class ai(oml.algo.model.odmModel)\n | ai(model_name=None, model_owner=None, **params)\n | \n | In-database `Attribute Importance `_ Model\n | \n | Computes the relative importance of variables (aka attributes or columns) when predicting\n | a target variable (numeric or categorical column). This function exposes the \n | corresponding Oracle Advanced Analytics in-database algorithm. \n | Oracle Advanced Analytics does not support the prediction functions\n | for attribute importance. The results of attribute importance are the attributes\n | of the build data ranked according to their predictive influence. The ranking and\n | the measure of importance can be used for selecting attributes.\n | \n | :Attributes:\n | \n | **importance** : oml.DataFrame\n | \n | Relative importance of predictor variables for predicting a response variable.\n | It includes the following components:\n | \n | - variable: The name of the predictor variable\n | - importance: The importance of the predictor variable\n | - rank: The predictor variable rank based on the importance value.\n | \n | Method resolution order:\n | ai\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of Attribute Importance object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Attribute Importance model to create an oml.ai object from.\n | The specified database model is not dropped when the oml.ai object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Attribute Importance model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings or Algorithm-specific Settings are not\n | applicable to Attribute Importance model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None)\n | Fits an Attribute Importance Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.ai object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.ai object is deleted\n | unless oml.ai object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class ar(oml.algo.model.odmModel)\n | ar(model_name=None, model_owner=None, **params)\n | \n | In-database `Association Rules `_ Model\n | \n | Builds an Association Rules Model used to discover the probability of item co-occurrence\n | in a collection. This function exposes the corresponding Oracle Advanced Analytics \n | in-database algorithm. The relationships between co-occurring items are expressed as \n | association rules.\n | Oracle Advanced Analytics does not support the prediction functions for association modeling.\n | The results of an association model are the rules that identify patterns of\n | association within the data. Association rules can be ranked by support\n | (How often do these items occur together in the data?) and confidence\n | (How likely are these items to occur together in the data?).\n | \n | :Attributes:\n | \n | **rules** : oml.DataFrame\n | \n | Details of each rule that shows \n | how the appearance of a set of items in a transactional\n | record implies the existence of another set of items.\n | It includes the following components:\n | \n | - rule_id: The identifier of the rule\n | - number_of_items: The total number of attributes referenced in the antecedent and consequent of the rule\n | - lhs_name: The name of the antecedent.\n | - lhs_value: The value of the antecedent.\n | - rhs_name: The name of the consequent.\n | - rhs_value: The value of the consequent.\n | - support: The number of transactions that satisfy the rule.\n | - confidence: The likelihood of a transaction satisfying the rule.\n | - revconfidence: The number of transactions in which the rule occurs divided by the number of transactions in which the consequent occurs.\n | - lift: The degree of improvement in the prediction over random chance when the rule is satisfied.\n | \n | **itemsets** : oml.DataFrame\n | \n | Description of the item sets from the model built.\n | It includes the following components:\n | \n | - itemset_id: The itemset identifier\n | - support: The support of the itemset\n | - number_of_items: The number of items in the itemset\n | - item_name: The name of the item\n | - item_value: The value of the item\n | \n | Method resolution order:\n | ar\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of Association Rules object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Association Rules model to create an oml.ar object from.\n | The specified database model is not dropped when the oml.ar object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Association Rules model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic\n | Data Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Association are applicable.\n | No algorithm-specific Settings are applicable to Association model.\n | \n | __repr__(self)\n | \n | fit(self, x, model_name=None, case_id=None)\n | Fits an Association Rules Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.ar object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.ar object is deleted\n | unless oml.ar object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class dt(oml.algo.model.odmModel)\n | dt(model_name=None, model_owner=None, **params)\n | \n | In-database `Decision Tree `_ Model\n | \n | Builds a Decision Tree Model used to generate rules (conditional statements \n | that can easily be understood by humans and be used within a database to identify \n | a set of records) to predict a target value (numeric or categorical column). This \n | function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | A decision tree predicts a target value by asking a sequence of questions. \n | At a given stage in the sequence, the question that is asked depends upon the \n | answers to the previous questions. The goal is to ask questions that, taken \n | together, uniquely identify specific target values. Graphically, this process \n | forms a tree structure. During the training process, the Decision Tree algorithm \n | must repeatedly find the most efficient way to split a set of cases (records) \n | into two child nodes. The model offers two homogeneity metrics, gini and entropy, \n | for calculating the splits. The default metric is gini.\n | \n | \n | :Attributes:\n | \n | **nodes** : oml.DataFrame\n | \n | The node summary information with tree node details.\n | It includes the following components:\n | \n | - parent: The node ID of the parent\n | - node.id: The node ID\n | - row.count: The number of records in the training set that belong to the node\n | - prediction: The predicted Target value\n | - split: The main split\n | - surrogate: The surrogate split\n | - full.splits: The full splitting criterion\n | \n | **distributions** : oml.DataFrame\n | \n | The target class distributions at each tree node.\n | It includes the following components:\n | \n | - node_id: The node ID\n | - target_value: The target value\n | - target_count: The number of rows for a given target_value\n | \n | Method resolution order:\n | dt\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of dt object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Decision Tree model to create an oml.dt object from.\n | The specified database model is not dropped when the oml.dt object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Decision Tree model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Decision Tree model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, cost_matrix=None, case_id=None)\n | Fits a decision tree model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.dt object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.dt object is deleted\n | unless oml.dt object is saved into a datastore.\n | cost_matrix : OML DataFrame, list of ints, floats or None (default)\n | An optional numerical matrix that specifies the costs for incorrectly\n | predicting the target values. The first value represents the actual target value.\n | The second value represents the predicted target value. The third value is the cost.\n | In general, the diagonal entries of the matrix are zeros. Refer to `Oracle Data\n | Mining User's Guide `_\n | for more details about cost matrix.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if proba is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols``, and the\n | results. The results include the most likely target class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data and returns the mean accuracy.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class em(oml.algo.model.odmModel)\n | em(n_clusters=None, model_name=None, model_owner=None, **params)\n | \n | In-database `Expectation Maximization `_ Model\n | \n | Builds an Expectation Maximization (EM) Model used to performs probabilistic \n | clustering based on a density estimation algorithm. This function exposes the \n | corresponding Oracle Advanced Analytics in-database algorithm. In density estimation, \n | the goal is to construct a density function that captures how a given population is \n | distributed. The density estimate is based on observed data that represents a \n | sample of the population.\n | \n | :Attributes:\n | \n | **clusters** : oml.DataFrame\n | \n | The general per-cluster information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - cluster_name: The name of a cluster in the model\n | - record_count: The number of rows used in the build\n | - parent: The ID of the parent\n | - tree_level: The number of splits from the root\n | - left_child_id: The ID of the left child\n | - right_child_id: The ID of the right child\n | \n | **taxonomy**: oml.DataFrame\n | \n | The parent/child cluster relationship.\n | It includes the following components:\n | \n | - parent_cluster_id: The ID of the parent cluster\n | - child_cluster_id: The ID of the child cluster\n | \n | **centroids**: oml.DataFrame\n | \n | Per cluster-attribute center (centroid) information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - attribute_name: The attribute name\n | - mean: The average value of a numeric attribute\n | - mode_value: The most frequent value of a categorical attribute\n | - variance: The variance of a numeric attribute\n | \n | **leaf_cluster_counts**: pandas.DataFrame\n | \n | Leaf clusters with support.\n | It includes the following components:\n | \n | - cluster_id: The ID of a leaf cluster in the model\n | - cnt: The number of records in a leaf cluster\n | \n | **attribute_importance**: oml.DataFrame\n | \n | Attribute importance of the fitted model.\n | It includes the following components:\n | \n | - attribute_name: The attribute name\n | - attribute_importance_value: The attribute importance for an attribute\n | - attribute_rank: The rank of the attribute based on importance\n | \n | **projection**: oml.DataFrame\n | \n | The coefficients used by random projections to map nested columns to a lower dimensional space.\n | It exists only when nested or text data is present in the build data.\n | It includes the following components:\n | \n | - feature_name: The name of feature\n | - attribute_name: The attribute name\n | - attribute_value: The attribute value\n | - coefficient: The projection coefficient for an attribute\n | \n | **components**: oml.DataFrame\n | \n | EM components information about their prior probabilities and what cluster they map to.\n | It includes the following components:\n | \n | - component_id: The unique identifier of a component\n | - cluster_id: The ID of a cluster in the model\n | - prior_probability: The component prior probability\n | \n | **cluster_hists**: oml.DataFrame\n | Cluster histogram information.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - variable: The attribute name\n | - bin.id: The ID of a bin\n | - lower.bound: The numeric lower bin boundary\n | - upper.bound: The numeric upper bin boundary\n | - label: The label of the cluster\n | - count: The histogram count\n | \n | **rules**: oml.DataFrame\n | \n | Conditions for a case to be assigned with some probability to a cluster.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - rhs.support: The record count\n | - rhs.conf: The record confidence\n | - lhr.support: The rule support\n | - lhs.conf: The rule confidence\n | - lhs.var: The attribute predicate name\n | - lhs.var.support: The attribute predicate support\n | - lhs.var.conf: The attribute predicate confidence\n | - predicate: The attribute predicate\n | \n | Method resolution order:\n | em\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, n_clusters=None, model_name=None, model_owner=None, **params)\n | Initializes an instance of em object.\n | \n | Parameters\n | ----------\n | n_clusters : positive integer, None (default)\n | The number of clusters. If n_clusters is None, the number of clusters will be determined\n | either by current setting parameters or automatically by the algorithm.\n | model_name : string or None (default)\n | The name of an existing database Expectation Maximization model to create an oml.em object from.\n | The specified database model is not dropped when the oml.em object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Expectation Maximization model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Clustering and `Algorithm-specific\n | Settings `_\n | are applicable to Expectation Maximization model.\n | \n | __repr__(self)\n | \n | fit(self, x, model_name=None, case_id=None)\n | Fits an Expectation Maximization Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.em object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.em object is deleted\n | unless oml.em object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. If the mode is 'class', the results include the most likely\n | target class and its probability. If mode is 'raw', the results\n | include for each target class, the probability belonging\n | to that class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each cluster on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned clusters to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each cluster, the probability\n | belonging to that cluster.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class esa(oml.algo.model.odmModel)\n | esa(model_name=None, model_owner=None, **params)\n | \n | In-database `Explicit Semantic Analysis `_ Model\n | \n | Builds an Explicit Semantic Analysis (ESA) Model to be used for feature extraction. \n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | ESA uses concepts of an existing knowledge base as features rather than latent\n | features derived by latent semantic analysis methods such as Singular\n | Value Decomposition and Latent Dirichlet Allocation. Each row, for example,\n | a document in the training data maps to a feature, that is, a concept.\n | ESA works best with concepts represented by text documents.\n | It has multiple applications in the area of text processing, most\n | notably semantic relatedness (similarity) and explicit topic modeling.\n | Text similarity use cases might involve, for example, resume matching, searching\n | for similar blog postings, and so on.\n | \n | :Attributes:\n | \n | **features** : oml.DataFrame\n | \n | Description of each feature extracted. \n | It includes the following components:\n | \n | - feature_id: The unique identifier of a feature as it appears in the training data\n | - attribute_name: The attribute name\n | - attribute_value: The attribute value\n | - coefficient: The coefficient (weight) associated with the attribute in a particular feature.\n | \n | Method resolution order:\n | esa\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of esa object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Explicit Semantic Analysis model to create an oml.esa object from.\n | The specified database model is not dropped when the oml.esa object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Explicit Semantic Analysis model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Feature Extraction and `Algorithm-specific\n | Settings `_\n | are applicable to Explicit Semantic Analysis model.\n | \n | __repr__(self)\n | \n | feature_compare(self, x, compare_cols=None, supplemental_cols=None)\n | Compares features of data and generates relatedness.\n | \n | Parameters\n | ----------\n | x : an OML object\n | The data used to measure relatedness.\n | compare_cols : str, a list of str or None (default)\n | The column(s) used to measure data relatedness.\n | If None, all the columns of ``x`` are compared to measure relatedness.\n | supplemental_cols : a list of str or None (default)\n | A list of columns to display along with the resulting 'SIMILARITY' column.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains a 'SIMILARITY' column that measures relatedness and supplementary columns if specified.\n | \n | fit(self, x, model_name=None, case_id=None, ctx_settings=None)\n | Fits an ESA Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.esa object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.esa object is deleted\n | unless oml.esa object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include the most likely feature and its probability.\n | \n | transform(self, x, supplemental_cols=None, topN=None)\n | Make predictions and return relevancy for each feature on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned values to\n | the specified number of features that have the highest topN values.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the relevancy for each feature on new data and the specified ``supplemental_cols``.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class glm(oml.algo.model.odmModel)\n | glm(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Generalized Linear Models `_\n | \n | Builds Generalized Linear Models (GLM), which include and extend the class of \n | linear models (linear regression), to be used for classification or regression. \n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | Generalized linear models relax the restrictions on linear models, which are often \n | violated in practice. For example, binary (yes/no or 0/1) responses do not have same \n | variance across classes. This model uses a parametric modeling technique. Parametric \n | models make assumptions about the distribution of the data. When the assumptions are \n | met, parametric models can be more efficient than non-parametric models.\n | \n | :Attributes:\n | \n | **coef** : oml.DataFrame\n | \n | The coefficients of the GLM model, one for each predictor variable.\n | It includes the following components:\n | \n | - nonreference: The target value used as nonreference\n | - name: The attribute name\n | - level: The attribute value\n | - estimate: The estimated coefficient\n | \n | **fit_details**: oml.DataFrame\n | \n | The model fit details such as adjusted_r_square, error_mean_square and so on.\n | It includes the following components:\n | \n | - name: The fit detail name\n | - value: The fit detail value\n | \n | **deviance**: float\n | \n | Minus twice the maximized log-likelihood, up to a constant.\n | \n | **null_deviance**: float\n | \n | The deviance for the null (intercept only) model.\n | \n | **aic**: float\n | \n | Akaike information criterion.\n | \n | **rank**: integer\n | \n | The numeric rank of the fitted model.\n | \n | **df_residual**: float\n | \n | The residual degrees of freedom.\n | \n | **df_null**: float\n | \n | The residual degrees of freedom for the null model.\n | \n | **converged**: bool\n | \n | The indicator for whether the model converged.\n | \n | **nonreference**: int or str\n | \n | For logistic regression, the response values that represents success.\n | \n | Method resolution order:\n | glm\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of glm object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' or 'REGRESSION', 'CLASSIFICATION' (default)\n | Type of model mining functionality\n | model_name : string or None (default)\n | The name of an existing database Generalized Linear Model to create an oml.glm object from.\n | The specified database model is not dropped when the oml.glm object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Generalized Linear Model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Generalized Linear Model model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, ctx_settings=None)\n | Fits a GLM Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.glm object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.glm object is deleted\n | unless oml.glm object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None, confint=None, level=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | confint : bool, False (default)\n | A logical indicator for whether to produce confidence intervals.\n | for the predicted values.\n | level : float between 0 and 1 or None (default)\n | A numeric value within [0, 1] to use for the confidence level.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True for classification.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and optionally its probability and confidence\n | intervals. For a linear regression model, the results consist of a column\n | for the prediction and optionally its confidence intervals.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | residuals(self, x, y)\n | Return the deviance residuals, which includes the following components:\n | - deviance: The deviance residual\n | - pearson: The Pearson residual\n | - response: The residual of the working response.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | \n | Return: oml.DataFrame\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class km(oml.algo.model.odmModel)\n | km(n_clusters=None, model_name=None, model_owner=None, **params)\n | \n | In-database `k-means `_ Model\n | \n | Builds a K-Means (KM) Model that uses a distance-based clustering algorithm to \n | partition data into a specified number of clusters. This function exposes the \n | corresponding Oracle Advanced Analytics in-database algorithm. Distance-based \n | algorithms rely on a distance function to measure the similarity between cases. \n | Cases are assigned to the nearest cluster according to the distance function used.\n | \n | :Attributes:\n | \n | **clusters** : oml.DataFrame\n | \n | The general per-cluster information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - row_cnt: The number of rows used in the build\n | - parent_cluster_id: The ID of the parent\n | - tree_level: The number of splits from the root\n | - dispersion: The measure of the quality of the cluster, and computationally, the sum of square errors\n | \n | **taxonomy**: oml.DataFrame\n | \n | The parent/child cluster relationship.\n | It includes the following components:\n | \n | - parent_cluster_id: The ID of the parent cluster\n | - child_cluster_id: The ID of the child cluster\n | \n | **centroids**: oml.DataFrame\n | \n | Per cluster-attribute center (centroid) information.\n | It includes the following components:\n | \n | - cluster_id: The ID of a cluster in the model\n | - attribute_name: The attribute name\n | - mean: The average value of a numeric attribute\n | - mode_value: The most frequent value of a categorical attribute\n | - variance: The variance of a numeric attribute\n | \n | **leaf_cluster_counts**: pandas.DataFrame\n | \n | Leaf clusters with support.\n | It includes the following components:\n | \n | - cluster_id: The ID of a leaf cluster in the model\n | - cnt: The number of records in a leaf cluster\n | \n | **cluster_hists**: oml.DataFrame\n | \n | Cluster histogram information.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - variable: The attribute name\n | - bin.id: The ID of a bin\n | - lower.bound: The numeric lower bin boundary\n | - upper.bound: The numeric upper bin boundary\n | - label: The label of the cluster\n | - count: The histogram count\n | \n | **rules**: oml.DataFrame\n | \n | Conditions for a case to be assigned with some probability to a cluster.\n | It includes the following components:\n | \n | - cluster.id: The ID of a cluster in the model\n | - rhs.support: The record count\n | - rhs.conf: The record confidence\n | - lhr.support: The rule support\n | - lhs.conf: The rule confidence\n | - lhs.var: The attribute predicate name\n | - lhs.var.support: The attribute predicate support\n | - lhs.var.conf: The attribute predicate confidence\n | - predicate: The attribute predicate\n | \n | Method resolution order:\n | km\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, n_clusters=None, model_name=None, model_owner=None, **params)\n | Initializes an instance of km object.\n | \n | Parameters\n | ----------\n | n_clusters : positive integer, default None\n | Number of clusters. If n_clusters is None, the number of clusters will be determined\n | either by current setting parameters or automatically by the internal algorithm.\n | model_name : string or None (default)\n | The name of an existing database K-Means model to create an oml.km object from.\n | The specified database model is not dropped when the oml.km object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing K-Means model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Clustering and `Algorithm-specific\n | Settings `_\n | are applicable to K-Means model.\n | \n | __repr__(self)\n | \n | fit(self, x, model_name=None, case_id=None, ctx_settings=None)\n | Fits a K-Means Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.km object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.km object is deleted\n | unless oml.km object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None(default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each cluster on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer\n | A positive integer that restricts the returned clusters to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each cluster, the probability\n | belonging to that cluster.\n | \n | score(self, x)\n | Calculates the score value based on the input data ``x``.\n | \n | Parameters\n | ----------\n | x : an OML object\n | A new data set used to calculate score value.\n | \n | Returns\n | -------\n | pred : float\n | Score values, that is, opposite of the value of ``x`` on the K-means objective.\n | \n | transform(self, x)\n | Transforms ``x`` to a cluster-distance space.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the distance to each cluster.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class nb(oml.algo.model.odmModel)\n | nb(model_name=None, model_owner=None, **params)\n | \n | In-database `Naive Bayes `_ Model\n | \n | Builds a Naive Bayes Model that uses conditional probabilities to predict a target \n | variable (numeric or categorical column). Naive Bayes looks at the historical data \n | and calculates conditional probabilities for the target values by observing the \n | frequency of attribute values and of combinations of attribute values. Naive Bayes \n | assumes that each predictor is conditionally independent of the others. (Bayes' \n | Theorem requires that the predictors be independent.)\n | \n | :Attributes:\n | \n | **priors** : oml.DataFrame\n | \n | An optional named numerical vector that specifies the priors for the target classes.\n | It includes the following components:\n | \n | - target_name: The name of the target column\n | - target_value: The target value\n | - prior_probability: The prior probability for a given target_value\n | - count: The number of rows for a given target_value\n | \n | **conditionals** : oml.DataFrame\n | \n | Conditional probabilities for each predictor variable.\n | It includes the following components:\n | \n | - target_name: The name of the target column\n | - target_value: The target value\n | - attribute_name: The column name\n | - attribute_subname: The nested column subname.\n | - attribute_value: The mining attribute value\n | - conditional_probability: The conditional probability of a mining attribute for a given target\n | - count: The number of rows for a given mining attribute and a given target\n | \n | Method resolution order:\n | nb\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of nb object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Naive Bayes model to create an oml.nb object from.\n | The specified database model is not dropped when the oml.nb object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Naive Bayes model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Naive Bayes model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, priors=None, case_id=None)\n | Fits a Naive Bayes Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.nb object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.nb object is deleted\n | unless oml.nb object is saved into a datastore.\n | priors : OML DataFrame or dict or list of ints or floats or None (default)\n | The priors represent the overall distribution of the target in the\n | population. By default, the priors are computed from the sample.\n | If the sample is known to be a distortion of the population target\n | distribution, then the user can override the default by providing\n | a priors table as a setting for model creation. For OML DataFrame\n | input, the first value represents the target value. The second value\n | represents the prior probability. For dictionary type input, the key\n | represents the target value. The value represents the prior probability.\n | For list type input, the first value represents target value. The\n | second value represents the prior probability. See `Oracle Data\n | Mining Concepts Guide `_\n | for more details.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include the most likely target class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | TopN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data and returns the mean accuracy.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class nn(oml.algo.model.odmModel)\n | nn(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Neural Network `_ Model\n | \n | Builds a Neural Network (NN) Model that uses an algorithm inspired from biological\n | neural network for classification and regression. Neural Network is used to to estimate\n | or approximate functions that depend on a large number of generally unknown inputs.\n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | An artificial neural network is composed of a large number of interconnected neurons\n | which exchange messages between each other to solve specific problems. They learn by\n | examples and tune the weights of the connections among the neurons during the learning\n | process. Neural Network is capable of solving a wide variety of tasks such as computer\n | vision, speech recognition, and various complex business problems.\n | \n | :Attributes:\n | \n | **weights** : oml.DataFrame\n | \n | Weights of fitted model between nodes in different layers.\n | It includes the following components:\n | \n | - layer: The layer ID, 0 as an input layer\n | - idx_from: The node index that the weight connects from (attribute id for input layer)\n | - idx_to: The node index that the weights connects to\n | - attribute_name: The attribute name (only for the input layer)\n | - attribute_subname: The attribute subname\n | - attribute_value: The attribute value\n | - target_value: The target value.\n | - weight: The value of weight\n | \n | **topology** : oml.DataFrame\n | \n | Topology of the fitted model including number of nodes and hidden layers.\n | It includes the following components:\n | \n | - hidden_layer_id: The id number of the hidden layer\n | - num_node: The number of nodes in each layer\n | - activation_function: The activation function in each layer\n | \n | Method resolution order:\n | nn\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of nn object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' or 'REGRESSION', 'CLASSIFICATION' (default)\n | Type of model mining functionality\n | model_name : string or None (default)\n | The name of an existing database Neural Network model to create an oml.nn object from.\n | The specified database model is not dropped when the oml.nn object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Neural Network model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Neural Network model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, class_weight=None)\n | Fits a Neural Network Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.nn object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.nn object is deleted\n | unless oml.nn object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | class_weight : OML DataFrame or dict or list of ints or floats or None (default)\n | An optional matrix that is used to influence the weighting of\n | target classes during model creation. For OML DataFrame input, the first\n | value represents the target value. The second value represents the class weight.\n | For dictionary type input, the key represents the target value. The value\n | represents the class weight. For list type input, the first value represents\n | target value. The second value represents the predicted target value.\n | Refer to `Oracle Data Mining User's Guide `_\n | for more details about class weights.\n | \n | get_params(self, params=None, deep=False)\n | Fetches settings of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If params is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and its probability. For a regression\n | model, the results consist of a column for the prediction. For an\n | anomaly detection model, the results include a prediction and its\n | probability. If the prediction is 1, the case is considered typical.\n | If the prediction is 0, the case is considered anomalous. This\n | behavior reflects the fact that the model is trained with normal data.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class rf(oml.algo.model.odmModel)\n | rf(model_name=None, model_owner=None, **params)\n | \n | In-database `Random Forest `_ Model\n | \n | Builds a Random Forest (RF) Model that uses an ensemble (also called forest) of trees \n | for classification. This function exposes the corresponding Oracle Advanced Analytics \n | in-database algorithm. Random Forest is a popular ensemble learning technique for \n | classification. By combining the ideas of bagging and random selection of variables, \n | the algorithm produces collection of decision trees with controlled variance, while \n | avoiding overfitting - a common problem for decision trees.\n | \n | :Attributes:\n | \n | **importance** : oml.DataFrame\n | \n | Attribute importance of the fitted model.\n | It includes the following components:\n | \n | - attribute_name: The attribute name\n | - attribute_subname: The attribute subname \n | - attribute_importance: The attribute importance for an attribute in the forest\n | \n | Method resolution order:\n | rf\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of rf object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Random Forest model to create an oml.rf object from.\n | The specified database model is not dropped when the oml.rf object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Random Forest model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each dict element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Random Forest model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, cost_matrix=None, case_id=None)\n | Fits a Random Forest Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.rf object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.rf object is deleted\n | unless oml.rf object is saved into a datastore.\n | cost_matrix : OML DataFrame or list of ints or floats or None (default)\n | An optional numerical square matrix that specifies the costs for incorrectly\n | predicting the target values. The first value represents the actual target value.\n | The second value represents the predicted target value. The third value is the cost.\n | In general, the diagonal entries of the matrix are zeros. Refer to `Oracle Data\n | Mining User's Guide `_\n | for more details about cost matrix.\n | case_id : string or None (default)\n | The column name used as case id for building the model.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols``, and the most likely\n | target class.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data and returns the mean accuracy.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class svd(oml.algo.model.odmModel)\n | svd(model_name=None, model_owner=None, **params)\n | \n | In-database `Singular Value Decomposition `_ Model\n | \n | Builds a Singular Value Decomposition (SVD) Model that can be used for feature \n | extraction. SVD provides orthogonal linear transformations that capture the \n | underlying variance of the data by decomposing a rectangular matrix into three \n | matrixes: U, D, and V. Matrix D is a diagonal matrix and its singular values \n | reflect the amount of data variance captured by the bases. Columns of matrix V \n | contain the right singular vectors and columns of matrix U contain the left singular\n | vectors.\n | \n | :Attributes:\n | \n | **features** : oml.DataFrame\n | \n | Features extracted by the fitted model including feature id and associated coefficient.\n | It includes the following components:\n | \n | - feature_id: The ID of a feature in the model\n | - attribute_name: The attribute name\n | - attribute_value: The attribute value\n | - value: The matrix entry value\n | \n | **u** : oml.DataFrame\n | \n | A dataframe whose columns contain the left singular vectors.\n | The column name is the corresponding feature id.\n | \n | **v** : oml.DataFrame\n | \n | A dataframe whose columns contain the right singular vectors.\n | The column name is the corresponding feature id.\n | \n | **d** : oml.DataFrame\n | \n | A dataframe containing the singular values of the input data.\n | It includes the following components:\n | \n | - feature_id: The ID of a feature in the model\n | - value: The singular values of the input data\n | \n | Method resolution order:\n | svd\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, model_name=None, model_owner=None, **params)\n | Initializes an instance of svd object.\n | \n | Parameters\n | ----------\n | model_name : string or None (default)\n | The name of an existing database Singular Value Decomposition model to create an oml.svd object from.\n | The specified database model is not dropped when the oml.svd object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Singular Value Decomposition model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Feature Extraction and `Algorithm-specific\n | Settings `_\n | are applicable to Singular Value Decomposition model.\n | \n | __repr__(self)\n | \n | feature_compare(self, x, compare_cols=None, supplemental_cols=None)\n | Compares features of data and generates relatedness.\n | \n | Parameters\n | ----------\n | x : an OML object\n | The data used to measure relatedness.\n | compare_cols : str, a list of str or None (default)\n | The column(s) used to measure data relatedness.\n | If None, all the columns of ``x`` are compared to measure relatedness.\n | supplemental_cols : a list of str or None (default)\n | A list of columns to display along with the resulting 'SIMILARITY' column.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains a 'SIMILARITY' column that measures relatedness and supplementary columns if specified.\n | \n | fit(self, x, model_name=None, case_id=None, ctx_settings=None)\n | Fits an SVD Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.svd object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.svd object is deleted\n | unless oml.svd object is saved into a datastore.\n | case_id : string or None (default)\n | The column name used as case id for building the model. \n | ``case_id`` and SVDS_U_MATRIX_OUTPUT in ``odm_settings`` \n | must be specified in order to produce matrix U.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the predicted feature index on the new data and the specified ``supplemental_cols``.\n | \n | transform(self, x, supplemental_cols=None, topN=None)\n | Performs dimensionality reduction and returns value for each feature on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned values to\n | the specified number of features that have the highest topN values.\n | If None, all features will be returned.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the values of new data after the SVD transform and the specified ``supplemental_cols``.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n \n class svm(oml.algo.model.odmModel)\n | svm(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Support Vector Machine `_ Model\n | \n | Builds a Support Vector Machine (SVM) Model to be used for regression, classification, \n | or anomaly detection. This function exposes the corresponding Oracle Advanced Analytics \n | in-database algorithm. SVM is a powerful, state-of-the-art algorithm with strong \n | theoretical foundations based on the Vapnik-Chervonenkis theory. SVM has strong \n | regularization properties. Regularization refers to the generalization of the model to \n | new data.\n | \n | \n | :Attributes:\n | \n | **coef** : oml.DataFrame\n | \n | The coefficients of the SVM model, one for each predictor variable.\n | It includes the following components:\n | \n | - target_value: The target value\n | - attribute_name: The attribute name\n | - attribute_subname: The attribute subname\n | - attribute_value: The attribute value\n | - coef: The projection coefficient value\n | \n | Method resolution order:\n | svm\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of svm object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' (default), 'REGRESSION' or 'ANOMALY_DETECTION'\n | Type of model mining functionality.\n | model_name : string or None (default)\n | The name of an existing database Support Vector Machine model to create an oml.svm object from.\n | The specified database model is not dropped when the oml.svm object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Support Vector Machine model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Support Vector Machine model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, ctx_settings=None)\n | Fits an SVM Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object or None, or string\n | Target values.\n | Must be specified when SVM algorithm is used for classification\n | or regression and must be None when used for anomaly detection.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.svm object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.svm object is deleted\n | unless oml.svm object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : oml.DataFrame\n | Predictor values used by the model to generate scores\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and its probability. For a regression\n | model, the results consist of a column for the prediction. For an\n | anomaly detection model, the results include a prediction and its\n | probability. If the prediction is 1, the case is considered normal.\n | If the prediction is 0, the case is considered anomalous. This\n | behavior reflects the fact that the model is trained with normal data.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n\nFUNCTIONS\n boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None)\n Makes a box and whisker plot.\n \n For every column of ``x`` or for every column object in ``x``, makes a box and whisker plot.\n \n Parameters\n ----------\n x : oml.DataFrame or oml.Float or list of oml.Float\n The data to plot.\n notch : bool, False (default), optional\n If True, produces a notched box plot. Otherwise, a rectangular\n boxplot is produced. By default, the confidence intervals are approximated\n as ``median +/-1.57 IQR/sqrt(n)`` where ``n`` is the number of not-null/NA\n values in the column. \n conf_intervals : array-like, optional\n Array or sequence whose first dimension is equal to the number of columns\n in ``x`` and whose second dimension is 2.\n labels : sequence, optional\n Length must be equal to the number of columns in ``x``. When an element of\n ``labels`` is not None, the default label of the column, which is the name\n of the column, is overridden.\n \n Notes\n -----\n For information on the other parameters, see documentation for :py:func:`matplotlib.pyplot.boxplot`.\n \n Returns\n -------\n ax : :py:class:`matplotlib.axes.Axes`\n The :py:class:`matplotlib.axes.Axes` instance of the boxplot figure.\n result : dict\n A dict mapping each component of the boxplot to the corresponding list of\n :py:class:`matplotlib.lines.Lines2D` instances created.\n \n check_embed()\n Indicates whether embedded Python is set up in the connected Oracle Database.\n \n Returns\n -------\n embed_status : bool or None\n None when not connected.\n \n connect(user=None, password=None, host=None, port=None, sid=None, service_name=None, dsn=None, encoding='UTF-8', nencoding='UTF-8', automl=None, **kwargs)\n Establishes an Oracle Database connection.\n \n Just as with :py:func:`cx_Oracle.connect`, the user, password, and data\n source name can be provided separately or with host, port, sid or\n service_name.\n \n There can be only one active connection. Calling this method when an\n active connection already exists replaces the active connection with\n a new one. This results in the previous connection being implicitly\n disconnected with the corresponding release of resources.\n \n Parameters\n ----------\n user : str or None (default)\n password : str or None (default)\n host : str or None (default)\n Host name of the Oracle Database.\n port : int, str or None (default)\n The Oracle Database port number.\n sid : str or None (default)\n The Oracle Database SID.\n service_name : str or None (default)\n The service name to be used in the connection identifier for\n the Oracle Database.\n dsn : str or None (default)\n Data source name. The TNS entry of the database, or an TNS\n alias in the Oracle Wallet.\n encoding : str, 'UTF-8' (default)\n Encoding to use for regular database strings.\n nenconding : str, 'UTF-8' (default)\n Encoding to use for national character set database strings.\n automl : str, or bool or None (default)\n To enable automl, specify:\n * True: if ``host``, ``port``, ``sid`` or ``service_name``\n are specified and a connection pool is running for this\n (``host``, ``port``, ``sid`` or ``service_name``).\n * Data source name: for a running connection pool\n if ``dsn`` is specified with a data source name.\n * TNS alias in an Oracle Wallet: for a running connection pool\n if ``dsn`` is also specified with Wallet TNS alias.\n Otherwise, automl is disabled.\n \n Notes\n -----\n * Parameters ``sid`` and ``service_name`` are exclusive.\n * Parameters (``host``, ``port``, ``sid`` or ``service_name``),\n and ``dsn`` can only be specified exclusively.\n * Parameter ``user`` and ``password`` must be provided when\n (``host``, ``port``, ``sid`` or ``service_name``) is specified,\n or ``dsn`` (and optionally ``automl``) is specified with\n a data source name.\n * Parameter ``user`` and ``password`` should be set to empty str \"\",\n when ``dsn`` (and optionally ``automl``) is specified with\n Wallet TNS alias, to establish connection with Oracle Wallet.\n * Automl requires `Database Resident Connection Pooling (DRCP)\n `_\n running on the Database server.\n \n create(x, table, oranumber=True, dbtypes=None, append=False)\n Creates a table in Oracle Database from a Python data set.\n \n Parameters\n ----------\n x : pandas.DataFrame or a list of tuples of equal size\n If ``x`` is a list of tuples of equal size, each tuple represents\n a row in the table. The column names are set to COL1, COL2, ... and so on.\n table : str\n A name for the table.\n oranumber : bool, True (default)\n If True, use SQL NUMBER for numeric columns. Otherwise, use BINARY_DOUBLE.\n Ignored if ``append`` is True.\n dbtypes : dict mapping str to str or list of str\n A list of SQL types to use on the new table. If a list, its length should\n be equal to the number of columns. If a dict, the keys are the names of the\n columns. Ignored if ``append`` is True.\n append : bool, False (default)\n Indicates whether to append the data to the existing table.\n \n Notes\n -----\n * When creating a new table, for columns whose SQL types are not specified in\n ``dbtypes``, NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. Users should set\n ``oranumber`` to False when the data contains NaN values. For string columns,\n the default type is VARCHAR2(4000), and for bytes columns, the default type\n is BLOB.\n * When ``x`` is specified with an empty pandas.DataFrame, OML creates an\n empty table. NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. VARCHAR2(4000) is\n used for columns of object dtype in the pandas.DataFrame.\n * OML does not support columns containing values of multiple data types,\n data conversion is needed or a TypeError may be raised.\n * OML determines default column types by looking at 20 random rows sampled\n from the table. For tables with less than 20 rows, all rows are used\n in column type determination. NaN values are considered as float type.\n If a column has all Nones, or has inconsistent data types that are not\n None in the sampled rows, a default column type cannot be determined,\n and a ValueError is raised unless a SQL type for the column is specified\n in ``dbtypes``.\n \n Returns\n -------\n new_table : oml.DataFrame\n A proxy object that represents the newly-created table.\n \n cursor()\n Returns a cx_Oracle cursor object of the current OML database connection.\n It can be used to execute queries against Oracle Database.\n \n Returns\n -------\n cursor_obj : a cx_Oracle :ref:`cx:cursorobj`.\n \n dir()\n Returns the names of OML objects in the workspace.\n \n Returns\n -------\n obj_names : list of str\n \n disconnect(cleanup=True)\n Terminates the Oracle Database connection. By default, the OML\n objects created through this connection will be deleted.\n \n Parameters\n ----------\n cleanup : bool, True (default)\n Cleans up OML objects defined in Python's main module before\n disconnecting from the database.\n \n do_eval(func, func_owner=None, graphics=False, **kwargs)\n Executes a Python function in Oracle Database server.\n \n Parameters\n ----------\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : Python object or oml.embed.data_image._DataImage\n If no image is rendered in the script, returns whatever Python object returned\n by the function. Otherwise, returns an oml.embed.data_image._DataImage object.\n See :ref:`more-output`.\n \n drop(table=None, view=None, model=None)\n Drops a database table, view, or model.\n \n Parameters\n ----------\n table : str or None (default)\n The name of the table to drop.\n view : str or None (default)\n The name of the view to drop.\n model : str or None (default)\n The name of the model to drop.\n \n grant(name, typ='datastore', user=None)\n Grants read privilege for a Python script or datastore.\n Requires the user to have the `PYQADMIN` Oracle Database role.\n \n Parameters\n ----------\n name : str\n The name of Python script in the Python script repository or the name of\n a datastore. The current user must be the owner of the Python script or\n datastore.\n typ : 'datastore' (default) or 'pyqscript'\n A str specifying either 'datastore' or 'pyqscript' to grant the\n read privilege. 'pyqscript' requires Embedded Python.\n user : str or None (default)\n The user to grant read privilege of the named Python script or datastore\n to. Treated as case-sensitive if wrapped in double quotes. Treated as\n case-insensitive otherwise. If None, grant read privilege to public.\n \n group_apply(data, index, func, func_owner=None, parallel=None, orderby=None, graphics=False, **kwargs)\n Partitions an in-database data set by the column(s) specified in ``index``\n and executes a python function on those partitions within Python processes\n running inside Oracle Database server.\n \n Parameters\n ----------\n data : oml.DataFrame\n The OML DataFrame that represents the in-database data that ``func`` is\n applied on.\n index : OML data object\n The columns to partition the ``data`` before sending it to ``func``.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n parallel : bool or int or None (default)\n A preferred degree of parallelism to use in the embedded Python job;\n either a positive integer greater than or equal to 1\n for a specific degree of parallelism,\n a value of 'None', 'False' or '0' for no parallelism,\n a value of 'True' for the ``data`` default parallelism.\n Cannot exceed the degree of parallelism limit controlled by \n service level in ADW.\n orderby : oml.DataFrame, oml.Float, or oml.String\n An optional argument used to specify the ordering of group partitions.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : dict \n If no image is rendered in the script, returns a dict of Python objects\n returned by the function. Otherwise, returns a dict of \n oml.embed.data_image._DataImage objects. See :ref:`more-output`.\n \n hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, **kwargs)\n Plots a histogram.\n \n Computes and draws a histogram for every data set column contained in ``x``.\n \n Parameters\n ----------\n x : oml.Float\n bins : int, strictly monotonic increasing sequence, 'auto', 'doane', 'fd', 'rice', 'scott', 'sqrt', or 'sturges', optional\n * If an integer, denotes the number of equal width bins to generate.\n * If a sequence, denotes bin edges and overrides the values of ``range``.\n * If a string, denotes the estimator to use calculate the optimal number\n of bins. 'auto' is the maximum of the 'fd' and 'sturges' estimators.\n * Default is taken from the matplotlib rcParam ``hist.bins``.\n weights : oml.Float\n Must come from the same table as ``x``.\n cumulative : int, float, or boolean, False (Default)\n If greater than zero, then a histogram is computed where each bin gives\n the counts in that bin plus all bins for smaller values. If ``density``\n is also True, then the histogram is normalized so the last bin equals 1.\n If less than zero, the direction of accumulation is reversed. In this\n case, if ``density`` is True, then the histogram is normalized so that the\n first bin equals 1. \n rwidth : int, float, or None (default)\n Ratio of the width of the bars to the bin widths. Values less than 0\n is treated as 0. Values more than 1 is treated as 1. If None,\n defaults to 1.\n color : str that indicates a color spec or None (default)\n If None, use the standard line color sequence. \n label : str or None (default) \n The label that is applied to the first patch of the histogram.\n \n Notes\n -----\n For information on the other parameters, see documentation for :py:func:`matplotlib.pyplot.hist`.\n \n Returns\n -------\n n : :py:class:`numpy.ndarray`\n The values of the histogram bins. \n bins : :py:class:`numpy.ndarray`\n The edges of the bins. An array of length #bins + 1.\n patches : list of :py:class:`matplotlib.patches.Rectangle`\n Individual patches used to create the histogram.\n \n index_apply(times, func, func_owner=None, parallel=None, graphics=False, **kwargs)\n Executes a python function multiple times inside Oracle Database server.\n \n Parameters\n ----------\n times : int\n The number of times to execute the function.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n parallel : bool or int or None (default)\n A preferred degree of parallelism to use in the embedded Python job;\n either a positive integer greater than or equal to 1\n for a specific degree of parallelism,\n a value of 'None', 'False' or '0' for no parallelism,\n a value of 'True' for the ``data`` default parallelism.\n Cannot exceed the degree of parallelism limit controlled by\n service level in ADW.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : list\n If no image is rendered in the script, returns a list of Python objects\n returned by the function. Otherwise, returns a list of \n oml.embed.data_image._DataImage objects. See :ref:`more-output`.\n \n isconnected(check_automl=False)\n Indicates whether an active Oracle Database connection exists.\n \n Parameters\n ----------\n check_automl: bool, False (default)\n Indicates whether to check the connection is automl-enabled.\n \n Returns\n -------\n connected : bool\n \n push(x, oranumber=True, dbtypes=None)\n Pushes data into Oracle Database.\n \n Creates an internal table in Oracle Database and inserts the data\n into the table. The table exists as long as an OML object (either\n in the Python client or saved in the datastore) references the table.\n \n Parameters\n ----------\n x : pandas.DataFrame or a list of tuples of equal size\n If ``x`` is a list of tuples of equal size, each tuple represents\n a row in the table. The column names are set to COL1, COL2, ... and so on.\n oranumber : bool\n If True (default), use SQL NUMBER for numeric columns. Otherwise\n use BINARY_DOUBLE. Ignored if ``append`` is True.\n dbtypes : dict or list of str\n The SQL data types to use in the table.\n \n Notes\n -----\n * When creating a new table, for columns whose SQL types are not specified in\n ``dbtypes``, NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. Users should set\n ``oranumber`` to False when the data contains NaN values. For string columns,\n the default type is VARCHAR2(4000), and for bytes columns, the default type\n is BLOB.\n * When ``x`` is specified with an empty pandas.DataFrame, OML creates an\n empty table. NUMBER is used for numeric columns when ``oranumber`` is True\n and BINARY_DOUBLE is used when ``oranumber`` is False. VARCHAR2(4000) is\n used for columns of object dtype in the pandas.DataFrame.\n * OML does not support columns containing values of multiple data types,\n data conversion is needed or a TypeError may be raised.\n * OML determines default column types by looking at 20 random rows sampled\n from the table. For tables with less than 20 rows, all rows are used\n in column type determination. NaN values are considered as float type.\n If a column has all Nones, or has inconsistent data types that are not\n None in the sampled rows, a default column type cannot be determined,\n and a ValueError is raised unless a SQL type for the column is specified\n in ``dbtypes``.\n \n Returns\n -------\n temp_table : oml.DataFrame\n \n revoke(name, typ='datastore', user=None)\n Revokes read privilege for a Python script or datastore.\n Requires the user to have the `PYQADMIN` Oracle Database role.\n \n Parameters\n ----------\n name : str\n The name of Python script in the Python script repository or the name of\n a datastore. The current user must be the owner of the Python script or\n datastore.\n typ : 'datastore' (default) or 'pyqscript'\n A str specifying either 'datastore' or 'pyqscript' to revoke the\n read privilege. 'pyqscript' requires Embedded Python.\n user : str or None (default)\n The user to revoke read privilege of the named Python script or datastore\n from. Treated as case-sensitive if wrapped in double quotes. Treated as\n case-insensitive otherwise. If None, revoke read privilege from public.\n \n row_apply(data, func, func_owner=None, rows=1, parallel=None, graphics=False, **kwargs)\n Partitions an in-database data set into row chunks and executes a python\n function on the data pulled from those chunks within Python processes\n running inside Oracle Database server.\n \n Parameters\n ----------\n data : oml.DataFrame\n The OML DataFrame that represents the in-database data that ``func``\n is applied on.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n rows : int, 1 (default)\n The maximum number of rows in each chunk.\n parallel : bool or int or None (default)\n A preferred degree of parallelism to use in the embedded Python job;\n either a positive integer greater than or equal to 1\n for a specific degree of parallelism,\n a value of 'None', 'False' or '0' for no parallelism,\n a value of 'True' for the ``data`` default parallelism.\n Cannot exceed the degree of parallelism limit controlled by \n service level in ADW.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : pandas.DataFrame or a list of oml.embed.data_image._DataImage\n If no image is rendered in the script, returns a :py:class:`pandas.DataFrame`.\n Otherwise, returns a list of oml.embed.data_image._DataImage objects.\n See :ref:`more-output`.\n \n sync(schema=None, regex_match=False, **kwargs)\n Creates a DataFrame proxy object in Python that represents an Oracle\n Database data set.\n \n The data set can be one of the following: a database table, view, or query.\n \n Parameters\n ----------\n schema : str or None (default)\n The name of the schema where the database object exists;\n if None, then the current schema is used.\n regex_match : bool, False (default)\n Synchronizes tables or views that match a regular expression.\n Ignored if ``query`` is used.\n table, view, query : str or None (default)\n The name of a table, of a view, or of an Oracle SQL query to select\n from the database. When ``regex_match`` is True, this specifies the\n name pattern. Exactly one of these parameters must be a str and the\n other two must be None.\n \n Notes\n -----\n When ``regex_match`` is True, synchronizes the matched tables or views\n to a dict with the table or view name as the key.\n \n Returns\n -------\n data_set : oml.DataFrame, or if ``regex_match`` is used, returns\n a dict of oml.DataFrame\n \n table_apply(data, func, func_owner=None, graphics=False, **kwargs)\n Executes a Python function with data pulled from Oracle Database.\n \n Parameters\n ----------\n data : oml.DataFrame\n The oml.DataFrame that represents the data ``func`` is applied on.\n func : function, str or :py:func:`oml.script.Callable `\n ``func`` can be one of the following:\n \n * A Python function.\n * Name of a registered script that defines a Python function.\n * A string that if evaluated, defines a Python function.\n * A callable object returned from ``script_load`` function.\n func_owner : str or None (default)\n An optional value specifying the owner of the registered script\n when argument ``func`` is set to a registered script name.\n graphics : bool, False (default)\n If True, images rendered from extant :py:class:`matplotlib.figure.Figure`\n objects are included in the result.\n **kwargs :\n Contains any combinaton of the following:\n \n * :ref:`special-control`\n * additional arguments to ``func``.\n \n Returns\n -------\n result : Python object or oml.embed.data_image._DataImage\n If no image is rendered in the script, returns whatever Python object returned\n by the function. Otherwise, returns an oml.embed.data_image._DataImage object.\n See :ref:`more-output`.\n\nDATA\n __all__ = ['connect', 'disconnect', 'isconnected', 'check_embed', 'cur...\n __build_serial__ = '1.0_05122020_1855'\n\nVERSION\n 1.0\n\nFILE\n /usr/local/lib/python3.8/site-packages/oml/__init__.py\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_1822426800","id":"20210302-001843_68125899","dateCreated":"2021-02-05T19:55:02+0000","dateStarted":"2021-03-02T18:53:20+0000","dateFinished":"2021-03-02T18:53:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"title":"Try it yourself","text":"%md\n\nView the ***oml.push*** help file.","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

View the oml.push help file.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_59725278","id":"20210302-001843_1012546491","dateCreated":"2021-01-17T04:53:18+0000","dateStarted":"2021-03-02T18:53:20+0000","dateFinished":"2021-03-02T18:53:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%python\n\n# Insert code here\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644323263_-2056094775","id":"20210302-001843_1955821969","dateCreated":"2021-02-05T20:13:12+0000","dateStarted":"2021-03-02T18:53:21+0000","dateFinished":"2021-03-02T18:53:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"title":"Notes","text":"%md\n\n* ***z*** is a reserved zeppelin-context variable and must not be used as a variable in **%python** paragraphs in Oracle Machine Learning Notebooks. In OML notebooks we use the show method ***z.show*** to display Python objects and proxy object content.\n\n* The Oracle Database connectivity package **cx_Oracle** is used to support database access and users can get access to the underlying connection to use **cx_Oracle** directly via the function ***oml.cursor***. See for general **cx_Oracle** documentation. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
    \n
  • z is a reserved zeppelin-context variable and must not be used as a variable in %python paragraphs in Oracle Machine Learning Notebooks. In OML notebooks we use the show method z.show to display Python objects and proxy object content.

    \n
  • \n
  • The Oracle Database connectivity package cx_Oracle is used to support database access and users can get access to the underlying connection to use cx_Oracle directly via the function oml.cursor. See https://cx-oracle.readthedocs.io/en/latest for general cx_Oracle documentation.

    \n
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_1339663927","id":"20210302-001843_2010757642","dateCreated":"2021-01-08T17:59:31+0000","dateStarted":"2021-03-02T18:53:22+0000","dateFinished":"2021-03-02T18:53:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"text":"%md\n\n## End of Script\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614644323263_900823908","id":"20210302-001843_252199398","dateCreated":"2021-01-08T19:58:28+0000","dateStarted":"2021-03-02T18:53:22+0000","dateFinished":"2021-03-02T18:53:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%md\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:53:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644323263_658848773","id":"20210302-001843_1658991711","dateCreated":"2021-02-05T20:35:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"}],"name":"Lab 1: Getting Started with OML4Py","id":"40617","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 2 OML4Py Transparency Layer.json b/machine-learning/labs/oml4py-live-labs/Lab 2 OML4Py Transparency Layer.json deleted file mode 100644 index 5a4cc9d3..00000000 --- a/machine-learning/labs/oml4py-live-labs/Lab 2 OML4Py Transparency Layer.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities. \n\nWith the transparency layer classes, you can convert selected Python objects to Oracle Autonomous Database (ADB) objects and also call a range of familiar Python functions that are overloaded to run the corresponding SQL on tables in the database. \n\nThe OML4Py transparency layer supports functions that interact with database data and enables:\n\n* Loading Python pandas.DataFrame objects to Oracle Database to create database tables\n* Provides transparent access and manipulation of database tables and views through the use of proxy objects\n* Overloads select Python functions, translating their functionality into SQL\n* Uses familiar Python syntax to manipulate database data\n\nNote that using the transparency layer, computations and processing occur in-database, leverage Oracle Database as a high performance compute engine. Whenever possible or appropriate, results are also provided as proxy objects. This eliminates data movement from the database to the Python engine, and is especially valuable for large results.\n\nIn this lab, we highlight features of the transparency layer involving data selection and manipulation.\n\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER","dateUpdated":"2021-02-24T21:32:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

With the transparency layer classes, you can convert selected Python objects to Oracle Autonomous Database (ADB) objects and also call a range of familiar Python functions that are overloaded to run the corresponding SQL on tables in the database.

\n

The OML4Py transparency layer supports functions that interact with database data and enables:

\n
    \n
  • Loading Python pandas.DataFrame objects to Oracle Database to create database tables
  • \n
  • Provides transparent access and manipulation of database tables and views through the use of proxy objects
  • \n
  • Overloads select Python functions, translating their functionality into SQL
  • \n
  • Uses familiar Python syntax to manipulate database data
  • \n
\n

Note that using the transparency layer, computations and processing occur in-database, leverage Oracle Database as a high performance compute engine. Whenever possible or appropriate, results are also provided as proxy objects. This eliminates data movement from the database to the Python engine, and is especially valuable for large results.

\n

In this lab, we highlight features of the transparency layer involving data selection and manipulation.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-424734327","id":"20210224-211339_645096244","dateCreated":"2021-01-08T21:55:05+0000","dateStarted":"2021-02-24T21:32:51+0000","dateFinished":"2021-02-24T21:32:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Step1: Import libraries and create OML DataFrame proxy object","text":"%md\r\n\r\nTo use OML4Py, you must first import the **oml** package. We also import the Pandas package to support OML4Py data manipulation and analysis, data exploration and preparation. ","user":"OMLUSER","dateUpdated":"2021-02-24T21:32:54+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To use OML4Py, you must first import the oml package. We also import the Pandas package to support OML4Py data manipulation and analysis, data exploration and preparation.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-182313614","id":"20210224-211339_578933342","dateCreated":"2021-01-08T19:59:33+0000","dateStarted":"2021-02-24T21:32:54+0000","dateFinished":"2021-02-24T21:32:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%python\n\nimport pandas as pd\nimport oml\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:32:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219690_1489255961","id":"20210224-211339_826946900","dateCreated":"2021-01-08T20:27:43+0000","dateStarted":"2021-02-24T21:32:55+0000","dateFinished":"2021-02-24T21:33:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"title":"","text":"%md\n\n.\nThe transparency layer includes the ability to create temporary and permanent Oracle Database objects represented by proxy objects in the Python session. \n\nIn this first example, we load the iris data and combine target and predictors into a single DataFrame, which matches the form the data would have as a database table. This Pandas DataFrame can then be loaded into the database using the ***oml.push*** function, which creates a temporary table and returns a proxy object that we assign to *IRIS_TMP*. \n\nSuch temporary tables will be automatically deleted when the database connection is terminated unless saved in a datastore (the topic of 'datastore' is covered in another lab).\n\nIn OML notebooks we use the zeppelin-context ***z.show*** method to display Python objects and proxy object content. Display the first few rows of *IRIS_TMP* using ***z.show*** for displaying DataFrame results in the Zeppelin viewer. \n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
The transparency layer includes the ability to create temporary and permanent Oracle Database objects represented by proxy objects in the Python session.

\n

In this first example, we load the iris data and combine target and predictors into a single DataFrame, which matches the form the data would have as a database table. This Pandas DataFrame can then be loaded into the database using the oml.push function, which creates a temporary table and returns a proxy object that we assign to IRIS_TMP.

\n

Such temporary tables will be automatically deleted when the database connection is terminated unless saved in a datastore (the topic of 'datastore' is covered in another lab).

\n

In OML notebooks we use the zeppelin-context z.show method to display Python objects and proxy object content. Display the first few rows of IRIS_TMP using z.show for displaying DataFrame results in the Zeppelin viewer.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1368915590","id":"20210224-211339_1644305005","dateCreated":"2021-01-08T20:34:04+0000","dateStarted":"2021-02-24T21:33:04+0000","dateFinished":"2021-02-24T21:33:04+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%python\n\nfrom sklearn.datasets import load_iris\nimport pandas as pd\n\niris = load_iris()\n\nx = pd.DataFrame(iris.data, columns = ['SEPAL_LENGTH','SEPAL_WIDTH', 'PETAL_LENGTH','PETAL_WIDTH'])\ny = pd.DataFrame(list(map(lambda x: {0: 'setosa', 1: 'versicolor', 2:'virginica'}[x], iris.target)), columns = ['SPECIES'])\n \niris_df = pd.concat([x, y], axis=1)\nIRIS_TMP = oml.push(iris_df)\n\nz.show(IRIS_TMP.head())\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:04+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":234,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"SEPAL_LENGTH":"string","SEPAL_WIDTH":"string","PETAL_LENGTH":"string","PETAL_WIDTH":"string","SPECIES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"SEPAL_LENGTH\tSEPAL_WIDTH\tPETAL_LENGTH\tPETAL_WIDTH\tSPECIES\n4.6\t3.6\t1\t0.2\tsetosa\n5.1\t2.5\t3\t1.1\tversicolor\n6.0\t2.2\t4\t1.0\tversicolor\n5.8\t2.6\t4\t1.2\tversicolor\n5.5\t2.3\t4\t1.3\tversicolor\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1343707639","id":"20210224-211339_1607839706","dateCreated":"2021-01-08T20:34:41+0000","dateStarted":"2021-02-24T21:33:05+0000","dateFinished":"2021-02-24T21:33:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%md\n\n.\nList the available Python transparency layer functions.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the available Python transparency layer functions.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1851122259","id":"20210224-211339_1944753500","dateCreated":"2021-01-10T17:39:56+0000","dateStarted":"2021-02-24T21:33:06+0000","dateFinished":"2021-02-24T21:33:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%python\n\nres = [x for x in IRIS_TMP.__dir__() if not x.startswith('_')]\nres.sort()\nres","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['KFold', 'append', 'columns', 'concat', 'corr', 'count', 'create_view', 'crosstab', 'cumsum', 'describe', 'drop', 'drop_duplicates', 'dropna', 'dtypes', 'head', 'kurtosis', 'materialize', 'max', 'mean', 'median', 'merge', 'min', 'nunique', 'pivot_table', 'pull', 'rename', 'replace', 'round', 'sample', 'select_types', 'shape', 'skew', 'sort_values', 'split', 'std', 'sum', 't_dot', 'tail']\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1182348010","id":"20210224-211339_325775072","dateCreated":"2021-01-10T17:36:37+0000","dateStarted":"2021-02-24T21:33:07+0000","dateFinished":"2021-02-24T21:33:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"title":"Step 2: Select table columns","text":"%md\n\nSelect the first three records for columns SEPAL_LENGTH and PETAL_LENGTH from the *IRIS_TMP* table.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Select the first three records for columns SEPAL_LENGTH and PETAL_LENGTH from the IRIS_TMP table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1532937570","id":"20210224-211339_1632194450","dateCreated":"2021-01-08T20:37:37+0000","dateStarted":"2021-02-24T21:33:07+0000","dateFinished":"2021-02-24T21:33:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%python\n\nIRIS_projected1 = IRIS_TMP[:, [\"SEPAL_LENGTH\", \"PETAL_LENGTH\"]]\nIRIS_projected1.head(3)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH PETAL_LENGTH\n0 4.6 1\n1 5.1 3\n2 6.0 4\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_8824237","id":"20210224-211339_319850270","dateCreated":"2021-01-08T20:40:41+0000","dateStarted":"2021-02-24T21:33:08+0000","dateFinished":"2021-02-24T21:33:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%md\n\n.\nSelect the first four columns in *IRIS_TMP* using an index range. Note that Python uses 0 as a starting element for indexing. The starting element is the first column, SEPAL_LENGTH. The second element is the second column, SEPAL_WIDTH, and so on. ","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Select the first four columns in IRIS_TMP using an index range. Note that Python uses 0 as a starting element for indexing. The starting element is the first column, SEPAL_LENGTH. The second element is the second column, SEPAL_WIDTH, and so on.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1316552588","id":"20210224-211339_880259157","dateCreated":"2021-01-08T20:46:49+0000","dateStarted":"2021-02-24T21:33:09+0000","dateFinished":"2021-02-24T21:33:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"text":"%python\n\nIRIS_projected2 = IRIS_TMP[:, 0:4]\nIRIS_projected2.head(3)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH\n0 4.6 3.6 1 0.2\n1 5.1 2.5 3 1.1\n2 6.0 2.2 4 1.0\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-832812735","id":"20210224-211339_1882080725","dateCreated":"2021-01-08T20:45:59+0000","dateStarted":"2021-02-24T21:33:09+0000","dateFinished":"2021-02-24T21:33:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%md\n\n.\nSelect columns by data type, specifying the data type as ***oml.string***, which returns the SPECIES column.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Select columns by data type, specifying the data type as oml.string, which returns the SPECIES column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-2061688965","id":"20210224-211339_1538302365","dateCreated":"2021-01-08T20:55:33+0000","dateStarted":"2021-02-24T21:33:10+0000","dateFinished":"2021-02-24T21:33:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%python\n\nIRIS_projected3 = IRIS_TMP.select_types(include=[oml.String])\nIRIS_projected3.head(3)","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SPECIES\n0 setosa\n1 versicolor\n2 versicolor\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1030682520","id":"20210224-211339_1276110210","dateCreated":"2021-01-08T20:50:04+0000","dateStarted":"2021-02-24T21:33:11+0000","dateFinished":"2021-02-24T21:33:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"title":"Step 3: Select table rows","text":"%md\n\nPerform a simple row selection by selecting columns SEPAL_LENGTH and PETAL_LENGTH where PETAL_LENGTH is less than 1.5. \n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Perform a simple row selection by selecting columns SEPAL_LENGTH and PETAL_LENGTH where PETAL_LENGTH is less than 1.5.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_87123723","id":"20210224-211339_1165164878","dateCreated":"2021-01-08T20:50:27+0000","dateStarted":"2021-02-24T21:33:12+0000","dateFinished":"2021-02-24T21:33:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"text":"%python\n\nIRIS_filtered1 = IRIS_TMP[IRIS_TMP[\"PETAL_LENGTH\"] < 1.5, [\"SEPAL_LENGTH\", \"PETAL_LENGTH\"]]\n\nprint(\"Length: \", len(IRIS_filtered1))\nIRIS_filtered1.head(3)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Length: 24\n SEPAL_LENGTH PETAL_LENGTH\n0 4.6 1.0\n1 4.3 1.1\n2 5.8 1.2\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-380948092","id":"20210224-211339_1198650584","dateCreated":"2021-01-08T21:03:51+0000","dateStarted":"2021-02-24T21:33:12+0000","dateFinished":"2021-02-24T21:33:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%md\n\n.\nNow try a compound row selection using the **OR** filtering condition, denoted by the **|** symbol. Select all rows in which PETAL_LENGTH is less than 1.5 OR SEPAL_LENGTH is equal to 5.8.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Now try a compound row selection using the OR filtering condition, denoted by the | symbol. Select all rows in which PETAL_LENGTH is less than 1.5 OR SEPAL_LENGTH is equal to 5.8.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-395992142","id":"20210224-211339_429070818","dateCreated":"2021-01-08T21:04:11+0000","dateStarted":"2021-02-24T21:33:13+0000","dateFinished":"2021-02-24T21:33:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%python\n\nIRIS_filtered2 = IRIS_TMP[(IRIS_TMP[\"PETAL_LENGTH\"] < 1.5) | (IRIS_TMP[\"SEPAL_LENGTH\"] == 5.8), :]\nprint(\"Length: \", len(IRIS_filtered2))\nIRIS_filtered2.head(3)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Length: 30\n SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH SPECIES\n0 4.6 3.6 1.0 0.2 setosa\n1 5.8 2.6 4.0 1.2 versicolor\n2 4.3 3.0 1.1 0.1 setosa\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_678113950","id":"20210224-211339_713284775","dateCreated":"2021-01-08T21:06:23+0000","dateStarted":"2021-02-24T21:33:14+0000","dateFinished":"2021-02-24T21:33:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"text":"%md\n\n.\nTry a compound row selection using **AND**, denoted by the **&** symbol. Select all rows in which PETAL_LENGTH is less than 1.5 AND SEPAL_LENGTH is greater than 5.0. \n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Try a compound row selection using AND, denoted by the & symbol. Select all rows in which PETAL_LENGTH is less than 1.5 AND SEPAL_LENGTH is greater than 5.0.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1999945907","id":"20210224-211339_2007482824","dateCreated":"2021-01-08T21:07:39+0000","dateStarted":"2021-02-24T21:33:14+0000","dateFinished":"2021-02-24T21:33:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%python\n\nIRIS_filtered3 = IRIS_TMP[(IRIS_TMP[\"PETAL_LENGTH\"] < 1.5) & \n (IRIS_TMP[\"SEPAL_LENGTH\"] > 5.0), :]\nprint(\"Length: \", len(IRIS_filtered3))\nIRIS_filtered3.head(4)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Length: 7\n SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH SPECIES\n0 5.8 4.0 1.2 0.2 setosa\n1 5.5 3.5 1.3 0.2 setosa\n2 5.4 3.9 1.3 0.4 setosa\n3 5.2 3.4 1.4 0.2 setosa\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_576586137","id":"20210224-211339_1060650192","dateCreated":"2021-01-08T21:09:05+0000","dateStarted":"2021-02-24T21:33:15+0000","dateFinished":"2021-02-24T21:33:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"title":"Step 4: Use Pandas DataFrame objects","text":"%md\n\nYou can join data from oml.DataFrame objects that represent database tables by using the ***append***, ***concat***, and ***merge*** methods.\n\n* The ***append*** method appends or adds the other OML data object of the same class to this data object.\n* The ***concat*** method combines the current OML data object with the other data objects column-wise.\n* The ***merge*** method joins data sets.\n\nThese steps show how to use these methods.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

You can join data from oml.DataFrame objects that represent database tables by using the append, concat, and merge methods.

\n
    \n
  • The append method appends or adds the other OML data object of the same class to this data object.
  • \n
  • The concat method combines the current OML data object with the other data objects column-wise.
  • \n
  • The merge method joins data sets.
  • \n
\n

These steps show how to use these methods.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_2130775286","id":"20210224-211339_1046839004","dateCreated":"2021-01-08T21:09:55+0000","dateStarted":"2021-02-24T21:33:16+0000","dateFinished":"2021-02-24T21:33:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"title":"Use the append function","text":"%md\n\nThese steps show how to create a temporary table from a Pandas DataFrame and use the ***append*** function. The append argument is a boolean that specifies whether to append the x data to an existing table.\n\nRun the following script to create a temporary table *MY_DF* from a Pandas Dataframe and to print the data type for each column. In addition, this script prints the id column values followed by the num column values by using the append function.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

These steps show how to create a temporary table from a Pandas DataFrame and use the append function. The append argument is a boolean that specifies whether to append the x data to an existing table.

\n

Run the following script to create a temporary table MY_DF from a Pandas Dataframe and to print the data type for each column. In addition, this script prints the id column values followed by the num column values by using the append function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1990571722","id":"20210224-211339_179825491","dateCreated":"2021-01-08T21:13:15+0000","dateStarted":"2021-02-24T21:33:17+0000","dateFinished":"2021-02-24T21:33:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%python\n\nmy_df = pd.DataFrame({\"id\" : [1, 2, 3, 4, 5],\n \"val\" : [\"a\", \"b\", \"c\", \"d\", \"e\"],\n \"ch\" : [\"p\", \"q\", \"r\", \"a\", \"b\"],\n \"num\" : [4, 3, 6.7, 7.2, 5]})\n\nMY_DF = oml.push(my_df)\n\nprint (my_df.dtypes)\n\nnum1 = MY_DF['id']\nnum2 = MY_DF['num']\nnum1.append(num2)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"id int64\nval object\nch object\nnum float64\ndtype: object\n[1, 2, 3, 4, 5, 4, 3, 6.7, 7.2, 5]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1316969416","id":"20210224-211339_1138213452","dateCreated":"2021-01-08T23:19:22+0000","dateStarted":"2021-02-24T21:33:17+0000","dateFinished":"2021-02-24T21:33:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%md\n\n.\nUse the ***append*** function to append an oml.Float series object to another, then append an oml.DataFrame object to another.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the append function to append an oml.Float series object to another, then append an oml.DataFrame object to another.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1145882279","id":"20210224-211339_1031256154","dateCreated":"2021-01-08T23:20:56+0000","dateStarted":"2021-02-24T21:33:18+0000","dateFinished":"2021-02-24T21:33:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"text":"%python\n\nx = MY_DF[['id', 'val']] \ny = MY_DF[['num', 'ch']]\n\nprint(\"Types x:\\n\", x.dtypes)\nprint(\"Types y:\\n\", y.dtypes)\n\nx.append(y)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Types x:\n id \nval \ndtype: object\nTypes y:\n num \nch \ndtype: object\n id val\n0 1.0 a\n1 2.0 b\n2 3.0 c\n3 4.0 d\n4 5.0 e\n5 4.0 p\n6 3.0 q\n7 6.7 r\n8 7.2 a\n9 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1051807630","id":"20210224-211339_678535862","dateCreated":"2021-01-08T23:22:14+0000","dateStarted":"2021-02-24T21:33:19+0000","dateFinished":"2021-02-24T21:33:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"title":"Combine columns using concat","text":"%md\n\nUse the ***concat*** method to combine columns from one OML DataFrame proxy object with those of another. The ***auto_name*** argument of the concat method controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. You can also explicitly rename columns by passing in a dictionary that maps strings to objects, as discussed below.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the concat method to combine columns from one OML DataFrame proxy object with those of another. The auto_name argument of the concat method controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. You can also explicitly rename columns by passing in a dictionary that maps strings to objects, as discussed below.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-2106734090","id":"20210224-211339_489240984","dateCreated":"2021-01-08T23:22:40+0000","dateStarted":"2021-02-24T21:33:19+0000","dateFinished":"2021-02-24T21:33:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"text":"%md\n\n.\nUse the ***concat*** function to create two oml.DataFrame objects and combine the objects by column. The command automatically prints the result. When there is a single result to show, the print command is not needed.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the concat function to create two oml.DataFrame objects and combine the objects by column. The command automatically prints the result. When there is a single result to show, the print command is not needed.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1001057333","id":"20210224-211339_1620135379","dateCreated":"2021-01-08T23:25:02+0000","dateStarted":"2021-02-24T21:33:20+0000","dateFinished":"2021-02-24T21:33:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"text":"%python\n\nfrom collections import OrderedDict\n\nx = MY_DF[['id', 'val']]\ny = MY_DF[['num', 'ch']]\nx.concat(y)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val num ch\n0 1 a 4.0 p\n1 2 b 3.0 q\n2 3 c 6.7 r\n3 4 d 7.2 a\n4 5 e 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_442073050","id":"20210224-211339_1613008115","dateCreated":"2021-01-08T23:26:20+0000","dateStarted":"2021-02-24T21:33:21+0000","dateFinished":"2021-02-24T21:33:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%md\n\n.\nAn ***oml.Float*** is a numeric series data class that represents a single column of NUMBER, BINARY_DOUBLE, or BINARY_FLOAT database data types. Let's create an oml.Float object with the rounded exponential of two times the values in the num column of the *oml.frame* object, then concatenate it with the *oml.DataFrame* object *y* using a new column name.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
An oml.Float is a numeric series data class that represents a single column of NUMBER, BINARY_DOUBLE, or BINARY_FLOAT database data types. Let's create an oml.Float object with the rounded exponential of two times the values in the num column of the oml.frame object, then concatenate it with the oml.DataFrame object y using a new column name.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1456750099","id":"20210224-211339_1172694611","dateCreated":"2021-01-08T23:26:18+0000","dateStarted":"2021-02-24T21:33:21+0000","dateFinished":"2021-02-24T21:33:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"text":"%python\n\nw = (MY_DF['num']*2).exp().round(decimals=2)\ny.concat({'round(exp(2*num))':w})\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" num ch round(exp(2*num))\n0 4.0 p 2980.96\n1 3.0 q 403.43\n2 6.7 r 660003.22\n3 7.2 a 1794074.77\n4 5.0 b 22026.47\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-504783728","id":"20210224-211339_299168398","dateCreated":"2021-01-08T23:32:21+0000","dateStarted":"2021-02-24T21:33:22+0000","dateFinished":"2021-02-24T21:33:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%md\n\n.\nConcatenate object *x* with multiple objects using automatic name conflict resolution. In this example, ***auto_name=True*** controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. In this example, the *id** and **num* columns are duplicated.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Concatenate object x with multiple objects using automatic name conflict resolution. In this example, auto_name=True controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. In this example, the id and num columns are duplicated.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-329681966","id":"20210224-211339_2067909298","dateCreated":"2021-01-08T23:33:52+0000","dateStarted":"2021-02-24T21:33:23+0000","dateFinished":"2021-02-24T21:33:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%python\n\niris_df2 = MY_DF[:,'id']\nx.concat([iris_df2, w, y], auto_name=True)\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val id3 num num5 ch\n0 1 a 1 2980.96 4.0 p\n1 2 b 2 403.43 3.0 q\n2 3 c 3 660003.22 6.7 r\n3 4 d 4 1794074.77 7.2 a\n4 5 e 5 22026.47 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1119199192","id":"20210224-211339_1069974077","dateCreated":"2021-01-08T23:38:43+0000","dateStarted":"2021-02-24T21:33:23+0000","dateFinished":"2021-02-24T21:33:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"text":"%md\n\n.\nNow concatenate multiple OML data objects with customized column renaming. We prepend the word **New** to the duplicate columns and use ***OrderedDict*** to preserve the order in which the objects are added.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Now concatenate multiple OML data objects with customized column renaming. We prepend the word New to the duplicate columns and use OrderedDict to preserve the order in which the objects are added.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1469298965","id":"20210224-211339_1434135784","dateCreated":"2021-01-08T23:39:03+0000","dateStarted":"2021-02-24T21:33:24+0000","dateFinished":"2021-02-24T21:33:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:71"},{"text":"%python\n\nx.concat(OrderedDict([('ID',iris_df2), ('round(exp(2*num))',w), ('New_',y)]))\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val ID round(exp(2*num)) New_num New_ch\n0 1 a 1 2980.96 4.0 p\n1 2 b 2 403.43 3.0 q\n2 3 c 3 660003.22 6.7 r\n3 4 d 4 1794074.77 7.2 a\n4 5 e 5 22026.47 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-7708379","id":"20210224-211339_1661854795","dateCreated":"2021-01-08T23:52:09+0000","dateStarted":"2021-02-24T21:33:25+0000","dateFinished":"2021-02-24T21:33:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:72"},{"title":"Use merge ","text":"%md\n\nUse the ***merge*** function to peform a cross join and a left outer join from two objects. This example first performs a cross join on the oml.DataFrame objects *x* and *y*, which creates the oml.DataFrame object *xy*.","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the merge function to peform a cross join and a left outer join from two objects. This example first performs a cross join on the oml.DataFrame objects x and y, which creates the oml.DataFrame object xy.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_2138982396","id":"20210224-211339_384607938","dateCreated":"2021-01-08T23:52:20+0000","dateStarted":"2021-02-24T21:33:26+0000","dateFinished":"2021-02-24T21:33:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:73"},{"text":"%python\n\nx = MY_DF[['id', 'val']]\ny = MY_DF[['num', 'ch']]\n\nxy = x.merge(y)\nxy\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id_l val_l num_r ch_r\n0 1 a 4.0 p\n1 2 b 4.0 p\n2 3 c 4.0 p\n3 4 d 4.0 p\n4 5 e 4.0 p\n5 1 a 3.0 q\n6 2 b 3.0 q\n7 3 c 3.0 q\n8 4 d 3.0 q\n9 5 e 3.0 q\n10 1 a 6.7 r\n11 2 b 6.7 r\n12 3 c 6.7 r\n13 4 d 6.7 r\n14 5 e 6.7 r\n15 1 a 7.2 a\n16 2 b 7.2 a\n17 3 c 7.2 a\n18 4 d 7.2 a\n19 5 e 7.2 a\n20 1 a 5.0 b\n21 2 b 5.0 b\n22 3 c 5.0 b\n23 4 d 5.0 b\n24 5 e 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_2131663855","id":"20210224-211339_489687368","dateCreated":"2021-01-09T00:07:04+0000","dateStarted":"2021-02-24T21:33:26+0000","dateFinished":"2021-02-24T21:33:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:74"},{"text":"%md\n\n.\nPerform a left outer join on the first four rows of x with the oml.DataFrame object other on the shared column id and applies the suffixes *.l* and *.r* to column names on the left and right side, respectively.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Perform a left outer join on the first four rows of x with the oml.DataFrame object other on the shared column id and applies the suffixes .l and .r to column names on the left and right side, respectively.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1928986952","id":"20210224-211339_295725674","dateCreated":"2021-01-09T00:08:25+0000","dateStarted":"2021-02-24T21:33:27+0000","dateFinished":"2021-02-24T21:33:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:75"},{"text":"%python\n\nx.head(4).merge(other=MY_DF[['id', 'num']], on=\"id\", how='left', suffixes=['.l','.r'])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val.l num.r\n0 1 a 4.0\n1 2 b 3.0\n2 3 c 6.7\n3 4 d 7.2\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_702930680","id":"20210224-211339_495188905","dateCreated":"2021-01-09T00:14:01+0000","dateStarted":"2021-02-24T21:33:27+0000","dateFinished":"2021-02-24T21:33:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:76"},{"title":"Try it yourself","text":"%md\n\nUsing the merge help file as a guide, perform a merge with a right outer join on the *id* column on the left side object *x* and the num column on the right side object *y*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Using the merge help file as a guide, perform a merge with a right outer join on the id column on the left side object x and the num column on the right side object y.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1248642918","id":"20210224-211339_1856672877","dateCreated":"2021-01-09T01:09:03+0000","dateStarted":"2021-02-24T21:33:28+0000","dateFinished":"2021-02-24T21:33:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:77"},{"text":"%python\n\nhelp(oml.DataFrame.merge)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on cython_function_or_method in module oml.core.frame:\n\nmerge(self, other, on=None, left_on=None, right_on=None, how='left', suffixes=('_l', '_r'), nvl=True)\n Joins data sets.\n \n Parameters\n ----------\n other : an OML data set object\n on : str or list of str, optional\n Column names to join on. Must be found in both ``self`` and ``other``.\n left_on : str or list of str, optional\n Column names of ``self`` to join on.\n right_on : str or list of str, optional\n Column names of ``other`` to join on. If specified, must specify the same\n number of columns as ``left_on``.\n how : 'left' (default), 'right', 'inner', 'full'\n * left : left outer join\n * right : right outer join\n * full : full outer join\n * inner : inner join\n \n If ``on`` and ``left_on`` are both None, then ``how`` is ignored,\n and a cross join is performed.\n suffixes : sequence of length 2\n Suffix to apply to column names on the left and right side,\n respectively.\n nvl : True (default), False, dict \n * True : join condition includes NULL value\n * False : join condition excludes NULL value\n * dict : specifies the values that join columns use in replacement of NULL value with column names as keys\n \n Returns\n -------\n merged : oml.DataFrame\n\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-504628815","id":"20210224-211339_1942862521","dateCreated":"2021-01-09T00:14:12+0000","dateStarted":"2021-02-24T21:33:29+0000","dateFinished":"2021-02-24T21:33:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:78"},{"text":"%python\n\n# Insert code here\n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219690_-1087528263","id":"20210224-211339_1630301584","dateCreated":"2021-01-10T17:43:32+0000","dateStarted":"2021-02-24T21:33:29+0000","dateFinished":"2021-02-24T21:33:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:79"},{"title":"Drop rows and columns","text":"%md\n\nIn preparing data for analysis, a typical step is to transform data by dropping some values. You can filter out data that are not needed by using the ***drop***, ***drop_duplicates***, and ***dropna*** methods. \n\nUse the ***del*** statement to remove an OML DataFrame proxy object and its associated temporary table. Note that ***del*** does not delete a persistent table. Use the ***oml.drop*** function to delete a persistent database table. To work with the ***drop*** method, first create a demo data table MY_DF2. Create a temporary table MY_DF2 from Pandas dataframe.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In preparing data for analysis, a typical step is to transform data by dropping some values. You can filter out data that are not needed by using the drop, drop_duplicates, and dropna methods.

\n

Use the del statement to remove an OML DataFrame proxy object and its associated temporary table. Note that del does not delete a persistent table. Use the oml.drop function to delete a persistent database table. To work with the drop method, first create a demo data table MY_DF2. Create a temporary table MY_DF2 from Pandas dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_231633923","id":"20210224-211339_1668324527","dateCreated":"2021-01-09T00:48:50+0000","dateStarted":"2021-02-24T21:33:30+0000","dateFinished":"2021-02-24T21:33:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:80"},{"text":"%python\n\nmy_df2 = pd.DataFrame({'numeric': [1, 1.4, -4, -4, 5.432, None, None],\n 'string1': [None, None, 'a', 'a', 'a', 'b', None],\n 'string2': ['x', None, 'z', 'z', 'z', 'x', None]})\n\n\nMY_DF2 = oml.push(my_df2, dbtypes = {'numeric': 'BINARY_DOUBLE', \n 'string1':'CHAR(1)', \n 'string2':'CHAR(1)'})\n\nMY_DF2\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 1.400 None None\n1 NaN None None\n2 1.000 None x\n3 NaN b x\n4 -4.000 a z\n5 -4.000 a z\n6 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_164883936","id":"20210224-211339_1505981776","dateCreated":"2021-01-09T19:46:06+0000","dateStarted":"2021-02-24T21:33:31+0000","dateFinished":"2021-02-24T21:33:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:81"},{"text":"%md\n\n.\nDrop rows with missing values.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Drop rows with missing values.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-66032132","id":"20210224-211339_1195709603","dateCreated":"2021-01-09T19:47:32+0000","dateStarted":"2021-02-24T21:33:32+0000","dateFinished":"2021-02-24T21:33:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:82"},{"text":"%python\n\nMY_DF2.dropna(how='any')\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 -4.000 a z\n1 -4.000 a z\n2 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-2140647125","id":"20210224-211339_1166516534","dateCreated":"2021-01-09T19:49:04+0000","dateStarted":"2021-02-24T21:33:32+0000","dateFinished":"2021-02-24T21:33:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:83"},{"text":"%md\n\n.\nDrop rows with missing numeric values.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Drop rows with missing numeric values.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1538696986","id":"20210224-211339_578148557","dateCreated":"2021-01-09T19:49:25+0000","dateStarted":"2021-02-24T21:33:33+0000","dateFinished":"2021-02-24T21:33:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:84"},{"text":"%python\n\nMY_DF2.dropna(how='any', subset=['numeric'])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 1.400 None None\n1 1.000 None x\n2 -4.000 a z\n3 -4.000 a z\n4 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1908070174","id":"20210224-211339_1616789542","dateCreated":"2021-01-09T19:49:59+0000","dateStarted":"2021-02-24T21:33:34+0000","dateFinished":"2021-02-24T21:33:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:85"},{"text":"%md\n\n.\nDrop rows where all columns values are missing.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Drop rows where all columns values are missing.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_429177596","id":"20210224-211339_257007746","dateCreated":"2021-01-09T19:50:17+0000","dateStarted":"2021-02-24T21:33:34+0000","dateFinished":"2021-02-24T21:33:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:86"},{"text":"%python\n\nMY_DF2.dropna(how='all')\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 1.400 None None\n1 1.000 None x\n2 NaN b x\n3 -4.000 a z\n4 -4.000 a z\n5 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1871655490","id":"20210224-211339_2007445071","dateCreated":"2021-01-09T19:51:01+0000","dateStarted":"2021-02-24T21:33:35+0000","dateFinished":"2021-02-24T21:33:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:87"},{"text":"%md\n\n.\nUse the ***drop_duplicates*** function to drop duplicate rows.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the drop_duplicates function to drop duplicate rows.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_577239840","id":"20210224-211339_2073572294","dateCreated":"2021-01-09T19:51:35+0000","dateStarted":"2021-02-24T21:33:36+0000","dateFinished":"2021-02-24T21:33:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:88"},{"text":"%python\n\nMY_DF2.drop_duplicates()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 5.432 a z\n1 1.000 None x\n2 NaN b x\n3 -4.000 a z\n4 1.400 None None\n5 NaN None None\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1281295555","id":"20210224-211339_1767183331","dateCreated":"2021-01-09T19:53:09+0000","dateStarted":"2021-02-24T21:33:36+0000","dateFinished":"2021-02-24T21:33:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:89"},{"text":"%md\n\n.\nThe following command drops the specified column, *string2*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
The following command drops the specified column, string2.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-789251295","id":"20210224-211339_1795353595","dateCreated":"2021-01-09T19:53:25+0000","dateStarted":"2021-02-24T21:33:38+0000","dateFinished":"2021-02-24T21:33:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:90"},{"text":"%python\n\nMY_DF2.drop('string2')\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1\n0 1.400 None\n1 NaN None\n2 1.000 None\n3 NaN b\n4 -4.000 a\n5 -4.000 a\n6 5.432 a\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_52450902","id":"20210224-211339_622425474","dateCreated":"2021-01-09T19:54:20+0000","dateStarted":"2021-02-24T21:33:39+0000","dateFinished":"2021-02-24T21:33:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:91"},{"title":"Step 5: Use the split and KFold functions","text":"%md\n\nThis section demonstrates how to use the ***split*** and ***KFold*** functions using the digits data set after creating an OML DataFrame proxy object for the digits data set.\n\nThe ***KFold*** method splits the series data object randomly into k consecutive folds, or non-overlapping groups, for use with k-fold cross validation. The split method splits the series data object randomly into multiple sets. \n\nThe following tasks are covered in this section\n\n* Split the data into 80% and 20% samples\n* Perform stratification on the target column\n* Verify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split\n* Compute Hash on the target column\n* Verify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column\n* Split the data randomly into 4 consecutive folds using KFold function.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This section demonstrates how to use the split and KFold functions using the digits data set after creating an OML DataFrame proxy object for the digits data set.

\n

The KFold method splits the series data object randomly into k consecutive folds, or non-overlapping groups, for use with k-fold cross validation. The split method splits the series data object randomly into multiple sets.

\n

The following tasks are covered in this section

\n
    \n
  • Split the data into 80% and 20% samples
  • \n
  • Perform stratification on the target column
  • \n
  • Verify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split
  • \n
  • Compute Hash on the target column
  • \n
  • Verify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column
  • \n
  • Split the data randomly into 4 consecutive folds using KFold function.
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1176044339","id":"20210224-211339_530937060","dateCreated":"2021-01-09T19:55:46+0000","dateStarted":"2021-02-24T21:33:39+0000","dateFinished":"2021-02-24T21:33:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:92"},{"text":"%md\n.\nFirst, use ***oml.sync*** to create a DataFrame proxy object in Python that represents the *DIGITS* table. The *DIGITS* table resides in the OMLUSER schema. All database users have been granted read access on the table.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
First, use oml.sync to create a DataFrame proxy object in Python that represents the DIGITS table. The DIGITS table resides in the OMLUSER schema. All database users have been granted read access on the table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_210236797","id":"20210224-211339_1580115704","dateCreated":"2021-01-09T19:59:54+0000","dateStarted":"2021-02-24T21:33:40+0000","dateFinished":"2021-02-24T21:33:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:93"},{"text":"%python\n\nDIGITS = oml.sync(table = \"DIGITS\")\nprint(\"Shape: \", DIGITS.shape)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Shape: (1797, 65)\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-397355361","id":"20210224-211339_579851253","dateCreated":"2021-01-09T20:05:33+0000","dateStarted":"2021-02-24T21:33:40+0000","dateFinished":"2021-02-24T21:33:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:94"},{"text":"%md\n\n.\nSplit the data set into samples of 80% and 20% size.","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split the data set into samples of 80% and 20% size.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1923709354","id":"20210224-211339_1288963907","dateCreated":"2021-01-09T20:06:04+0000","dateStarted":"2021-02-24T21:33:41+0000","dateFinished":"2021-02-24T21:33:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:95"},{"text":"%python\n\nsplits = DIGITS.split(ratio=(.8, .2), use_hash = False)\nprint(\"Split lengths: \", [len(split) for split in splits])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:42+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [1441, 356]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-454064801","id":"20210224-211339_2019706985","dateCreated":"2021-01-09T20:06:36+0000","dateStarted":"2021-02-24T21:33:42+0000","dateFinished":"2021-02-24T21:33:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:96"},{"text":"%md\n\n.\nPerform stratified sampling on the column, target. Stratified sampling divides the data into different groups based on shared characteristics prior to sampling, ensuring that members from each subgroup is included in the analysis.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:42+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Perform stratified sampling on the column, target. Stratified sampling divides the data into different groups based on shared characteristics prior to sampling, ensuring that members from each subgroup is included in the analysis.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_696840607","id":"20210224-211339_1406155003","dateCreated":"2021-01-09T20:09:38+0000","dateStarted":"2021-02-24T21:33:43+0000","dateFinished":"2021-02-24T21:33:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:97"},{"text":"%python\n\nsplits = DIGITS.split(strata_cols=['target'])\nprint(\"Split lengths: \", [split.shape for split in splits])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [(1285, 65), (512, 65)]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-418069464","id":"20210224-211339_261900559","dateCreated":"2021-01-09T20:11:58+0000","dateStarted":"2021-02-24T21:33:43+0000","dateFinished":"2021-02-24T21:33:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:98"},{"text":"%md\n\n.\nVerify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Verify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1511129630","id":"20210224-211339_1662953888","dateCreated":"2021-01-09T20:12:29+0000","dateStarted":"2021-02-24T21:33:44+0000","dateFinished":"2021-02-24T21:33:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:99"},{"text":"%python\n\nprint(\"Verify values: \", [split['target'].drop_duplicates().sort_values().pull() for split in splits])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Verify values: [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1206398703","id":"20210224-211339_156603562","dateCreated":"2021-01-09T20:13:01+0000","dateStarted":"2021-02-24T21:33:45+0000","dateFinished":"2021-02-24T21:33:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:100"},{"text":"%md\n\n.\nCompute hash on the target column.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Compute hash on the target column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1599084795","id":"20210224-211339_1527804571","dateCreated":"2021-01-09T20:13:26+0000","dateStarted":"2021-02-24T21:33:46+0000","dateFinished":"2021-02-24T21:33:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:101"},{"text":"%python\n\nsplits = DIGITS.split(hash_cols=['target'])\nprint(\"Split lengths: \", [split.shape for split in splits])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [(899, 65), (898, 65)]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1494505567","id":"20210224-211339_917081287","dateCreated":"2021-01-09T20:14:30+0000","dateStarted":"2021-02-24T21:33:46+0000","dateFinished":"2021-02-24T21:33:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:102"},{"text":"%md\n\n.\nVerify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Verify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_2133302786","id":"20210224-211339_552362011","dateCreated":"2021-01-09T20:14:49+0000","dateStarted":"2021-02-24T21:33:47+0000","dateFinished":"2021-02-24T21:33:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:103"},{"text":"%python\n\nprint(\"Verify values: \", [split['target'].drop_duplicates().sort_values().pull()\nfor split in splits])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Verify values: [[0, 1, 3, 5, 8], [2, 4, 6, 7, 9]]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_621869621","id":"20210224-211339_87638120","dateCreated":"2021-01-09T20:17:08+0000","dateStarted":"2021-02-24T21:33:48+0000","dateFinished":"2021-02-24T21:33:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:104"},{"text":"%md\n\n.\nSplit the data randomly into 4 consecutive folds using the ***KFold*** function.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split the data randomly into 4 consecutive folds using the KFold function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1128868837","id":"20210224-211339_1575321342","dateCreated":"2021-01-09T20:17:42+0000","dateStarted":"2021-02-24T21:33:49+0000","dateFinished":"2021-02-24T21:33:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:105"},{"text":"%python\n\nfolds = DIGITS.KFold(n_splits=4)\n\nprint(\"Split lengths: \", [(len(fold[0]), len(fold[1])) \nfor fold in folds])\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [(1352, 445), (1336, 461), (1379, 418), (1325, 472)]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1817142223","id":"20210224-211339_667950641","dateCreated":"2021-01-09T20:20:31+0000","dateStarted":"2021-02-24T21:33:49+0000","dateFinished":"2021-02-24T21:33:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:106"},{"title":"Try it yourself","text":"%md\nSplit the *digit* data set into four samples of 25% each.","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Split the digit data set into four samples of 25% each.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1605490423","id":"20210224-211339_1694453352","dateCreated":"2021-01-09T20:21:10+0000","dateStarted":"2021-02-24T21:33:51+0000","dateFinished":"2021-02-24T21:33:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:107"},{"text":"%python\n\n# Insert code here\n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219690_1116226404","id":"20210224-211339_730491039","dateCreated":"2021-01-10T17:28:15+0000","dateStarted":"2021-02-24T21:33:51+0000","dateFinished":"2021-02-24T21:33:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:108"},{"title":"Step 6: Use the crosstab and pivot_table functions","text":"%md\n\nThis step shows how to use the ***crosstab*** method to perform cross-column analysis of an oml.DataFrame object and the ***pivot_table*** method to convert an oml.DataFrame to a spreadsheet-style pivot table.\n\nCross-tabulation is a statistical technique that finds an interdependent relationship between two columns of values. The ***crosstab*** method computes a cross-tabulation of two or more columns. By default, it computes a frequency table for the columns unless a column and an aggregation function have been passed to it.\n\nThe ***pivot_table*** function converts a data set into a pivot table. Due to the database 1000 column limit, pivot tables with more than 1000 columns are automatically truncated to display the categories with the most entries for each column value.\n\n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to use the crosstab method to perform cross-column analysis of an oml.DataFrame object and the pivot_table method to convert an oml.DataFrame to a spreadsheet-style pivot table.

\n

Cross-tabulation is a statistical technique that finds an interdependent relationship between two columns of values. The crosstab method computes a cross-tabulation of two or more columns. By default, it computes a frequency table for the columns unless a column and an aggregation function have been passed to it.

\n

The pivot_table function converts a data set into a pivot table. Due to the database 1000 column limit, pivot tables with more than 1000 columns are automatically truncated to display the categories with the most entries for each column value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-546422572","id":"20210224-211339_1567547806","dateCreated":"2021-01-09T20:22:18+0000","dateStarted":"2021-02-24T21:33:52+0000","dateFinished":"2021-02-24T21:33:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:109"},{"text":"%md\n\n.\nCreate a temporary table *MY_DF4* using a demo data set. This data set reports on the speed and accuracy for a given task characterized by hand used (left or right) and gender (male, female, or not specified).\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create a temporary table MY_DF4 using a demo data set. This data set reports on the speed and accuracy for a given task characterized by hand used (left or right) and gender (male, female, or not specified).

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1637805754","id":"20210224-211339_2062048660","dateCreated":"2021-01-09T20:25:31+0000","dateStarted":"2021-02-24T21:33:53+0000","dateFinished":"2021-02-24T21:33:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:110"},{"text":"%python\n\nmy_df4 = pd.DataFrame({'GENDER': ['M', 'M', 'F', 'M', 'F', 'M', 'F', 'F', None, 'F', 'M', 'F'],\n 'HAND': ['L', 'R', 'R', 'L', 'R', None, 'L', 'R', 'R', 'R', 'R', 'R'],\n 'SPEED': [40.5, 30.4, 60.8, 51.2, 54, 29.3, 34.1, 39.6, 46.4, 12, 25.3, 37.5],\n 'ACCURACY': [.92, .94, .87, .9, .85, .97, .96, .93, .89, .84, .91, .95]})\n\nMY_DF4 = oml.push(my_df4)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219690_1725052111","id":"20210224-211339_1685766319","dateCreated":"2021-01-09T20:37:58+0000","dateStarted":"2021-02-24T21:33:53+0000","dateFinished":"2021-02-24T21:33:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:111"},{"text":"%md\n\n\n.\nUse the ***crosstab*** function to find the categories that the most entries belonged to. This example shows how to find the count of gender, and right-handed and left-handed persons in descending order in the *MY_DF4* dataframe. \n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the crosstab function to find the categories that the most entries belonged to. This example shows how to find the count of gender, and right-handed and left-handed persons in descending order in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1806353981","id":"20210224-211339_474776111","dateCreated":"2021-01-09T20:38:31+0000","dateStarted":"2021-02-24T21:33:54+0000","dateFinished":"2021-02-24T21:33:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:112"},{"text":"%python\n\nMY_DF4.crosstab('GENDER', 'HAND').sort_values('count', ascending=False)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER HAND count\n0 F R 5\n1 M L 2\n2 M R 2\n3 F L 1\n4 M None 1\n5 None R 1\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1170126837","id":"20210224-211339_906293801","dateCreated":"2021-01-09T20:40:03+0000","dateStarted":"2021-02-24T21:33:55+0000","dateFinished":"2021-02-24T21:33:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:113"},{"text":"%md\n\n.\nUse the ***crosstab*** function to find the ratio of entries with different hand values for each gender and across entries in the *MY_DF4* dataframe.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the crosstab function to find the ratio of entries with different hand values for each gender and across entries in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_71572369","id":"20210224-211339_246943104","dateCreated":"2021-01-09T20:40:24+0000","dateStarted":"2021-02-24T21:33:56+0000","dateFinished":"2021-02-24T21:33:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:114"},{"text":"%python\n\nMY_DF4.crosstab('GENDER', 'HAND', pivot = True, margins = True, normalize = 0)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER count_(L) count_(R) count_(None)\n0 All 0.250000 0.666667 0.083333\n1 F 0.166667 0.833333 0.000000\n2 M 0.400000 0.400000 0.200000\n3 None 0.000000 1.000000 0.000000\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_912089709","id":"20210224-211339_1022745408","dateCreated":"2021-01-09T20:40:48+0000","dateStarted":"2021-02-24T21:33:56+0000","dateFinished":"2021-02-24T21:33:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:115"},{"text":"%md\n\n. \nUse the ***pivot_table*** function to find the mean speed across all gender and hand combinations in the *MY_DF4* dataframe.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the pivot_table function to find the mean speed across all gender and hand combinations in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_253184311","id":"20210224-211339_1154509579","dateCreated":"2021-01-09T20:41:07+0000","dateStarted":"2021-02-24T21:33:58+0000","dateFinished":"2021-02-24T21:33:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:116"},{"text":"%python\n\nMY_DF4.pivot_table('GENDER', 'HAND', 'SPEED')","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER mean(SPEED)_(L) mean(SPEED)_(R) mean(SPEED)_(None)\n0 F 34.10 40.78 NaN\n1 M 45.85 27.85 29.3\n2 None NaN 46.40 NaN\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_820707844","id":"20210224-211339_1431591938","dateCreated":"2021-01-09T20:41:58+0000","dateStarted":"2021-02-24T21:33:58+0000","dateFinished":"2021-02-24T21:33:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:117"},{"text":"%md\n\n.\nUse the ***pivot_table*** function to find the maximum and minimum speed for every gender and hand combination and across all combinations in the *MY_DF4* dataframe.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the pivot_table function to find the maximum and minimum speed for every gender and hand combination and across all combinations in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-415025790","id":"20210224-211339_466525989","dateCreated":"2021-01-09T20:42:07+0000","dateStarted":"2021-02-24T21:33:59+0000","dateFinished":"2021-02-24T21:33:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:118"},{"text":"%python\n\nMY_DF4.pivot_table('GENDER', 'HAND', 'SPEED', aggfunc = [oml.DataFrame.max, oml.DataFrame.min], margins = True)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:33:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER max(SPEED)_(L) ... min(SPEED)_(None) min(SPEED)_(All)\n0 All 51.2 ... 29.3 12.0\n1 F 34.1 ... NaN 12.0\n2 M 51.2 ... 29.3 25.3\n3 None NaN ... NaN 46.4\n\n[4 rows x 9 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-789957324","id":"20210224-211339_166951111","dateCreated":"2021-01-09T20:44:33+0000","dateStarted":"2021-02-24T21:34:00+0000","dateFinished":"2021-02-24T21:34:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:119"},{"title":"Step 7: Use oml.boxplot and oml.hist","text":"%md\n\nOML4Py provides functions for rendering graphical displays of data. The ***oml.boxplot*** and ***oml.hist*** functions compute the statistics necessary to generate box and whisker plots or histograms in-database for scalability and performance. OML4Py uses the matplotlib library to render the output.\n\nThis example demonstrates how to use the ***oml.boxplot*** and ***oml.hist*** functions using the wine data set. The statistics supporting these plots are computed in the database, so transfer of data or client side memory limitations are avoided. As before, we sync the *WINE* table in the OMLUSER schema to a local OML DataFrame.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py provides functions for rendering graphical displays of data. The oml.boxplot and oml.hist functions compute the statistics necessary to generate box and whisker plots or histograms in-database for scalability and performance. OML4Py uses the matplotlib library to render the output.

\n

This example demonstrates how to use the oml.boxplot and oml.hist functions using the wine data set. The statistics supporting these plots are computed in the database, so transfer of data or client side memory limitations are avoided. As before, we sync the WINE table in the OMLUSER schema to a local OML DataFrame.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-642451635","id":"20210224-211339_1312608961","dateCreated":"2021-01-09T20:44:55+0000","dateStarted":"2021-02-24T21:34:01+0000","dateFinished":"2021-02-24T21:34:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:120"},{"title":"Create a boxplot","text":"%python\n\nimport matplotlib.pyplot as plt\n\nWINE = oml.sync(table = \"WINE\")\n\noml.graphics.boxplot(WINE[:,8:12], showmeans=True, meanline=True, patch_artist=True, labels=WINE.columns[8:12])\nplt.title('Distribution of Wine Attributes')\nplt.show()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_638581919","id":"20210224-211339_973026120","dateCreated":"2021-01-09T20:48:53+0000","dateStarted":"2021-02-24T21:34:01+0000","dateFinished":"2021-02-24T21:34:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:121"},{"title":"Create a histogram","text":"%python\n\noml.graphics.hist(WINE['proline'], bins=10, color='red', linestyle='solid', edgecolor='black')\nplt.title('Proline content in Wine')\nplt.xlabel('proline content')\nplt.ylabel('# of wine instances')\nplt.show()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1381050850","id":"20210224-211339_1445438693","dateCreated":"2021-01-09T20:50:07+0000","dateStarted":"2021-02-24T21:34:07+0000","dateFinished":"2021-02-24T21:34:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:122"},{"title":"Step 8: Create a persistent database table","text":"%md\n\nUse the ***oml.create*** function to create a persistent table in your database schema from data in your Python session. The ***oml.create*** function creates a table in the database schema and returns an oml.DataFrame object that is a proxy for the table. The proxy oml.DataFrame object has the same name as the table. The resulting table is available from both Python and SQL, even after the session ends - in contrast to the temporary table created when using the ***oml.push*** function\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the oml.create function to create a persistent table in your database schema from data in your Python session. The oml.create function creates a table in the database schema and returns an oml.DataFrame object that is a proxy for the table. The proxy oml.DataFrame object has the same name as the table. The resulting table is available from both Python and SQL, even after the session ends - in contrast to the temporary table created when using the oml.push function

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1887220161","id":"20210224-211339_1140906918","dateCreated":"2021-01-09T20:50:22+0000","dateStarted":"2021-02-24T21:34:10+0000","dateFinished":"2021-02-24T21:34:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:123"},{"text":"%python\n\ntry:\n oml.drop(table=\"IRIS\")\nexcept:\n pass\n\nIRIS = oml.create(iris_df, table=\"IRIS\")\nprint(\"Shape:\",IRIS.shape)\nz.show(IRIS.head(10))\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"1":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"SEPAL_LENGTH":"string","SEPAL_WIDTH":"string","PETAL_LENGTH":"string","PETAL_WIDTH":"string","SPECIES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Shape: (150, 5)\n"},{"type":"TABLE","data":"SEPAL_LENGTH\tSEPAL_WIDTH\tPETAL_LENGTH\tPETAL_WIDTH\tSPECIES\n4.6\t3.6\t1\t0.2\tsetosa\n5.1\t2.5\t3\t1.1\tversicolor\n6.0\t2.2\t4\t1.0\tversicolor\n5.8\t2.6\t4\t1.2\tversicolor\n5.5\t2.3\t4\t1.3\tversicolor\n5.5\t2.5\t4\t1.3\tversicolor\n6.1\t2.8\t4\t1.3\tversicolor\n5.7\t2.5\t5\t2.0\tvirginica\n6.0\t2.2\t5\t1.5\tvirginica\n6.3\t2.5\t5\t1.9\tvirginica\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-60112","id":"20210224-211339_1820500797","dateCreated":"2021-01-10T17:58:51+0000","dateStarted":"2021-02-24T21:34:10+0000","dateFinished":"2021-02-24T21:34:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:124"},{"title":"View persistent tables in the user schema","text":"%python\n\nlist(oml.sync(table=\".*\", regex_match=True).keys())","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['CUSTOMERS360_TAB', 'INSUR_CUST_LTV', 'RF_COST', 'CUSTOMERS360', 'BREASTCANCER', 'WINE', 'DIGITS', 'IRIS']\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_235065732","id":"20210224-211339_749189270","dateCreated":"2021-01-14T20:38:36+0000","dateStarted":"2021-02-24T21:34:11+0000","dateFinished":"2021-02-24T21:34:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:125"},{"text":"%md\n\n.\nCreate a cursor object for the database connection using ***oml.cursor*** from **cx_Oracle**, then shows the SQL data types of the columns in table *IRIS*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create a cursor object for the database connection using oml.cursor from cx_Oracle, then shows the SQL data types of the columns in table IRIS.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1718661155","id":"20210224-211339_1204564331","dateCreated":"2021-01-10T18:25:39+0000","dateStarted":"2021-02-24T21:34:13+0000","dateFinished":"2021-02-24T21:34:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:126"},{"text":"%python\n\ncr = oml.cursor()\n_ = cr.execute(\"select data_type from all_tab_columns where table_name ='IRIS'\")\ncr.fetchall()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"[('NUMBER',), ('NUMBER',), ('NUMBER',), ('VARCHAR2',), ('NUMBER',)]\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-641084472","id":"20210224-211339_89329631","dateCreated":"2021-01-10T18:11:03+0000","dateStarted":"2021-02-24T21:34:13+0000","dateFinished":"2021-02-24T21:34:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:127"},{"text":"%md\n\n.\nTo close the cursor, run the ***cr.close*** command.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
To close the cursor, run the cr.close command.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1858083899","id":"20210224-211339_2092031747","dateCreated":"2021-01-10T18:26:05+0000","dateStarted":"2021-02-24T21:34:14+0000","dateFinished":"2021-02-24T21:34:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:128"},{"text":"%python\n\ncr.close()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219690_107872126","id":"20210224-211339_1841543947","dateCreated":"2021-01-10T18:29:54+0000","dateStarted":"2021-02-24T21:34:14+0000","dateFinished":"2021-02-24T21:34:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:129"},{"text":"%md\n\n.\nUse the transparency layer function ***shape*** to view the shape, or number of rows and columns, of the *IRIS* table.","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the transparency layer function shape to view the shape, or number of rows and columns, of the IRIS table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1092503385","id":"20210224-211339_1268947121","dateCreated":"2021-01-10T18:36:16+0000","dateStarted":"2021-02-24T21:34:15+0000","dateFinished":"2021-02-24T21:34:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:130"},{"text":"%python\n\nIRIS.shape\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(150, 5)\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-233249833","id":"20210224-211339_1444039661","dateCreated":"2021-01-10T18:31:20+0000","dateStarted":"2021-02-24T21:34:16+0000","dateFinished":"2021-02-24T21:34:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:131"},{"text":"%md\n\n.\nUse the transparency layer function ***head*** to view the first three rows of the *IRIS* table.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the transparency layer function head to view the first three rows of the IRIS table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_195920533","id":"20210224-211339_615112683","dateCreated":"2021-01-10T18:57:20+0000","dateStarted":"2021-02-24T21:34:16+0000","dateFinished":"2021-02-24T21:34:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:132"},{"text":"%python\n\nIRIS.head(n=3)","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH SPECIES\n0 4.6 3.6 1 0.2 setosa\n1 5.1 2.5 3 1.1 versicolor\n2 6.0 2.2 4 1.0 versicolor\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-189781487","id":"20210224-211339_1422009238","dateCreated":"2021-01-10T18:38:40+0000","dateStarted":"2021-02-24T21:34:17+0000","dateFinished":"2021-02-24T21:34:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:133"},{"text":"%md\n\nUse ***describe*** to calculate descriptive statistics that summarize the central tendency, dispersion, and shape of the *IRIS* table in each numeric column.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use describe to calculate descriptive statistics that summarize the central tendency, dispersion, and shape of the IRIS table in each numeric column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_1230271714","id":"20210224-211339_200957615","dateCreated":"2021-01-10T18:35:55+0000","dateStarted":"2021-02-24T21:34:18+0000","dateFinished":"2021-02-24T21:34:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:134"},{"text":"%python\n\nIRIS.describe()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH\ncount 150.000000 150.000000 150.000000 150.000000\nmean 5.843333 3.057333 3.758000 1.199333\nstd 0.828066 0.435866 1.765298 0.762238\nmin 4.300000 2.000000 1.000000 0.100000\n25% 5.100000 2.800000 1.600000 0.300000\n50% 5.800000 3.000000 4.350000 1.300000\n75% 6.400000 3.300000 5.100000 1.800000\nmax 7.900000 4.400000 6.900000 2.500000\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_2012181803","id":"20210224-211339_1341337886","dateCreated":"2021-01-10T18:39:20+0000","dateStarted":"2021-02-24T21:34:18+0000","dateFinished":"2021-02-24T21:34:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:135"},{"text":"%md\n\n## End of Script\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:34:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219690_-1085259830","id":"20210224-211339_634382732","dateCreated":"2021-01-10T18:41:13+0000","dateStarted":"2021-02-24T21:34:19+0000","dateFinished":"2021-02-24T21:34:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:136"},{"text":"%md\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:24:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614201219690_-863667758","id":"20210224-211339_1616158768","dateCreated":"2021-01-14T00:24:05+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:137"}],"name":"Lab 2: OML4Py Transparency Layer","id":"39713","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 2_ OML4Py Transparency Layer.json b/machine-learning/labs/oml4py-live-labs/Lab 2_ OML4Py Transparency Layer.json new file mode 100755 index 00000000..2b6f80e5 --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/Lab 2_ OML4Py Transparency Layer.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities. \n\nWith the transparency layer classes, you can convert selected Python objects to Oracle Autonomous Database (ADB) objects and also call a range of familiar Python functions that are overloaded to run the corresponding SQL on tables in the database. \n\nThe OML4Py transparency layer supports functions that interact with database data and enables:\n\n* Loading Python pandas.DataFrame objects to Oracle Database to create database tables\n* Provides transparent access and manipulation of database tables and views through the use of proxy objects\n* Overloads select Python functions, translating their functionality into SQL\n* Uses familiar Python syntax to manipulate database data\n\nNote that using the transparency layer, computations and processing occur in-database, leverage Oracle Database as a high performance compute engine. Whenever possible or appropriate, results are also provided as proxy objects. This eliminates data movement from the database to the Python engine, and is especially valuable for large results.\n\nIn this lab, we highlight features of the transparency layer involving data selection and manipulation.\n\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

With the transparency layer classes, you can convert selected Python objects to Oracle Autonomous Database (ADB) objects and also call a range of familiar Python functions that are overloaded to run the corresponding SQL on tables in the database.

\n

The OML4Py transparency layer supports functions that interact with database data and enables:

\n
    \n
  • Loading Python pandas.DataFrame objects to Oracle Database to create database tables
  • \n
  • Provides transparent access and manipulation of database tables and views through the use of proxy objects
  • \n
  • Overloads select Python functions, translating their functionality into SQL
  • \n
  • Uses familiar Python syntax to manipulate database data
  • \n
\n

Note that using the transparency layer, computations and processing occur in-database, leverage Oracle Database as a high performance compute engine. Whenever possible or appropriate, results are also provided as proxy objects. This eliminates data movement from the database to the Python engine, and is especially valuable for large results.

\n

In this lab, we highlight features of the transparency layer involving data selection and manipulation.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1496330870","id":"20210302-002154_1892853177","dateCreated":"2021-01-08T21:55:05+0000","dateStarted":"2021-03-02T18:55:03+0000","dateFinished":"2021-03-02T18:55:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Step1: Import libraries and create OML DataFrame proxy object","text":"%md\r\n\r\nTo use OML4Py, you must first import the **oml** package. We also import the Pandas package to support OML4Py data manipulation and analysis, data exploration and preparation. ","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:06+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To use OML4Py, you must first import the oml package. We also import the Pandas package to support OML4Py data manipulation and analysis, data exploration and preparation.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_944456566","id":"20210302-002154_2117648379","dateCreated":"2021-01-08T19:59:33+0000","dateStarted":"2021-03-02T18:55:06+0000","dateFinished":"2021-03-02T18:55:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%python\n\nimport pandas as pd\nimport oml\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644514465_-736551597","id":"20210302-002154_293400369","dateCreated":"2021-01-08T20:27:43+0000","dateStarted":"2021-03-02T18:55:07+0000","dateFinished":"2021-03-02T18:55:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"title":"","text":"%md\n\n.\nThe transparency layer includes the ability to create temporary and permanent Oracle Database objects represented by proxy objects in the Python session. \n\nIn this first example, we load the iris data and combine target and predictors into a single DataFrame, which matches the form the data would have as a database table. This Pandas DataFrame can then be loaded into the database using the ***oml.push*** function, which creates a temporary table and returns a proxy object that we assign to *IRIS_TMP*. \n\nSuch temporary tables will be automatically deleted when the database connection is terminated unless saved in a datastore (the topic of 'datastore' is covered in another lab).\n\nIn OML notebooks we use the zeppelin-context ***z.show*** method to display Python objects and proxy object content. Display the first few rows of *IRIS_TMP* using ***z.show*** for displaying DataFrame results in the Zeppelin viewer. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
The transparency layer includes the ability to create temporary and permanent Oracle Database objects represented by proxy objects in the Python session.

\n

In this first example, we load the iris data and combine target and predictors into a single DataFrame, which matches the form the data would have as a database table. This Pandas DataFrame can then be loaded into the database using the oml.push function, which creates a temporary table and returns a proxy object that we assign to IRIS_TMP.

\n

Such temporary tables will be automatically deleted when the database connection is terminated unless saved in a datastore (the topic of 'datastore' is covered in another lab).

\n

In OML notebooks we use the zeppelin-context z.show method to display Python objects and proxy object content. Display the first few rows of IRIS_TMP using z.show for displaying DataFrame results in the Zeppelin viewer.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1138324062","id":"20210302-002154_1660803415","dateCreated":"2021-01-08T20:34:04+0000","dateStarted":"2021-03-02T18:55:16+0000","dateFinished":"2021-03-02T18:55:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%python\n\nfrom sklearn.datasets import load_iris\nimport pandas as pd\n\niris = load_iris()\n\nx = pd.DataFrame(iris.data, columns = ['SEPAL_LENGTH','SEPAL_WIDTH', 'PETAL_LENGTH','PETAL_WIDTH'])\ny = pd.DataFrame(list(map(lambda x: {0: 'setosa', 1: 'versicolor', 2:'virginica'}[x], iris.target)), columns = ['SPECIES'])\n \niris_df = pd.concat([x, y], axis=1)\nIRIS_TMP = oml.push(iris_df)\n\nz.show(IRIS_TMP.head())\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":234,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"SEPAL_LENGTH":"string","SEPAL_WIDTH":"string","PETAL_LENGTH":"string","PETAL_WIDTH":"string","SPECIES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"SEPAL_LENGTH\tSEPAL_WIDTH\tPETAL_LENGTH\tPETAL_WIDTH\tSPECIES\n4.6\t3.6\t1\t0.2\tsetosa\n5.1\t2.5\t3\t1.1\tversicolor\n6.0\t2.2\t4\t1.0\tversicolor\n5.8\t2.6\t4\t1.2\tversicolor\n5.5\t2.3\t4\t1.3\tversicolor\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1445158550","id":"20210302-002154_124213212","dateCreated":"2021-01-08T20:34:41+0000","dateStarted":"2021-03-02T18:55:16+0000","dateFinished":"2021-03-02T18:55:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%md\n\n.\nList the available Python transparency layer functions.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the available Python transparency layer functions.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1302515160","id":"20210302-002154_1008461740","dateCreated":"2021-01-10T17:39:56+0000","dateStarted":"2021-03-02T18:55:18+0000","dateFinished":"2021-03-02T18:55:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%python\n\nres = [x for x in IRIS_TMP.__dir__() if not x.startswith('_')]\nres.sort()\nres","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['KFold', 'append', 'columns', 'concat', 'corr', 'count', 'create_view', 'crosstab', 'cumsum', 'describe', 'drop', 'drop_duplicates', 'dropna', 'dtypes', 'head', 'kurtosis', 'materialize', 'max', 'mean', 'median', 'merge', 'min', 'nunique', 'pivot_table', 'pull', 'rename', 'replace', 'round', 'sample', 'select_types', 'shape', 'skew', 'sort_values', 'split', 'std', 'sum', 't_dot', 'tail']\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_297860377","id":"20210302-002154_1256751737","dateCreated":"2021-01-10T17:36:37+0000","dateStarted":"2021-03-02T18:55:18+0000","dateFinished":"2021-03-02T18:55:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"title":"Step 2: Select table columns","text":"%md\n\nSelect the first three records for columns SEPAL_LENGTH and PETAL_LENGTH from the *IRIS_TMP* table.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Select the first three records for columns SEPAL_LENGTH and PETAL_LENGTH from the IRIS_TMP table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_178865794","id":"20210302-002154_1188285714","dateCreated":"2021-01-08T20:37:37+0000","dateStarted":"2021-03-02T18:55:19+0000","dateFinished":"2021-03-02T18:55:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%python\n\nIRIS_projected1 = IRIS_TMP[:, [\"SEPAL_LENGTH\", \"PETAL_LENGTH\"]]\nIRIS_projected1.head(3)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH PETAL_LENGTH\n0 4.6 1\n1 5.1 3\n2 6.0 4\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1548826455","id":"20210302-002154_2075638691","dateCreated":"2021-01-08T20:40:41+0000","dateStarted":"2021-03-02T18:55:20+0000","dateFinished":"2021-03-02T18:55:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%md\n\n.\nSelect the first four columns in *IRIS_TMP* using an index range. Note that Python uses 0 as a starting element for indexing. The starting element is the first column, SEPAL_LENGTH. The second element is the second column, SEPAL_WIDTH, and so on. ","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Select the first four columns in IRIS_TMP using an index range. Note that Python uses 0 as a starting element for indexing. The starting element is the first column, SEPAL_LENGTH. The second element is the second column, SEPAL_WIDTH, and so on.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1351642850","id":"20210302-002154_410129918","dateCreated":"2021-01-08T20:46:49+0000","dateStarted":"2021-03-02T18:55:20+0000","dateFinished":"2021-03-02T18:55:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"text":"%python\n\nIRIS_projected2 = IRIS_TMP[:, 0:4]\nIRIS_projected2.head(3)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH\n0 4.6 3.6 1 0.2\n1 5.1 2.5 3 1.1\n2 6.0 2.2 4 1.0\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1348608301","id":"20210302-002154_369604547","dateCreated":"2021-01-08T20:45:59+0000","dateStarted":"2021-03-02T18:55:21+0000","dateFinished":"2021-03-02T18:55:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%md\n\n.\nSelect columns by data type, specifying the data type as ***oml.string***, which returns the SPECIES column.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Select columns by data type, specifying the data type as oml.string, which returns the SPECIES column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_748012355","id":"20210302-002154_1323586380","dateCreated":"2021-01-08T20:55:33+0000","dateStarted":"2021-03-02T18:55:22+0000","dateFinished":"2021-03-02T18:55:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%python\n\nIRIS_projected3 = IRIS_TMP.select_types(include=[oml.String])\nIRIS_projected3.head(3)","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SPECIES\n0 setosa\n1 versicolor\n2 versicolor\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_109884747","id":"20210302-002154_138974096","dateCreated":"2021-01-08T20:50:04+0000","dateStarted":"2021-03-02T18:55:22+0000","dateFinished":"2021-03-02T18:55:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"title":"Step 3: Select table rows","text":"%md\n\nPerform a simple row selection by selecting columns SEPAL_LENGTH and PETAL_LENGTH where PETAL_LENGTH is less than 1.5. \n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Perform a simple row selection by selecting columns SEPAL_LENGTH and PETAL_LENGTH where PETAL_LENGTH is less than 1.5.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1590696236","id":"20210302-002154_10336898","dateCreated":"2021-01-08T20:50:27+0000","dateStarted":"2021-03-02T18:55:23+0000","dateFinished":"2021-03-02T18:55:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"text":"%python\n\nIRIS_filtered1 = IRIS_TMP[IRIS_TMP[\"PETAL_LENGTH\"] < 1.5, [\"SEPAL_LENGTH\", \"PETAL_LENGTH\"]]\n\nprint(\"Length: \", len(IRIS_filtered1))\nIRIS_filtered1.head(3)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Length: 24\n SEPAL_LENGTH PETAL_LENGTH\n0 4.6 1.0\n1 4.3 1.1\n2 5.8 1.2\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-2087764483","id":"20210302-002154_722451709","dateCreated":"2021-01-08T21:03:51+0000","dateStarted":"2021-03-02T18:55:24+0000","dateFinished":"2021-03-02T18:55:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%md\n\n.\nNow try a compound row selection using the **OR** filtering condition, denoted by the **|** symbol. Select all rows in which PETAL_LENGTH is less than 1.5 OR SEPAL_LENGTH is equal to 5.8.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Now try a compound row selection using the OR filtering condition, denoted by the | symbol. Select all rows in which PETAL_LENGTH is less than 1.5 OR SEPAL_LENGTH is equal to 5.8.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-344804174","id":"20210302-002154_1193141475","dateCreated":"2021-01-08T21:04:11+0000","dateStarted":"2021-03-02T18:55:25+0000","dateFinished":"2021-03-02T18:55:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%python\n\nIRIS_filtered2 = IRIS_TMP[(IRIS_TMP[\"PETAL_LENGTH\"] < 1.5) | (IRIS_TMP[\"SEPAL_LENGTH\"] == 5.8), :]\nprint(\"Length: \", len(IRIS_filtered2))\nIRIS_filtered2.head(3)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Length: 30\n SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH SPECIES\n0 4.6 3.6 1.0 0.2 setosa\n1 5.8 2.6 4.0 1.2 versicolor\n2 4.3 3.0 1.1 0.1 setosa\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1699759708","id":"20210302-002154_184892291","dateCreated":"2021-01-08T21:06:23+0000","dateStarted":"2021-03-02T18:55:25+0000","dateFinished":"2021-03-02T18:55:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"text":"%md\n\n.\nTry a compound row selection using **AND**, denoted by the **&** symbol. Select all rows in which PETAL_LENGTH is less than 1.5 AND SEPAL_LENGTH is greater than 5.0. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Try a compound row selection using AND, denoted by the & symbol. Select all rows in which PETAL_LENGTH is less than 1.5 AND SEPAL_LENGTH is greater than 5.0.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1752455016","id":"20210302-002154_1713494475","dateCreated":"2021-01-08T21:07:39+0000","dateStarted":"2021-03-02T18:55:26+0000","dateFinished":"2021-03-02T18:55:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%python\n\nIRIS_filtered3 = IRIS_TMP[(IRIS_TMP[\"PETAL_LENGTH\"] < 1.5) & \n (IRIS_TMP[\"SEPAL_LENGTH\"] > 5.0), :]\nprint(\"Length: \", len(IRIS_filtered3))\nIRIS_filtered3.head(4)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Length: 7\n SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH SPECIES\n0 5.8 4.0 1.2 0.2 setosa\n1 5.5 3.5 1.3 0.2 setosa\n2 5.4 3.9 1.3 0.4 setosa\n3 5.2 3.4 1.4 0.2 setosa\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_257707752","id":"20210302-002154_807365030","dateCreated":"2021-01-08T21:09:05+0000","dateStarted":"2021-03-02T18:55:27+0000","dateFinished":"2021-03-02T18:55:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"title":"Step 4: Use Pandas DataFrame objects","text":"%md\n\nYou can join data from oml.DataFrame objects that represent database tables by using the ***append***, ***concat***, and ***merge*** methods.\n\n* The ***append*** method appends or adds the other OML data object of the same class to this data object.\n* The ***concat*** method combines the current OML data object with the other data objects column-wise.\n* The ***merge*** method joins data sets.\n\nThese steps show how to use these methods.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

You can join data from oml.DataFrame objects that represent database tables by using the append, concat, and merge methods.

\n
    \n
  • The append method appends or adds the other OML data object of the same class to this data object.
  • \n
  • The concat method combines the current OML data object with the other data objects column-wise.
  • \n
  • The merge method joins data sets.
  • \n
\n

These steps show how to use these methods.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1893422320","id":"20210302-002154_403552698","dateCreated":"2021-01-08T21:09:55+0000","dateStarted":"2021-03-02T18:55:28+0000","dateFinished":"2021-03-02T18:55:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"title":"Use the append function","text":"%md\n\nThese steps show how to create a temporary table from a Pandas DataFrame and use the ***append*** function. The append argument is a boolean that specifies whether to append the x data to an existing table.\n\nRun the following script to create a temporary table *MY_DF* from a Pandas Dataframe and to print the data type for each column. In addition, this script prints the id column values followed by the num column values by using the append function.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

These steps show how to create a temporary table from a Pandas DataFrame and use the append function. The append argument is a boolean that specifies whether to append the x data to an existing table.

\n

Run the following script to create a temporary table MY_DF from a Pandas Dataframe and to print the data type for each column. In addition, this script prints the id column values followed by the num column values by using the append function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-706724002","id":"20210302-002154_989220891","dateCreated":"2021-01-08T21:13:15+0000","dateStarted":"2021-03-02T18:55:28+0000","dateFinished":"2021-03-02T18:55:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%python\n\nmy_df = pd.DataFrame({\"id\" : [1, 2, 3, 4, 5],\n \"val\" : [\"a\", \"b\", \"c\", \"d\", \"e\"],\n \"ch\" : [\"p\", \"q\", \"r\", \"a\", \"b\"],\n \"num\" : [4, 3, 6.7, 7.2, 5]})\n\nMY_DF = oml.push(my_df)\n\nprint (my_df.dtypes)\n\nnum1 = MY_DF['id']\nnum2 = MY_DF['num']\nnum1.append(num2)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"id int64\nval object\nch object\nnum float64\ndtype: object\n[1, 2, 3, 4, 5, 4, 3, 6.7, 7.2, 5]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1519582561","id":"20210302-002154_1383147791","dateCreated":"2021-01-08T23:19:22+0000","dateStarted":"2021-03-02T18:55:29+0000","dateFinished":"2021-03-02T18:55:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%md\n\n.\nUse the ***append*** function to append an oml.Float series object to another, then append an oml.DataFrame object to another.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the append function to append an oml.Float series object to another, then append an oml.DataFrame object to another.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1789696074","id":"20210302-002154_426260670","dateCreated":"2021-01-08T23:20:56+0000","dateStarted":"2021-03-02T18:55:30+0000","dateFinished":"2021-03-02T18:55:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"text":"%python\n\nx = MY_DF[['id', 'val']] \ny = MY_DF[['num', 'ch']]\n\nprint(\"Types x:\\n\", x.dtypes)\nprint(\"Types y:\\n\", y.dtypes)\n\nx.append(y)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Types x:\n id \nval \ndtype: object\nTypes y:\n num \nch \ndtype: object\n id val\n0 1.0 a\n1 2.0 b\n2 3.0 c\n3 4.0 d\n4 5.0 e\n5 4.0 p\n6 3.0 q\n7 6.7 r\n8 7.2 a\n9 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1402597447","id":"20210302-002154_1818067520","dateCreated":"2021-01-08T23:22:14+0000","dateStarted":"2021-03-02T18:55:30+0000","dateFinished":"2021-03-02T18:55:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"title":"Combine columns using concat","text":"%md\n\nUse the ***concat*** method to combine columns from one OML DataFrame proxy object with those of another. The ***auto_name*** argument of the concat method controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. You can also explicitly rename columns by passing in a dictionary that maps strings to objects, as discussed below.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the concat method to combine columns from one OML DataFrame proxy object with those of another. The auto_name argument of the concat method controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. You can also explicitly rename columns by passing in a dictionary that maps strings to objects, as discussed below.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1434723039","id":"20210302-002154_1680044376","dateCreated":"2021-01-08T23:22:40+0000","dateStarted":"2021-03-02T18:55:31+0000","dateFinished":"2021-03-02T18:55:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"text":"%md\n\n.\nUse the ***concat*** function to create two oml.DataFrame objects and combine the objects by column. The command automatically prints the result. When there is a single result to show, the print command is not needed.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the concat function to create two oml.DataFrame objects and combine the objects by column. The command automatically prints the result. When there is a single result to show, the print command is not needed.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-2114241296","id":"20210302-002154_1061229954","dateCreated":"2021-01-08T23:25:02+0000","dateStarted":"2021-03-02T18:55:32+0000","dateFinished":"2021-03-02T18:55:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"text":"%python\n\nfrom collections import OrderedDict\n\nx = MY_DF[['id', 'val']]\ny = MY_DF[['num', 'ch']]\nx.concat(y)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val num ch\n0 1 a 4.0 p\n1 2 b 3.0 q\n2 3 c 6.7 r\n3 4 d 7.2 a\n4 5 e 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_2112263419","id":"20210302-002154_1731491612","dateCreated":"2021-01-08T23:26:20+0000","dateStarted":"2021-03-02T18:55:32+0000","dateFinished":"2021-03-02T18:55:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%md\n\n.\nAn ***oml.Float*** is a numeric series data class that represents a single column of NUMBER, BINARY_DOUBLE, or BINARY_FLOAT database data types. Let's create an oml.Float object with the rounded exponential of two times the values in the num column of the *oml.frame* object, then concatenate it with the *oml.DataFrame* object *y* using a new column name.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
An oml.Float is a numeric series data class that represents a single column of NUMBER, BINARY_DOUBLE, or BINARY_FLOAT database data types. Let's create an oml.Float object with the rounded exponential of two times the values in the num column of the oml.frame object, then concatenate it with the oml.DataFrame object y using a new column name.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_937816902","id":"20210302-002154_1744545336","dateCreated":"2021-01-08T23:26:18+0000","dateStarted":"2021-03-02T18:55:33+0000","dateFinished":"2021-03-02T18:55:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"text":"%python\n\nw = (MY_DF['num']*2).exp().round(decimals=2)\ny.concat({'round(exp(2*num))':w})\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" num ch round(exp(2*num))\n0 4.0 p 2980.96\n1 3.0 q 403.43\n2 6.7 r 660003.22\n3 7.2 a 1794074.77\n4 5.0 b 22026.47\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1039914719","id":"20210302-002154_405647918","dateCreated":"2021-01-08T23:32:21+0000","dateStarted":"2021-03-02T18:55:34+0000","dateFinished":"2021-03-02T18:55:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%md\n\n.\nConcatenate object *x* with multiple objects using automatic name conflict resolution. In this example, ***auto_name=True*** controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. In this example, the *id** and **num* columns are duplicated.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Concatenate object x with multiple objects using automatic name conflict resolution. In this example, auto_name=True controls whether to call automatic name conflict resolution if one or more column names are duplicates in the two data frames. In this example, the id and num columns are duplicated.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1246794912","id":"20210302-002154_804739500","dateCreated":"2021-01-08T23:33:52+0000","dateStarted":"2021-03-02T18:55:34+0000","dateFinished":"2021-03-02T18:55:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%python\n\nMY_DF2 = MY_DF[:,'id']\nx.concat([MY_DF2, w, y], auto_name=True)\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val id3 num num5 ch\n0 1 a 1 2980.96 4.0 p\n1 2 b 2 403.43 3.0 q\n2 3 c 3 660003.22 6.7 r\n3 4 d 4 1794074.77 7.2 a\n4 5 e 5 22026.47 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-848774725","id":"20210302-002154_1799309273","dateCreated":"2021-01-08T23:38:43+0000","dateStarted":"2021-03-02T18:55:35+0000","dateFinished":"2021-03-02T18:55:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"text":"%md\n\n.\nNow concatenate multiple OML data objects with customized column renaming. We prepend the word **New** to the duplicate columns and use ***OrderedDict*** to preserve the order in which the objects are added.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Now concatenate multiple OML data objects with customized column renaming. We prepend the word New to the duplicate columns and use OrderedDict to preserve the order in which the objects are added.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_253612628","id":"20210302-002154_1364190944","dateCreated":"2021-01-08T23:39:03+0000","dateStarted":"2021-03-02T18:55:36+0000","dateFinished":"2021-03-02T18:55:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:71"},{"text":"%python\n\nx.concat(OrderedDict([('ID',MY_DF2), ('round(exp(2*num))',w), ('New_',y)]))\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val ID round(exp(2*num)) New_num New_ch\n0 1 a 1 2980.96 4.0 p\n1 2 b 2 403.43 3.0 q\n2 3 c 3 660003.22 6.7 r\n3 4 d 4 1794074.77 7.2 a\n4 5 e 5 22026.47 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_960146978","id":"20210302-002154_612794917","dateCreated":"2021-01-08T23:52:09+0000","dateStarted":"2021-03-02T18:55:36+0000","dateFinished":"2021-03-02T18:55:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:72"},{"title":"Use merge ","text":"%md\n\nUse the ***merge*** function to peform a cross join and a left outer join from two objects. This example first performs a cross join on the oml.DataFrame objects *x* and *y*, which creates the oml.DataFrame object *xy*.","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the merge function to peform a cross join and a left outer join from two objects. This example first performs a cross join on the oml.DataFrame objects x and y, which creates the oml.DataFrame object xy.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-373210937","id":"20210302-002154_824808736","dateCreated":"2021-01-08T23:52:20+0000","dateStarted":"2021-03-02T18:55:37+0000","dateFinished":"2021-03-02T18:55:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:73"},{"text":"%python\n\nx = MY_DF[['id', 'val']]\ny = MY_DF[['num', 'ch']]\n\nxy = x.merge(y)\nxy\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id_l val_l num_r ch_r\n0 1 a 4.0 p\n1 2 b 4.0 p\n2 3 c 4.0 p\n3 4 d 4.0 p\n4 5 e 4.0 p\n5 1 a 3.0 q\n6 2 b 3.0 q\n7 3 c 3.0 q\n8 4 d 3.0 q\n9 5 e 3.0 q\n10 1 a 6.7 r\n11 2 b 6.7 r\n12 3 c 6.7 r\n13 4 d 6.7 r\n14 5 e 6.7 r\n15 1 a 7.2 a\n16 2 b 7.2 a\n17 3 c 7.2 a\n18 4 d 7.2 a\n19 5 e 7.2 a\n20 1 a 5.0 b\n21 2 b 5.0 b\n22 3 c 5.0 b\n23 4 d 5.0 b\n24 5 e 5.0 b\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1402248331","id":"20210302-002154_549002579","dateCreated":"2021-01-09T00:07:04+0000","dateStarted":"2021-03-02T18:55:38+0000","dateFinished":"2021-03-02T18:55:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:74"},{"text":"%md\n\n.\nPerform a left outer join on the first four rows of x with the oml.DataFrame object other on the shared column id and applies the suffixes *.l* and *.r* to column names on the left and right side, respectively.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Perform a left outer join on the first four rows of x with the oml.DataFrame object other on the shared column id and applies the suffixes .l and .r to column names on the left and right side, respectively.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1148141206","id":"20210302-002154_242194242","dateCreated":"2021-01-09T00:08:25+0000","dateStarted":"2021-03-02T18:55:38+0000","dateFinished":"2021-03-02T18:55:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:75"},{"text":"%python\n\nx.head(4).merge(other=MY_DF[['id', 'num']], on=\"id\", how='left', suffixes=['.l','.r'])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" id val.l num.r\n0 1 a 4.0\n1 2 b 3.0\n2 3 c 6.7\n3 4 d 7.2\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_312613877","id":"20210302-002154_510176000","dateCreated":"2021-01-09T00:14:01+0000","dateStarted":"2021-03-02T18:55:39+0000","dateFinished":"2021-03-02T18:55:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:76"},{"title":"Try it yourself","text":"%md\n\nUsing the merge help file as a guide, perform a merge with a right outer join on the *id* column on the left side object *x* and the num column on the right side object *y*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Using the merge help file as a guide, perform a merge with a right outer join on the id column on the left side object x and the num column on the right side object y.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-2040759965","id":"20210302-002154_1670753656","dateCreated":"2021-01-09T01:09:03+0000","dateStarted":"2021-03-02T18:55:40+0000","dateFinished":"2021-03-02T18:55:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:77"},{"text":"%python\n\nhelp(oml.DataFrame.merge)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on cython_function_or_method in module oml.core.frame:\n\nmerge(self, other, on=None, left_on=None, right_on=None, how='left', suffixes=('_l', '_r'), nvl=True)\n Joins data sets.\n \n Parameters\n ----------\n other : an OML data set object\n on : str or list of str, optional\n Column names to join on. Must be found in both ``self`` and ``other``.\n left_on : str or list of str, optional\n Column names of ``self`` to join on.\n right_on : str or list of str, optional\n Column names of ``other`` to join on. If specified, must specify the same\n number of columns as ``left_on``.\n how : 'left' (default), 'right', 'inner', 'full'\n * left : left outer join\n * right : right outer join\n * full : full outer join\n * inner : inner join\n \n If ``on`` and ``left_on`` are both None, then ``how`` is ignored,\n and a cross join is performed.\n suffixes : sequence of length 2\n Suffix to apply to column names on the left and right side,\n respectively.\n nvl : True (default), False, dict \n * True : join condition includes NULL value\n * False : join condition excludes NULL value\n * dict : specifies the values that join columns use in replacement of NULL value with column names as keys\n \n Returns\n -------\n merged : oml.DataFrame\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-810288620","id":"20210302-002154_195979228","dateCreated":"2021-01-09T00:14:12+0000","dateStarted":"2021-03-02T18:55:40+0000","dateFinished":"2021-03-02T18:55:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:78"},{"text":"%python\n\n# Insert code here\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644514465_1117596516","id":"20210302-002154_2030642284","dateCreated":"2021-01-10T17:43:32+0000","dateStarted":"2021-03-02T18:55:41+0000","dateFinished":"2021-03-02T18:55:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:79"},{"title":"Drop rows and columns","text":"%md\n\nIn preparing data for analysis, a typical step is to transform data by dropping some values. You can filter out data that are not needed by using the ***drop***, ***drop_duplicates***, and ***dropna*** methods. \n\nUse the ***del*** statement to remove an OML DataFrame proxy object and its associated temporary table. Note that ***del*** does not delete a persistent table. Use the ***oml.drop*** function to delete a persistent database table. To work with the ***drop*** method, first create a demo data table MY_DF2. Create a temporary table MY_DF2 from Pandas dataframe.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In preparing data for analysis, a typical step is to transform data by dropping some values. You can filter out data that are not needed by using the drop, drop_duplicates, and dropna methods.

\n

Use the del statement to remove an OML DataFrame proxy object and its associated temporary table. Note that del does not delete a persistent table. Use the oml.drop function to delete a persistent database table. To work with the drop method, first create a demo data table MY_DF2. Create a temporary table MY_DF2 from Pandas dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_769615273","id":"20210302-002154_585277670","dateCreated":"2021-01-09T00:48:50+0000","dateStarted":"2021-03-02T18:55:42+0000","dateFinished":"2021-03-02T18:55:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:80"},{"text":"%python\n\nmy_df2 = pd.DataFrame({'numeric': [1, 1.4, -4, -4, 5.432, None, None],\n 'string1': [None, None, 'a', 'a', 'a', 'b', None],\n 'string2': ['x', None, 'z', 'z', 'z', 'x', None]})\n\n\nMY_DF2 = oml.push(my_df2, dbtypes = {'numeric': 'BINARY_DOUBLE', \n 'string1':'CHAR(1)', \n 'string2':'CHAR(1)'})\n\nMY_DF2\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:42+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 1.400 None None\n1 NaN None None\n2 1.000 None x\n3 NaN b x\n4 -4.000 a z\n5 -4.000 a z\n6 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-657487995","id":"20210302-002154_1817327535","dateCreated":"2021-01-09T19:46:06+0000","dateStarted":"2021-03-02T18:55:42+0000","dateFinished":"2021-03-02T18:55:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:81"},{"text":"%md\n\n.\nDrop rows with missing values.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Drop rows with missing values.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_593129573","id":"20210302-002154_339357054","dateCreated":"2021-01-09T19:47:32+0000","dateStarted":"2021-03-02T18:55:43+0000","dateFinished":"2021-03-02T18:55:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:82"},{"text":"%python\n\nMY_DF2.dropna(how='any')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 -4.000 a z\n1 -4.000 a z\n2 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1299400764","id":"20210302-002154_614486481","dateCreated":"2021-01-09T19:49:04+0000","dateStarted":"2021-03-02T18:55:44+0000","dateFinished":"2021-03-02T18:55:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:83"},{"text":"%md\n\n.\nDrop rows with missing numeric values.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Drop rows with missing numeric values.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1757290323","id":"20210302-002154_326246451","dateCreated":"2021-01-09T19:49:25+0000","dateStarted":"2021-03-02T18:55:44+0000","dateFinished":"2021-03-02T18:55:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:84"},{"text":"%python\n\nMY_DF2.dropna(how='any', subset=['numeric'])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 1.400 None None\n1 1.000 None x\n2 -4.000 a z\n3 -4.000 a z\n4 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-753852389","id":"20210302-002154_1851818685","dateCreated":"2021-01-09T19:49:59+0000","dateStarted":"2021-03-02T18:55:45+0000","dateFinished":"2021-03-02T18:55:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:85"},{"text":"%md\n\n.\nDrop rows where all columns values are missing.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Drop rows where all columns values are missing.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1281031959","id":"20210302-002154_729027538","dateCreated":"2021-01-09T19:50:17+0000","dateStarted":"2021-03-02T18:55:46+0000","dateFinished":"2021-03-02T18:55:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:86"},{"text":"%python\n\nMY_DF2.dropna(how='all')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 1.400 None None\n1 1.000 None x\n2 NaN b x\n3 -4.000 a z\n4 -4.000 a z\n5 5.432 a z\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_838459175","id":"20210302-002154_226292148","dateCreated":"2021-01-09T19:51:01+0000","dateStarted":"2021-03-02T18:55:46+0000","dateFinished":"2021-03-02T18:55:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:87"},{"text":"%md\n\n.\nUse the ***drop_duplicates*** function to drop duplicate rows.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the drop_duplicates function to drop duplicate rows.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-86323313","id":"20210302-002154_260909968","dateCreated":"2021-01-09T19:51:35+0000","dateStarted":"2021-03-02T18:55:47+0000","dateFinished":"2021-03-02T18:55:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:88"},{"text":"%python\n\nMY_DF2.drop_duplicates()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1 string2\n0 5.432 a z\n1 1.000 None x\n2 NaN b x\n3 -4.000 a z\n4 1.400 None None\n5 NaN None None\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1984728568","id":"20210302-002154_1695692214","dateCreated":"2021-01-09T19:53:09+0000","dateStarted":"2021-03-02T18:55:47+0000","dateFinished":"2021-03-02T18:55:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:89"},{"text":"%md\n\n.\nThe following command drops the specified column, *string2*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
The following command drops the specified column, string2.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_663223911","id":"20210302-002154_1861435461","dateCreated":"2021-01-09T19:53:25+0000","dateStarted":"2021-03-02T18:55:48+0000","dateFinished":"2021-03-02T18:55:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:90"},{"text":"%python\n\nMY_DF2.drop('string2')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" numeric string1\n0 1.400 None\n1 NaN None\n2 1.000 None\n3 NaN b\n4 -4.000 a\n5 -4.000 a\n6 5.432 a\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-964606928","id":"20210302-002154_73989502","dateCreated":"2021-01-09T19:54:20+0000","dateStarted":"2021-03-02T18:55:49+0000","dateFinished":"2021-03-02T18:55:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:91"},{"title":"Step 5: Use the split and KFold functions","text":"%md\n\nThis section demonstrates how to use the ***split*** and ***KFold*** functions using the digits data set after creating an OML DataFrame proxy object for the digits data set.\n\nThe ***KFold*** method splits the series data object randomly into k consecutive folds, or non-overlapping groups, for use with k-fold cross validation. The split method splits the series data object randomly into multiple sets. \n\nThe following tasks are covered in this section\n\n* Split the data into 80% and 20% samples\n* Perform stratification on the target column\n* Verify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split\n* Compute Hash on the target column\n* Verify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column\n* Split the data randomly into 4 consecutive folds using KFold function.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This section demonstrates how to use the split and KFold functions using the digits data set after creating an OML DataFrame proxy object for the digits data set.

\n

The KFold method splits the series data object randomly into k consecutive folds, or non-overlapping groups, for use with k-fold cross validation. The split method splits the series data object randomly into multiple sets.

\n

The following tasks are covered in this section

\n
    \n
  • Split the data into 80% and 20% samples
  • \n
  • Perform stratification on the target column
  • \n
  • Verify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split
  • \n
  • Compute Hash on the target column
  • \n
  • Verify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column
  • \n
  • Split the data randomly into 4 consecutive folds using KFold function.
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1346986672","id":"20210302-002154_1658820552","dateCreated":"2021-01-09T19:55:46+0000","dateStarted":"2021-03-02T18:55:50+0000","dateFinished":"2021-03-02T18:55:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:92"},{"text":"%md\n.\nFirst, use ***oml.sync*** to create a DataFrame proxy object in Python that represents the *DIGITS* table. The *DIGITS* table resides in the OMLUSER schema. All database users have been granted read access on the table.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
First, use oml.sync to create a DataFrame proxy object in Python that represents the DIGITS table. The DIGITS table resides in the OMLUSER schema. All database users have been granted read access on the table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1784811812","id":"20210302-002154_370454944","dateCreated":"2021-01-09T19:59:54+0000","dateStarted":"2021-03-02T18:55:50+0000","dateFinished":"2021-03-02T18:55:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:93"},{"text":"%python\n\nDIGITS = oml.sync(table = \"DIGITS\")\nprint(\"Shape: \", DIGITS.shape)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Shape: (1797, 65)\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1412958368","id":"20210302-002154_1653684815","dateCreated":"2021-01-09T20:05:33+0000","dateStarted":"2021-03-02T18:55:51+0000","dateFinished":"2021-03-02T18:55:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:94"},{"text":"%md\n\n.\nSplit the data set into samples of 80% and 20% size.","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split the data set into samples of 80% and 20% size.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1730647205","id":"20210302-002154_567388270","dateCreated":"2021-01-09T20:06:04+0000","dateStarted":"2021-03-02T18:55:52+0000","dateFinished":"2021-03-02T18:55:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:95"},{"text":"%python\n\nsplits = DIGITS.split(ratio=(.8, .2), use_hash = False)\nprint(\"Split lengths: \", [len(split) for split in splits])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [1441, 356]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1797239724","id":"20210302-002154_1068374603","dateCreated":"2021-01-09T20:06:36+0000","dateStarted":"2021-03-02T18:55:52+0000","dateFinished":"2021-03-02T18:55:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:96"},{"text":"%md\n\n.\nPerform stratified sampling on the column, target. Stratified sampling divides the data into different groups based on shared characteristics prior to sampling, ensuring that members from each subgroup is included in the analysis.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Perform stratified sampling on the column, target. Stratified sampling divides the data into different groups based on shared characteristics prior to sampling, ensuring that members from each subgroup is included in the analysis.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-960519283","id":"20210302-002154_201602479","dateCreated":"2021-01-09T20:09:38+0000","dateStarted":"2021-03-02T18:55:53+0000","dateFinished":"2021-03-02T18:55:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:97"},{"text":"%python\n\nsplits = DIGITS.split(strata_cols=['target'])\nprint(\"Split lengths: \", [split.shape for split in splits])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [(1285, 65), (512, 65)]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1534354093","id":"20210302-002154_1730950434","dateCreated":"2021-01-09T20:11:58+0000","dateStarted":"2021-03-02T18:55:54+0000","dateFinished":"2021-03-02T18:55:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:98"},{"text":"%md\n\n.\nVerify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Verify that the stratified sampling generates splits in which all of the different categories of digits (digits 0~9) are present in each split.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1534485274","id":"20210302-002154_1259500401","dateCreated":"2021-01-09T20:12:29+0000","dateStarted":"2021-03-02T18:55:55+0000","dateFinished":"2021-03-02T18:55:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:99"},{"text":"%python\n\nprint(\"Verify values: \", [split['target'].drop_duplicates().sort_values().pull() for split in splits])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Verify values: [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1879074333","id":"20210302-002154_69293082","dateCreated":"2021-01-09T20:13:01+0000","dateStarted":"2021-03-02T18:55:56+0000","dateFinished":"2021-03-02T18:55:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:100"},{"text":"%md\n\n.\nCompute hash on the target column.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Compute hash on the target column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_434417617","id":"20210302-002154_698720380","dateCreated":"2021-01-09T20:13:26+0000","dateStarted":"2021-03-02T18:55:56+0000","dateFinished":"2021-03-02T18:55:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:101"},{"text":"%python\n\nsplits = DIGITS.split(hash_cols=['target'])\nprint(\"Split lengths: \", [split.shape for split in splits])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [(899, 65), (898, 65)]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_733758321","id":"20210302-002154_791024975","dateCreated":"2021-01-09T20:14:30+0000","dateStarted":"2021-03-02T18:55:57+0000","dateFinished":"2021-03-02T18:55:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:102"},{"text":"%md\n\n.\nVerify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Verify that the different categories of digits (digits 0~9) are present in only one of the splits generated by hashing on the category column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-96363416","id":"20210302-002154_2012705313","dateCreated":"2021-01-09T20:14:49+0000","dateStarted":"2021-03-02T18:55:58+0000","dateFinished":"2021-03-02T18:55:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:103"},{"text":"%python\n\nprint(\"Verify values: \", [split['target'].drop_duplicates().sort_values().pull()\nfor split in splits])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Verify values: [[0, 1, 3, 5, 8], [2, 4, 6, 7, 9]]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1781636516","id":"20210302-002154_2046323009","dateCreated":"2021-01-09T20:17:08+0000","dateStarted":"2021-03-02T18:55:59+0000","dateFinished":"2021-03-02T18:55:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:104"},{"text":"%md\n\n.\nSplit the data randomly into 4 consecutive folds using the ***KFold*** function.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split the data randomly into 4 consecutive folds using the KFold function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-1389906427","id":"20210302-002154_2111471682","dateCreated":"2021-01-09T20:17:42+0000","dateStarted":"2021-03-02T18:55:59+0000","dateFinished":"2021-03-02T18:55:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:105"},{"text":"%python\n\nfolds = DIGITS.KFold(n_splits=4)\n\nprint(\"Split lengths: \", [(len(fold[0]), len(fold[1])) \nfor fold in folds])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:55:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Split lengths: [(1352, 445), (1336, 461), (1379, 418), (1325, 472)]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_33752787","id":"20210302-002154_1657372379","dateCreated":"2021-01-09T20:20:31+0000","dateStarted":"2021-03-02T18:56:00+0000","dateFinished":"2021-03-02T18:56:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:106"},{"title":"Try it yourself","text":"%md\nSplit the *digit* data set into four samples of 25% each.","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Split the digit data set into four samples of 25% each.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_154485003","id":"20210302-002154_786656985","dateCreated":"2021-01-09T20:21:10+0000","dateStarted":"2021-03-02T18:56:02+0000","dateFinished":"2021-03-02T18:56:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:107"},{"text":"%python\n\n# Insert code here\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644514465_-555226593","id":"20210302-002154_350992421","dateCreated":"2021-01-10T17:28:15+0000","dateStarted":"2021-03-02T18:56:02+0000","dateFinished":"2021-03-02T18:56:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:108"},{"title":"Step 6: Use the crosstab and pivot_table functions","text":"%md\n\nThis step shows how to use the ***crosstab*** method to perform cross-column analysis of an oml.DataFrame object and the ***pivot_table*** method to convert an oml.DataFrame to a spreadsheet-style pivot table.\n\nCross-tabulation is a statistical technique that finds an interdependent relationship between two columns of values. The ***crosstab*** method computes a cross-tabulation of two or more columns. By default, it computes a frequency table for the columns unless a column and an aggregation function have been passed to it.\n\nThe ***pivot_table*** function converts a data set into a pivot table. Due to the database 1000 column limit, pivot tables with more than 1000 columns are automatically truncated to display the categories with the most entries for each column value.\n\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to use the crosstab method to perform cross-column analysis of an oml.DataFrame object and the pivot_table method to convert an oml.DataFrame to a spreadsheet-style pivot table.

\n

Cross-tabulation is a statistical technique that finds an interdependent relationship between two columns of values. The crosstab method computes a cross-tabulation of two or more columns. By default, it computes a frequency table for the columns unless a column and an aggregation function have been passed to it.

\n

The pivot_table function converts a data set into a pivot table. Due to the database 1000 column limit, pivot tables with more than 1000 columns are automatically truncated to display the categories with the most entries for each column value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_307729424","id":"20210302-002154_1025172074","dateCreated":"2021-01-09T20:22:18+0000","dateStarted":"2021-03-02T18:56:03+0000","dateFinished":"2021-03-02T18:56:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:109"},{"text":"%md\n\n.\nCreate a temporary table *MY_DF4* using a demo data set. This data set reports on the speed and accuracy for a given task characterized by hand used (left or right) and gender (male, female, or not specified).\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create a temporary table MY_DF4 using a demo data set. This data set reports on the speed and accuracy for a given task characterized by hand used (left or right) and gender (male, female, or not specified).

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-184047682","id":"20210302-002154_336358580","dateCreated":"2021-01-09T20:25:31+0000","dateStarted":"2021-03-02T18:56:03+0000","dateFinished":"2021-03-02T18:56:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:110"},{"text":"%python\n\nmy_df4 = pd.DataFrame({'GENDER': ['M', 'M', 'F', 'M', 'F', 'M', 'F', 'F', None, 'F', 'M', 'F'],\n 'HAND': ['L', 'R', 'R', 'L', 'R', None, 'L', 'R', 'R', 'R', 'R', 'R'],\n 'SPEED': [40.5, 30.4, 60.8, 51.2, 54, 29.3, 34.1, 39.6, 46.4, 12, 25.3, 37.5],\n 'ACCURACY': [.92, .94, .87, .9, .85, .97, .96, .93, .89, .84, .91, .95]})\n\nMY_DF4 = oml.push(my_df4)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644514465_195023523","id":"20210302-002154_564940106","dateCreated":"2021-01-09T20:37:58+0000","dateStarted":"2021-03-02T18:56:04+0000","dateFinished":"2021-03-02T18:56:04+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:111"},{"text":"%md\n\n\n.\nUse the ***crosstab*** function to find the categories that the most entries belonged to. This example shows how to find the count of gender, and right-handed and left-handed persons in descending order in the *MY_DF4* dataframe. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:04+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the crosstab function to find the categories that the most entries belonged to. This example shows how to find the count of gender, and right-handed and left-handed persons in descending order in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1541896284","id":"20210302-002154_1750066122","dateCreated":"2021-01-09T20:38:31+0000","dateStarted":"2021-03-02T18:56:05+0000","dateFinished":"2021-03-02T18:56:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:112"},{"text":"%python\n\nMY_DF4.crosstab('GENDER', 'HAND').sort_values('count', ascending=False)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:05+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER HAND count\n0 F R 5\n1 M L 2\n2 M R 2\n3 F L 1\n4 M None 1\n5 None R 1\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_530059504","id":"20210302-002154_36459803","dateCreated":"2021-01-09T20:40:03+0000","dateStarted":"2021-03-02T18:56:05+0000","dateFinished":"2021-03-02T18:56:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:113"},{"text":"%md\n\n.\nUse the ***crosstab*** function to find the ratio of entries with different hand values for each gender and across entries in the *MY_DF4* dataframe.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the crosstab function to find the ratio of entries with different hand values for each gender and across entries in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_1310765423","id":"20210302-002154_1974661158","dateCreated":"2021-01-09T20:40:24+0000","dateStarted":"2021-03-02T18:56:06+0000","dateFinished":"2021-03-02T18:56:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:114"},{"text":"%python\n\nMY_DF4.crosstab('GENDER', 'HAND', pivot = True, margins = True, normalize = 0)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER count_(L) count_(R) count_(None)\n0 All 0.250000 0.666667 0.083333\n1 F 0.166667 0.833333 0.000000\n2 M 0.400000 0.400000 0.200000\n3 None 0.000000 1.000000 0.000000\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-273178728","id":"20210302-002154_917976519","dateCreated":"2021-01-09T20:40:48+0000","dateStarted":"2021-03-02T18:56:07+0000","dateFinished":"2021-03-02T18:56:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:115"},{"text":"%md\n\n. \nUse the ***pivot_table*** function to find the mean speed across all gender and hand combinations in the *MY_DF4* dataframe.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the pivot_table function to find the mean speed across all gender and hand combinations in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514465_-321868680","id":"20210302-002154_569495912","dateCreated":"2021-01-09T20:41:07+0000","dateStarted":"2021-03-02T18:56:08+0000","dateFinished":"2021-03-02T18:56:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:116"},{"text":"%python\n\nMY_DF4.pivot_table('GENDER', 'HAND', 'SPEED')","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER mean(SPEED)_(L) mean(SPEED)_(R) mean(SPEED)_(None)\n0 F 34.10 40.78 NaN\n1 M 45.85 27.85 29.3\n2 None NaN 46.40 NaN\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-1148753385","id":"20210302-002154_1091951808","dateCreated":"2021-01-09T20:41:58+0000","dateStarted":"2021-03-02T18:56:09+0000","dateFinished":"2021-03-02T18:56:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:117"},{"text":"%md\n\n.\nUse the ***pivot_table*** function to find the maximum and minimum speed for every gender and hand combination and across all combinations in the *MY_DF4* dataframe.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the pivot_table function to find the maximum and minimum speed for every gender and hand combination and across all combinations in the MY_DF4 dataframe.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_1967752799","id":"20210302-002154_591668996","dateCreated":"2021-01-09T20:42:07+0000","dateStarted":"2021-03-02T18:56:10+0000","dateFinished":"2021-03-02T18:56:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:118"},{"text":"%python\n\nMY_DF4.pivot_table('GENDER', 'HAND', 'SPEED', aggfunc = [oml.DataFrame.max, oml.DataFrame.min], margins = True)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" GENDER max(SPEED)_(L) ... min(SPEED)_(None) min(SPEED)_(All)\n0 All 51.2 ... 29.3 12.0\n1 F 34.1 ... NaN 12.0\n2 M 51.2 ... 29.3 25.3\n3 None NaN ... NaN 46.4\n\n[4 rows x 9 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_1484941095","id":"20210302-002154_751974310","dateCreated":"2021-01-09T20:44:33+0000","dateStarted":"2021-03-02T18:56:11+0000","dateFinished":"2021-03-02T18:56:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:119"},{"title":"Step 7: Use oml.boxplot and oml.hist","text":"%md\n\nOML4Py provides functions for rendering graphical displays of data. The ***oml.boxplot*** and ***oml.hist*** functions compute the statistics necessary to generate box and whisker plots or histograms in-database for scalability and performance. OML4Py uses the matplotlib library to render the output.\n\nThis example demonstrates how to use the ***oml.boxplot*** and ***oml.hist*** functions using the wine data set. The statistics supporting these plots are computed in the database, so transfer of data or client side memory limitations are avoided. As before, we sync the *WINE* table in the OMLUSER schema to a local OML DataFrame.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py provides functions for rendering graphical displays of data. The oml.boxplot and oml.hist functions compute the statistics necessary to generate box and whisker plots or histograms in-database for scalability and performance. OML4Py uses the matplotlib library to render the output.

\n

This example demonstrates how to use the oml.boxplot and oml.hist functions using the wine data set. The statistics supporting these plots are computed in the database, so transfer of data or client side memory limitations are avoided. As before, we sync the WINE table in the OMLUSER schema to a local OML DataFrame.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_1419080432","id":"20210302-002154_50842053","dateCreated":"2021-01-09T20:44:55+0000","dateStarted":"2021-03-02T18:56:12+0000","dateFinished":"2021-03-02T18:56:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:120"},{"title":"Create a boxplot","text":"%python\n\nimport matplotlib.pyplot as plt\n\nWINE = oml.sync(table = \"WINE\")\n\noml.graphics.boxplot(WINE[:,8:12], showmeans=True, meanline=True, patch_artist=True, labels=WINE.columns[8:12])\nplt.title('Distribution of Wine Attributes')\nplt.ylabel('Attribute Value')\nplt.show()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:12+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_1033271522","id":"20210302-002154_1813767865","dateCreated":"2021-01-09T20:48:53+0000","dateStarted":"2021-03-02T18:56:13+0000","dateFinished":"2021-03-02T18:56:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:121"},{"title":"Create a histogram","text":"%python\n\noml.graphics.hist(WINE['proline'], bins=10, color='red', linestyle='solid', edgecolor='black')\nplt.title('Proline content in Wine')\nplt.xlabel('proline content')\nplt.ylabel('# of wine instances')\nplt.show()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:18+0000","config":{"colWidth":6,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_1062533489","id":"20210302-002154_1852145721","dateCreated":"2021-01-09T20:50:07+0000","dateStarted":"2021-03-02T18:56:19+0000","dateFinished":"2021-03-02T18:56:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:122"},{"title":"Step 8: Create a persistent database table","text":"%md\n\nUse the ***oml.create*** function to create a persistent table in your database schema from data in your Python session. The ***oml.create*** function creates a table in the database schema and returns an oml.DataFrame object that is a proxy for the table. The proxy oml.DataFrame object has the same name as the table. The resulting table is available from both Python and SQL, even after the session ends - in contrast to the temporary table created when using the ***oml.push*** function\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the oml.create function to create a persistent table in your database schema from data in your Python session. The oml.create function creates a table in the database schema and returns an oml.DataFrame object that is a proxy for the table. The proxy oml.DataFrame object has the same name as the table. The resulting table is available from both Python and SQL, even after the session ends - in contrast to the temporary table created when using the oml.push function

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-657681706","id":"20210302-002154_1396176212","dateCreated":"2021-01-09T20:50:22+0000","dateStarted":"2021-03-02T18:56:21+0000","dateFinished":"2021-03-02T18:56:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:123"},{"text":"%python\n\ntry:\n oml.drop(table=\"IRIS\")\nexcept:\n pass\n\nIRIS = oml.create(iris_df, table=\"IRIS\")\nprint(\"Shape:\",IRIS.shape)\nz.show(IRIS.head(10))\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"1":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"SEPAL_LENGTH":"string","SEPAL_WIDTH":"string","PETAL_LENGTH":"string","PETAL_WIDTH":"string","SPECIES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Shape: (150, 5)\n"},{"type":"TABLE","data":"SEPAL_LENGTH\tSEPAL_WIDTH\tPETAL_LENGTH\tPETAL_WIDTH\tSPECIES\n4.6\t3.6\t1\t0.2\tsetosa\n5.1\t2.5\t3\t1.1\tversicolor\n6.0\t2.2\t4\t1.0\tversicolor\n5.8\t2.6\t4\t1.2\tversicolor\n5.5\t2.3\t4\t1.3\tversicolor\n5.5\t2.5\t4\t1.3\tversicolor\n6.1\t2.8\t4\t1.3\tversicolor\n5.7\t2.5\t5\t2.0\tvirginica\n6.0\t2.2\t5\t1.5\tvirginica\n6.3\t2.5\t5\t1.9\tvirginica\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-1612983924","id":"20210302-002154_1849902870","dateCreated":"2021-01-10T17:58:51+0000","dateStarted":"2021-03-02T18:56:22+0000","dateFinished":"2021-03-02T18:56:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:124"},{"title":"View persistent tables in the user schema","text":"%python\n\nlist(oml.sync(table=\".*\", regex_match=True).keys())","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['IRIS', 'TEST_DATA', 'WINE', 'DIGITS', 'IRIS_ID']\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-785033937","id":"20210302-002154_1566464585","dateCreated":"2021-01-14T20:38:36+0000","dateStarted":"2021-03-02T18:56:24+0000","dateFinished":"2021-03-02T18:56:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:125"},{"text":"%md\n\n.\nCreate a cursor object for the database connection using ***oml.cursor*** from **cx_Oracle**, then shows the SQL data types of the columns in table *IRIS*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create a cursor object for the database connection using oml.cursor from cx_Oracle, then shows the SQL data types of the columns in table IRIS.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-431744466","id":"20210302-002154_536374675","dateCreated":"2021-01-10T18:25:39+0000","dateStarted":"2021-03-02T18:56:25+0000","dateFinished":"2021-03-02T18:56:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:126"},{"text":"%python\n\ncr = oml.cursor()\n_ = cr.execute(\"select data_type from all_tab_columns where table_name ='IRIS'\")\ncr.fetchall()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"[('NUMBER',), ('NUMBER',), ('NUMBER',), ('NUMBER',), ('VARCHAR2',), ('NUMBER',), ('NUMBER',), ('VARCHAR2',), ('NUMBER',), ('NUMBER',)]\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-412455861","id":"20210302-002154_1930012269","dateCreated":"2021-01-10T18:11:03+0000","dateStarted":"2021-03-02T18:56:26+0000","dateFinished":"2021-03-02T18:56:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:127"},{"text":"%md\n\n.\nTo close the cursor, run the ***cr.close*** command.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
To close the cursor, run the cr.close command.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-1394980117","id":"20210302-002154_126231789","dateCreated":"2021-01-10T18:26:05+0000","dateStarted":"2021-03-02T18:56:27+0000","dateFinished":"2021-03-02T18:56:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:128"},{"text":"%python\n\ncr.close()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644514466_150462506","id":"20210302-002154_673557062","dateCreated":"2021-01-10T18:29:54+0000","dateStarted":"2021-03-02T18:56:27+0000","dateFinished":"2021-03-02T18:56:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:129"},{"text":"%md\n\n.\nUse the transparency layer function ***shape*** to view the shape, or number of rows and columns, of the *IRIS* table.","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the transparency layer function shape to view the shape, or number of rows and columns, of the IRIS table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-260621155","id":"20210302-002154_1953357348","dateCreated":"2021-01-10T18:36:16+0000","dateStarted":"2021-03-02T18:56:28+0000","dateFinished":"2021-03-02T18:56:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:130"},{"text":"%python\n\nIRIS.shape\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(150, 5)\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-345984812","id":"20210302-002154_1248404490","dateCreated":"2021-01-10T18:31:20+0000","dateStarted":"2021-03-02T18:56:29+0000","dateFinished":"2021-03-02T18:56:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:131"},{"text":"%md\n\n.\nUse the transparency layer function ***head*** to view the first three rows of the *IRIS* table.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the transparency layer function head to view the first three rows of the IRIS table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_971672904","id":"20210302-002154_2088681702","dateCreated":"2021-01-10T18:57:20+0000","dateStarted":"2021-03-02T18:56:29+0000","dateFinished":"2021-03-02T18:56:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:132"},{"text":"%python\n\nIRIS.head(n=3)","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH SPECIES\n0 4.6 3.6 1 0.2 setosa\n1 5.1 2.5 3 1.1 versicolor\n2 6.0 2.2 4 1.0 versicolor\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-1225561981","id":"20210302-002154_2039231157","dateCreated":"2021-01-10T18:38:40+0000","dateStarted":"2021-03-02T18:56:30+0000","dateFinished":"2021-03-02T18:56:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:133"},{"text":"%md\n\nUse ***describe*** to calculate descriptive statistics that summarize the central tendency, dispersion, and shape of the *IRIS* table in each numeric column.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use describe to calculate descriptive statistics that summarize the central tendency, dispersion, and shape of the IRIS table in each numeric column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_455999290","id":"20210302-002154_1661624158","dateCreated":"2021-01-10T18:35:55+0000","dateStarted":"2021-03-02T18:56:30+0000","dateFinished":"2021-03-02T18:56:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:134"},{"text":"%python\n\nIRIS.describe()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SEPAL_LENGTH SEPAL_WIDTH PETAL_LENGTH PETAL_WIDTH\ncount 150.000000 150.000000 150.000000 150.000000\nmean 5.843333 3.057333 3.758000 1.199333\nstd 0.828066 0.435866 1.765298 0.762238\nmin 4.300000 2.000000 1.000000 0.100000\n25% 5.100000 2.800000 1.600000 0.300000\n50% 5.800000 3.000000 4.350000 1.300000\n75% 6.400000 3.300000 5.100000 1.800000\nmax 7.900000 4.400000 6.900000 2.500000\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_-2064513617","id":"20210302-002154_1614835265","dateCreated":"2021-01-10T18:39:20+0000","dateStarted":"2021-03-02T18:56:31+0000","dateFinished":"2021-03-02T18:56:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:135"},{"text":"%md\n\n## End of Script\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614644514466_2024027376","id":"20210302-002154_1781787487","dateCreated":"2021-01-10T18:41:13+0000","dateStarted":"2021-03-02T18:56:32+0000","dateFinished":"2021-03-02T18:56:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:136"},{"text":"%md\n","user":"OMLUSER02","dateUpdated":"2021-03-02T18:56:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644514466_2002375162","id":"20210302-002154_1915905334","dateCreated":"2021-01-14T00:24:05+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:137"}],"name":"Lab 2: OML4Py Transparency Layer","id":"40624","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 3 OML4Py Algorithms.json b/machine-learning/labs/oml4py-live-labs/Lab 3 OML4Py Algorithms.json deleted file mode 100755 index 5817c66b..00000000 --- a/machine-learning/labs/oml4py-live-labs/Lab 3 OML4Py Algorithms.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nThis lab highlights a few of the machine learning algorithms available in OML4Py: generalized linear models, K-Means Clustering, partitioned models, and model explainability.\n\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

This lab highlights a few of the machine learning algorithms available in OML4Py: generalized linear models, K-Means Clustering, partitioned models, and model explainability.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1417875486","id":"20210125-170341_1581253205","dateCreated":"2021-01-12T21:14:01+0000","dateStarted":"2021-02-06T19:25:21+0000","dateFinished":"2021-02-06T19:25:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Step 1: Import libraries","text":"%python\n\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport oml\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_-889837504","id":"20210125-170341_802713054","dateCreated":"2021-01-15T20:10:00+0000","dateStarted":"2021-02-06T19:25:24+0000","dateFinished":"2021-02-06T19:25:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"title":"Step 2: Regression using GLM","text":"%md\n\nThis example shows how to predict numerical values using multiple regression. Given demographic, purchase, and affinity card data for a set of customers, predict the number of years a customer remains at the same residence, as found in column *YRS_RESIDENCE* - a continuous variable. We will use the Generalized Linear Model algorithm. All processing occurs inside Oracle Autonomous Database.\n\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This example shows how to predict numerical values using multiple regression. Given demographic, purchase, and affinity card data for a set of customers, predict the number of years a customer remains at the same residence, as found in column YRS_RESIDENCE - a continuous variable. We will use the Generalized Linear Model algorithm. All processing occurs inside Oracle Autonomous Database.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1711631848","id":"20210125-170341_725904389","dateCreated":"2021-01-12T21:16:55+0000","dateStarted":"2021-02-06T19:25:33+0000","dateFinished":"2021-02-06T19:25:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"text":"%md\n. \n\nPrepare the dataset combining the *CUSTOMERS* table from the SH schema with the *SUPPLEMENTARY_DEMOGRAPHICS* table. Note that we're illustrating how to use the query specification with ***oml.sync*** and selecting the columns we want to include. However, we could also have used ***oml.sync*** on the *CUSTOMERS* and *SUPPLEMENTARY_DEMOGRAPHICS* tables themselves, and perform column filtering in Python prior to the merge.\n\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Prepare the dataset combining the CUSTOMERS table from the SH schema with the SUPPLEMENTARY_DEMOGRAPHICS table. Note that we're illustrating how to use the query specification with oml.sync and selecting the columns we want to include. However, we could also have used oml.sync on the CUSTOMERS and SUPPLEMENTARY_DEMOGRAPHICS tables themselves, and perform column filtering in Python prior to the merge.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1598126648","id":"20210125-170341_833674782","dateCreated":"2021-01-12T21:18:26+0000","dateStarted":"2021-02-06T19:25:34+0000","dateFinished":"2021-02-06T19:25:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%python\n\nCUSTOMERS = oml.sync(query = 'SELECT CUST_ID, CUST_GENDER, CUST_MARITAL_STATUS, CUST_YEAR_OF_BIRTH, CUST_INCOME_LEVEL, CUST_CREDIT_LIMIT FROM SH.CUSTOMERS')\nDEMO_DF = oml.sync(query = \"\"\"SELECT CUST_ID, EDUCATION, AFFINITY_CARD, HOUSEHOLD_SIZE, OCCUPATION, YRS_RESIDENCE, Y_BOX_GAMES FROM SH.SUPPLEMENTARY_DEMOGRAPHICS\"\"\")\nCUST_DF = CUSTOMERS.merge(DEMO_DF, how = \"inner\", on = 'CUST_ID',suffixes = [\"\",\"\"])\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_-397328202","id":"20210125-170341_1874600151","dateCreated":"2021-01-12T21:18:53+0000","dateStarted":"2021-02-06T19:25:34+0000","dateFinished":"2021-02-06T19:25:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%md\n.\nDisplay the first few rows of table *CUST_DF*.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display the first few rows of table CUST_DF.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-78492484","id":"20210125-170341_57017955","dateCreated":"2021-01-12T21:19:09+0000","dateStarted":"2021-02-06T19:25:35+0000","dateFinished":"2021-02-06T19:25:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%python\n\nz.show(CUST_DF.head())\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","YRS_RESIDENCE":"string","Y_BOX_GAMES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\n100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\n102828\tF\tNeverM\t1967\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t1\tMachine\t4\t0\n101232\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\n100696\tM\tMarried\t1971\tF: 110,000 - 129,999\t7000\tProfsc\t1\t3\tProf.\t3\t0\n103948\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tCleric.\t4\t0\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1139514827","id":"20210125-170341_189425230","dateCreated":"2021-01-12T21:19:59+0000","dateStarted":"2021-02-06T19:25:36+0000","dateFinished":"2021-02-06T19:25:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%md\n\n.\nSplit data into randomly selected 60% sample for train and 40% test.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split data into randomly selected 60% sample for train and 40% test.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1126328353","id":"20210125-170341_1019021591","dateCreated":"2021-01-12T21:20:13+0000","dateStarted":"2021-02-06T19:25:37+0000","dateFinished":"2021-02-06T19:25:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%python\n\nTRAIN, TEST = CUST_DF.split(ratio = (0.6,0.4))\nTRAIN_X = TRAIN.drop('YRS_RESIDENCE')\nTRAIN_Y = TRAIN['YRS_RESIDENCE']\nTEST_X = TEST.drop('YRS_RESIDENCE')\nTEST_Y = TEST['YRS_RESIDENCE']\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_999347513","id":"20210125-170341_847854799","dateCreated":"2021-01-12T21:20:35+0000","dateStarted":"2021-02-06T19:25:37+0000","dateFinished":"2021-02-06T19:25:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%md\n\n.\nBuild a *GLM* regression model for predicting *YRS_RESIDENCE* using the function ***oml.glm***. \n\nThis method runs the in-database ***oml.glm*** algorithm in-database using the provided settings. The settings are supplied as key-value pairs. In this example we specify feature generation and feature selection. For more information, refer to the ***oml.glm*** help file.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Build a GLM regression model for predicting YRS_RESIDENCE using the function oml.glm.

\n

This method runs the in-database oml.glm algorithm in-database using the provided settings. The settings are supplied as key-value pairs. In this example we specify feature generation and feature selection. For more information, refer to the oml.glm help file.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1501168440","id":"20210125-170341_32469475","dateCreated":"2021-01-12T21:20:52+0000","dateStarted":"2021-02-06T19:25:38+0000","dateFinished":"2021-02-06T19:25:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"text":"%python\n\nhelp(oml.glm)\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on class glm in module oml.algo.glm:\n\nclass glm(oml.algo.model.odmModel)\n | glm(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Generalized Linear Models `_\n | \n | Builds Generalized Linear Models (GLM), which include and extend the class of \n | linear models (linear regression), to be used for classification or regression. \n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | Generalized linear models relax the restrictions on linear models, which are often \n | violated in practice. For example, binary (yes/no or 0/1) responses do not have same \n | variance across classes. This model uses a parametric modeling technique. Parametric \n | models make assumptions about the distribution of the data. When the assumptions are \n | met, parametric models can be more efficient than non-parametric models.\n | \n | :Attributes:\n | \n | **coef** : oml.DataFrame\n | \n | The coefficients of the GLM model, one for each predictor variable.\n | It includes the following components:\n | \n | - nonreference: The target value used as nonreference\n | - name: The attribute name\n | - level: The attribute value\n | - estimate: The estimated coefficient\n | \n | **fit_details**: oml.DataFrame\n | \n | The model fit details such as adjusted_r_square, error_mean_square and so on.\n | It includes the following components:\n | \n | - name: The fit detail name\n | - value: The fit detail value\n | \n | **deviance**: float\n | \n | Minus twice the maximized log-likelihood, up to a constant.\n | \n | **null_deviance**: float\n | \n | The deviance for the null (intercept only) model.\n | \n | **aic**: float\n | \n | Akaike information criterion.\n | \n | **rank**: integer\n | \n | The numeric rank of the fitted model.\n | \n | **df_residual**: float\n | \n | The residual degrees of freedom.\n | \n | **df_null**: float\n | \n | The residual degrees of freedom for the null model.\n | \n | **converged**: bool\n | \n | The indicator for whether the model converged.\n | \n | **nonreference**: int or str\n | \n | For logistic regression, the response values that represents success.\n | \n | Method resolution order:\n | glm\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of glm object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' or 'REGRESSION', 'CLASSIFICATION' (default)\n | Type of model mining functionality\n | model_name : string or None (default)\n | The name of an existing database Generalized Linear Model to create an oml.glm object from.\n | The specified database model is not dropped when the oml.glm object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Generalized Linear Model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Generalized Linear Model model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, ctx_settings=None)\n | Fits a GLM Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.glm object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.glm object is deleted\n | unless oml.glm object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None, confint=None, level=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | confint : bool, False (default)\n | A logical indicator for whether to produce confidence intervals.\n | for the predicted values.\n | level : float between 0 and 1 or None (default)\n | A numeric value within [0, 1] to use for the confidence level.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True for classification.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and optionally its probability and confidence\n | intervals. For a linear regression model, the results consist of a column\n | for the prediction and optionally its confidence intervals.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | residuals(self, x, y)\n | Return the deviance residuals, which includes the following components:\n | - deviance: The deviance residual\n | - pearson: The Pearson residual\n | - response: The residual of the working response.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | \n | Return: oml.DataFrame\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1972926792","id":"20210125-170341_1506746246","dateCreated":"2021-01-15T20:35:20+0000","dateStarted":"2021-02-06T19:25:39+0000","dateFinished":"2021-02-06T19:25:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%python\n\nsettings = {'GLMS_FTR_GENERATION': 'dbms_data_mining.GLMS_FTR_GENERATION_ENABLE', \n 'GLMS_FTR_SELECTION':'dbms_data_mining.GLMS_FTR_SELECTION_ENABLE'}\n\ntry:\n oml.drop(model = 'GLM_REGRESSION_MODEL')\nexcept:\n print('No such model')\n \nglm_mod = oml.glm(\"regression\", **settings)\nglm_mod.fit(TRAIN_X, TRAIN_Y, model_name = 'GLM_REGRESSION_MODEL', case_id = 'CUST_ID')\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nModel Name: GLM_REGRESSION_MODEL\n\nModel Owner: OMLUSER03\n\nAlgorithm Name: Generalized Linear Model\n\nMining Function: REGRESSION\n\nTarget: YRS_RESIDENCE\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_GENERALIZED_LINEAR_MODEL\n1 GLMS_CONF_LEVEL .95\n2 GLMS_FTR_GENERATION GLMS_FTR_GENERATION_ENABLE\n3 GLMS_FTR_SELECTION GLMS_FTR_SELECTION_ENABLE\n4 GLMS_FTR_SEL_CRIT GLMS_FTR_SEL_ALPHA_INV\n5 GLMS_MAX_FEATURES 1000\n6 GLMS_PRUNE_MODEL GLMS_PRUNE_MODEL_ENABLE\n7 GLMS_SELECT_BLOCK GLMS_SELECT_BLOCK_DISABLE\n8 ODMS_DETAILS ODMS_ENABLE\n9 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n10 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n11 PREP_AUTO ON\n\nComputed Settings: \n setting name setting value\n0 GLMS_CONV_TOLERANCE .0000050000000000000004\n1 GLMS_NUM_ITERATIONS 30\n2 GLMS_RIDGE_REGRESSION GLMS_RIDGE_REG_DISABLE\n\nGlobal Statistics: \n attribute name attribute value\n0 ADJUSTED_R_SQUARE 0.509374\n1 AIC 1502.8\n2 COEFF_VAR 32.7766\n3 CONVERGED YES\n4 CORRECTED_TOTAL_DF 2708\n5 CORRECTED_TOT_SS 9534.73\n6 DEPENDENT_MEAN 4.00997\n7 ERROR_DF 2687\n8 ERROR_MEAN_SQUARE 1.72747\n9 ERROR_SUM_SQUARES 4641.71\n10 F_VALUE 134.88\n11 GMSEP 1.74162\n12 HOCKING_SP 0.000643\n13 J_P 1.7415\n14 MODEL_DF 21\n15 MODEL_F_P_VALUE 0\n16 MODEL_MEAN_SQUARE 233.001\n17 MODEL_SUM_SQUARES 4893.02\n18 NUM_PARAMS 22\n19 NUM_ROWS 2709\n20 ROOT_MEAN_SQ 1.31433\n21 R_SQ 0.513179\n22 SBIC 1632.7\n23 VALID_COVARIANCE_MATRIX YES\n\nAttributes: \nAFFINITY_CARD\nCUST_GENDER\nCUST_INCOME_LEVEL\nCUST_MARITAL_STATUS\nCUST_YEAR_OF_BIRTH\nEDUCATION\nHOUSEHOLD_SIZE\nOCCUPATION\nY_BOX_GAMES\n\nPartition: NO\n\nCoefficients: \n\n name level estimate\n0 (Intercept) None 4.620710\n1 AFFINITY_CARD None 127.971869\n2 CUST_GENDER_F None -0.402099\n3 CUST_INCOME_LEVEL_A: Below 30,000 None 0.555277\n4 CUST_INCOME_LEVEL_F: 110,000 - 129,999 None -0.267428\n5 CUST_MARITAL_STATUS_Divorc. None 124.413914\n6 CUST_MARITAL_STATUS_Widowed None 0.342010\n7 CUST_YEAR_OF_BIRTH*AFFINITY_CARD None -0.065059\n8 CUST_YEAR_OF_BIRTH*CUST_MARITAL_STATUS_Divorc. None -0.063288\n9 CUST_YEAR_OF_BIRTH*CUST_YEAR_OF_BIRTH*OCCUPATI... None 0.001535\n10 CUST_YEAR_OF_BIRTH*OCCUPATION_Exec. None -6.056116\n11 EDUCATION_< Bach. None -0.228723\n12 EDUCATION_PhD None 0.729161\n13 EDUCATION_Profsc None 0.528395\n14 HOUSEHOLD_SIZE_4-5 None -0.355725\n15 OCCUPATION_Crafts*EDUCATION_Masters None -4.353282\n16 OCCUPATION_Exec. None 5974.114331\n17 OCCUPATION_Handler None -0.506399\n18 OCCUPATION_House-s None -1.028326\n19 OCCUPATION_Other None -0.360957\n20 OCCUPATION_Transp. None 0.373321\n21 Y_BOX_GAMES None -1.946874\n\nFit Details: \n\n name value\n0 ADJUSTED_R_SQUARE 0.509374\n1 AIC 1502.803345\n2 COEFF_VAR 32.776625\n3 CORRECTED_TOTAL_DF 2708.000000\n4 CORRECTED_TOT_SS 9534.730897\n5 DEPENDENT_MEAN 4.009967\n6 ERROR_DF 2687.000000\n7 ERROR_MEAN_SQUARE 1.727468\n8 ERROR_SUM_SQUARES 4641.706551\n9 F_VALUE 134.880158\n10 GMSEP 1.741617\n11 HOCKING_SP 0.000643\n12 J_P 1.741497\n13 MODEL_CONVERGED 1.000000\n14 MODEL_DF 21.000000\n15 MODEL_F_P_VALUE 0.000000\n16 MODEL_MEAN_SQUARE 233.001159\n17 MODEL_SUM_SQUARES 4893.024346\n18 NUM_PARAMS 22.000000\n19 NUM_ROWS 2709.000000\n20 ROOT_MEAN_SQ 1.314332\n21 R_SQ 0.513179\n22 SBIC 1632.698711\n23 VALID_COVARIANCE_MATRIX 1.000000\n\nRank: \n\n22\n\nDeviance: \n\n4641.706551\n\nAIC: \n\n1503\n\nNull Deviance: \n\n9534.730897\n\nDF Residual: \n\n2687.0\n\nDF Null: \n\n2708.0\n\nConverged: \n\nTrue\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1191108135","id":"20210125-170341_225333273","dateCreated":"2021-01-12T21:21:24+0000","dateStarted":"2021-02-06T19:25:39+0000","dateFinished":"2021-02-06T19:25:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%md\n.\n\nDisplay model fit details to understand the model's key statistics. Locate the values of Root Mean Square Error *ROOT_MEAN_SQ* and R-squared *R_SQ* from the output. RMSE and R-squared are used to evaluate baseline performance of the model.\n\nRMSE is a measure of the differences between values predicted by a model and the values observed. A good model should have a low RMSE. But at the same time, a model with very low RMSE has the potential to overfit.\n\nR-Squared is a statistical measure that represents the goodness of fit of a regression model. The ideal value for R-squared is 1. The closer the value of R-squared is to 1, the better the model fit. For example, if the R-squared of a model is 0.50, then only about half of the observed variation can be explained by the model's inputs.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Display model fit details to understand the model's key statistics. Locate the values of Root Mean Square Error ROOT_MEAN_SQ and R-squared R_SQ from the output. RMSE and R-squared are used to evaluate baseline performance of the model.

\n

RMSE is a measure of the differences between values predicted by a model and the values observed. A good model should have a low RMSE. But at the same time, a model with very low RMSE has the potential to overfit.

\n

R-Squared is a statistical measure that represents the goodness of fit of a regression model. The ideal value for R-squared is 1. The closer the value of R-squared is to 1, the better the model fit. For example, if the R-squared of a model is 0.50, then only about half of the observed variation can be explained by the model's inputs.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-975928578","id":"20210125-170341_1987738175","dateCreated":"2021-01-12T21:21:40+0000","dateStarted":"2021-02-06T19:25:45+0000","dateFinished":"2021-02-06T19:25:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"text":"%python\n\nz.show(glm_mod.fit_details)\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"name":"string","value":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"name\tvalue\nADJUSTED_R_SQUARE\t0.5093743672999828\nAIC\t1502.8033446013962\nCOEFF_VAR\t32.77662502584026\nCORRECTED_TOTAL_DF\t2708.0\nCORRECTED_TOT_SS\t9534.730897009955\nDEPENDENT_MEAN\t4.009966777408638\nERROR_DF\t2687.0\nERROR_MEAN_SQUARE\t1.727468012913557\nERROR_SUM_SQUARES\t4641.706550698727\nF_VALUE\t134.8801584784037\nGMSEP\t1.7416165687323748\nHOCKING_SP\t0.0006431377561107807\nJ_P\t1.7414969151963544\nMODEL_CONVERGED\t1.0\nMODEL_DF\t21.0\nMODEL_F_P_VALUE\t0.0\nMODEL_MEAN_SQUARE\t233.0011593481537\nMODEL_SUM_SQUARES\t4893.024346311227\nNUM_PARAMS\t22.0\nNUM_ROWS\t2709.0\nROOT_MEAN_SQ\t1.314331774292\nR_SQ\t0.5131790712463271\nSBIC\t1632.6987111272683\nVALID_COVARIANCE_MATRIX\t1.0\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1040860550","id":"20210125-170341_207650170","dateCreated":"2021-01-12T21:22:07+0000","dateStarted":"2021-02-06T19:25:45+0000","dateFinished":"2021-02-06T19:25:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"text":"%md\n\n.\nDisplay model coefficients to estimate the relationship between the predictor and response variables.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display model coefficients to estimate the relationship between the predictor and response variables.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1140607582","id":"20210125-170341_762470495","dateCreated":"2021-01-12T21:22:24+0000","dateStarted":"2021-02-06T19:25:46+0000","dateFinished":"2021-02-06T19:25:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%python\n\nglm_mod.coef\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" name level estimate\n0 (Intercept) None 4.620710\n1 Y_BOX_GAMES None -1.946874\n2 AFFINITY_CARD None 127.971869\n3 CUST_GENDER_F None -0.402099\n4 EDUCATION_< Bach. None -0.228723\n5 OCCUPATION_Exec. None 5974.114331\n6 OCCUPATION_Other None -0.360957\n7 CUST_MARITAL_STATUS_Divorc. None 124.413914\n8 OCCUPATION_Handler None -0.506399\n9 EDUCATION_Profsc None 0.528395\n10 CUST_INCOME_LEVEL_F: 110,000 - 129,999 None -0.267428\n11 OCCUPATION_Transp. None 0.373321\n12 CUST_MARITAL_STATUS_Widowed None 0.342010\n13 CUST_INCOME_LEVEL_A: Below 30,000 None 0.555277\n14 HOUSEHOLD_SIZE_4-5 None -0.355725\n15 EDUCATION_PhD None 0.729161\n16 OCCUPATION_House-s None -1.028326\n17 CUST_YEAR_OF_BIRTH*AFFINITY_CARD None -0.065059\n18 CUST_YEAR_OF_BIRTH*OCCUPATION_Exec. None -6.056116\n19 CUST_YEAR_OF_BIRTH*CUST_MARITAL_STATUS_Divorc. None -0.063288\n20 OCCUPATION_Crafts*EDUCATION_Masters None -4.353282\n21 CUST_YEAR_OF_BIRTH*CUST_YEAR_OF_BIRTH*OCCUPATI... None 0.001535\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_7947357","id":"20210125-170341_1390613360","dateCreated":"2021-01-12T21:22:43+0000","dateStarted":"2021-02-06T19:25:47+0000","dateFinished":"2021-02-06T19:25:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%md\n\n.\nMake predictions using test data and display results.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Make predictions using test data and display results.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-397940908","id":"20210125-170341_2012033169","dateCreated":"2021-01-12T21:22:56+0000","dateStarted":"2021-02-06T19:25:47+0000","dateFinished":"2021-02-06T19:25:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"text":"%python\n\nRES_DF = glm_mod.predict(TEST.drop('YRS_RESIDENCE'), supplemental_cols = TEST)\n\nz.show(RES_DF[['PREDICTION', 'YRS_RESIDENCE'] + RES_DF.columns])\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PREDICTION":"string","YRS_RESIDENCE":"string","CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","Y_BOX_GAMES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"PREDICTION\tYRS_RESIDENCE\tCUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\tPREDICTION\n4.27143563955029\t2\t100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4.27143563955029\n2.0841569384336807\t2\t101232\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n5.496280188854982\t5\t103791\tM\tDivorc.\t1952\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tProf.\t5\t0\t5.496280188854982\n2.4451138050702506\t2\t102308\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tProf.\t2\t1\t2.4451138050702506\n4.817396005119761\t4\t100558\tM\tMarried\t1964\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t3\tMachine\t4\t0\t4.817396005119761\n2.0937805299594032\t4\t103401\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tCrafts\t4\t1\t2.0937805299594032\n6.188849878882095\t0\t102740\tF\tDivorc.\t1929\tK: 250,000 - 299,999\t15000\t10th\t0\t2\tOther\t0\t0\t6.188849878882095\n4.167230377040099\t3\t103829\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t9+\tMachine\t3\t0\t4.167230377040099\n3.2022317747854605\t3\t104077\tM\tNeverM\t1975\tL: 300,000 and above\t9000\tProfsc\t0\t2\tProf.\t3\t1\t3.2022317747854605\n5.336590639783026\t5\t101798\tM\tMarried\t1960\tG: 130,000 - 149,999\t15000\tHS-grad\t1\t3\tExec.\t5\t0\t5.336590639783026\n4.39198747959714\t5\t101315\tM\tMarried\t1954\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t3\tCrafts\t5\t0\t4.39198747959714\n3.9898880518921436\t1\t101297\tF\tSepar.\t1960\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tSales\t1\t0\t3.9898880518921436\n4.735306248853703\t4\t100019\tM\tMarried\t1971\tE: 90,000 - 109,999\t7000\tAssoc-V\t1\t3\tTransp.\t4\t0\t4.735306248853703\n4.549017533704358\t5\t102893\tF\tDivorc.\t1957\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t9+\tCleric.\t5\t0\t4.549017533704358\n4.620710275658258\t4\t104459\tM\tMarried\t1963\tL: 300,000 and above\t11000\t7th-8th\t0\t3\tSales\t4\t0\t4.620710275658258\n4.523623312122254\t5\t102894\tM\tDivorc.\t1968\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t2\tExec.\t5\t0\t4.523623312122254\n3.590225709481263\t5\t102561\tF\tSepar.\t1954\tF: 110,000 - 129,999\t9000\t10th\t0\t9+\tOther\t5\t0\t3.590225709481263\n4.620710275658258\t3\t103302\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4.620710275658258\n4.687278710880975\t5\t101044\tM\tMarried\t1966\tL: 300,000 and above\t11000\tMasters\t1\t3\tProf.\t5\t0\t4.687278710880975\n4.620710275658258\t4\t103065\tM\tNeverM\t1963\tI: 170,000 - 189,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4.620710275658258\n2.6738366011313683\t4\t101724\tM\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tMachine\t4\t1\t2.6738366011313683\n4.42704412240343\t3\t102815\tM\tMarried\t1970\tL: 300,000 and above\t7000\tHS-grad\t1\t3\tSales\t3\t0\t4.42704412240343\n2.271737173426372\t1\t101956\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tProf.\t1\t1\t2.271737173426372\n4.492102769522802\t3\t103778\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tProf.\t3\t0\t4.492102769522802\n4.198321326342324\t3\t101170\tM\tMarried\t1970\tL: 300,000 and above\t7000\t< Bach.\t1\t3\tProf.\t3\t0\t4.198321326342324\n5.2728065349554925\t5\t103583\tM\tMarried\t1957\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tMachine\t5\t0\t5.2728065349554925\n4.6450993739992725\t5\t103746\tF\tMarried\t1955\tD: 70,000 - 89,999\t9000\tHS-grad\t1\t4-5\tCleric.\t5\t0\t4.6450993739992725\n1.6872893498752615\t2\t102241\tF\tMarried\t1981\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t4-5\tSales\t2\t1\t1.6872893498752615\n5.2728065349554925\t5\t100577\tM\tMarried\t1957\tH: 150,000 - 169,999\t7000\tBach.\t1\t3\tMachine\t5\t0\t5.2728065349554925\n2.6738366011313683\t3\t101739\tM\tMarried\t1974\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tSales\t3\t1\t2.6738366011313683\n4.381524184917254\t5\t103878\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t15000\t< Bach.\t0\t9+\tProtec.\t5\t0\t4.381524184917254\n4.39198747959714\t2\t103391\tM\tNeverM\t1970\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tSales\t2\t0\t4.39198747959714\n4.620710275658258\t6\t102644\tM\tNeverM\t1967\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4.620710275658258\n4.144859466996493\t4\t103146\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4.144859466996493\n4.398011812104102\t3\t103000\tF\tDivorc.\t1963\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tCleric.\t3\t0\t4.398011812104102\n1.7755861055298254\t2\t103704\tF\tNeverM\t1982\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t9+\tSales\t2\t1\t1.7755861055298254\n4.2597534090216875\t6\t103767\tM\tMarried\t1947\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4.2597534090216875\n4.114311595632834\t5\t104253\tM\tMarried\t1973\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tHandler\t5\t0\t4.114311595632834\n4.39198747959714\t5\t103069\tM\tMarried\t1965\tH: 150,000 - 169,999\t11000\t< Bach.\t0\t3\tTechSup\t5\t0\t4.39198747959714\n5.239259680252559\t10\t102127\tM\tMarried\t1954\tI: 170,000 - 189,999\t9000\t< Bach.\t1\t3\tSales\t10\t0\t5.239259680252559\n2.3128797344947984\t1\t103840\tM\tNeverM\t1984\tL: 300,000 and above\t9000\t11th\t0\t1\tOther\t1\t1\t2.3128797344947984\n4.9139664446556\t7\t101679\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\t< Bach.\t1\t3\tCrafts\t7\t0\t4.9139664446556\n8.733756193388217\t7\t102075\tM\tMarried\t1936\tD: 70,000 - 89,999\t3000\tHS-grad\t1\t3\tExec.\t7\t0\t8.733756193388217\n2.6738366011313683\t2\t102688\tM\tMarried\t1976\tB: 30,000 - 49,999\t1500\tBach.\t0\t3\tTechSup\t2\t1\t2.6738366011313683\n5.594278222262773\t7\t103732\tF\tNeverM\t1954\tB: 30,000 - 49,999\t3000\tProfsc\t1\t2\tProf.\t7\t0\t5.594278222262773\n2.449734835758136\t4\t101640\tM\tNeverM\t1974\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tExec.\t4\t1\t2.449734835758136\n3.9898880518921436\t5\t102373\tF\tSepar.\t1952\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tSales\t5\t0\t3.9898880518921436\n2.71629578498505\t3\t100468\tM\tNeverM\t1978\tH: 150,000 - 169,999\t1500\tBach.\t0\t2\tExec.\t3\t1\t2.71629578498505\n5.2728065349554925\t7\t104278\tM\tMarried\t1957\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tSales\t7\t0\t5.2728065349554925\n4.234703732005073\t4\t100838\tM\tMarried\t1973\tD: 70,000 - 89,999\t5000\tBach.\t1\t3\tExec.\t4\t0\t4.234703732005073\n4.620710275658258\t5\t100986\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.765308253166815\t4\t103315\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tTransp.\t4\t0\t4.765308253166815\n2.4451138050702506\t3\t104171\tM\tMarried\t1975\tJ: 190,000 - 249,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t1\t2.4451138050702506\n2.2891380338460294\t3\t101584\tF\tNeverM\t1976\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tExec.\t3\t1\t2.2891380338460294\n4.557161416642202\t4\t100176\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tProtec.\t4\t0\t4.557161416642202\n3.501928953826699\t3\t103870\tF\tMarried\t1969\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t4-5\tOther\t3\t0\t3.501928953826699\n2.3128797344947984\t2\t104218\tM\tNeverM\t1982\tE: 90,000 - 109,999\t9000\tAssoc-V\t0\t2\tOther\t2\t1\t2.3128797344947984\n4.620710275658258\t6\t100290\tM\tMarried\t1925\tC: 50,000 - 69,999\t5000\t7th-8th\t0\t3\tFarming\t6\t0\t4.620710275658258\n4.620710275658258\t9\t104160\tM\tNeverM\t1961\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tFarming\t9\t0\t4.620710275658258\n2.167437921105945\t1\t103770\tM\tNeverM\t1985\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tHandler\t1\t1\t2.167437921105945\n6.019963445685235\t6\t102289\tM\tMarried\t1942\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCleric.\t6\t0\t6.019963445685235\n4.294897496722115\t4\t100249\tF\tNeverM\t1966\tJ: 190,000 - 249,999\t15000\tMasters\t0\t1\tExec.\t4\t0\t4.294897496722115\n4.39198747959714\t6\t101036\tM\tMarried\t1945\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t3\tTechSup\t6\t0\t4.39198747959714\n5.8247875043270625\t6\t100827\tM\tMarried\t1945\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tCleric.\t6\t0\t5.8247875043270625\n2.6738366011313683\t2\t102213\tM\tNeverM\t1975\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t6-8\tMachine\t2\t1\t2.6738366011313683\n4.887175654444039\t2\t102590\tF\tWidowed\t1962\tA: Below 30,000\t1500\t< Bach.\t0\t2\t?\t2\t0\t4.887175654444039\n4.620710275658258\t4\t101034\tM\tNeverM\t1966\tH: 150,000 - 169,999\t10000\tMasters\t0\t9+\tProf.\t4\t0\t4.620710275658258\n4.2597534090216875\t6\t103460\tM\tMarried\t1945\tG: 130,000 - 149,999\t5000\tBach.\t0\t3\tOther\t6\t0\t4.2597534090216875\n2.043014377365254\t0\t101617\tF\tNeverM\t1981\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t1\t?\t0\t1\t2.043014377365254\n4.005980935943626\t3\t101968\tM\tMarried\t1973\tI: 170,000 - 189,999\t1500\t< Bach.\t1\t3\tExec.\t3\t0\t4.005980935943626\n4.144859466996493\t4\t100031\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4.144859466996493\n3.862885820463269\t7\t102742\tF\tMarried\t1950\tG: 130,000 - 149,999\t5000\tBach.\t0\t4-5\tCleric.\t7\t0\t3.862885820463269\n4.620710275658258\t4\t104139\tM\tNeverM\t1966\tH: 150,000 - 169,999\t3000\tMasters\t0\t9+\tProf.\t4\t0\t4.620710275658258\n5.116551671193591\t6\t104313\tM\tDivorc.\t1958\tE: 90,000 - 109,999\t1500\tBach.\t0\t2\tProf.\t6\t0\t5.116551671193591\n4.218610847953261\t3\t102495\tF\tNeverM\t1973\tB: 30,000 - 49,999\t5000\tMasters\t0\t2\tCleric.\t3\t0\t4.218610847953261\n4.03103061296057\t4\t101624\tM\tNeverM\t1966\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t1\tOther\t4\t0\t4.03103061296057\n5.727061623918985\t6\t100771\tF\tDivorc.\t1942\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tCleric.\t6\t0\t5.727061623918985\n1.9107803067898017\t1\t101921\tF\tNeverM\t1978\tL: 300,000 and above\t11000\tBach.\t0\t2\tOther\t1\t1\t1.9107803067898017\n4.218610847953261\t3\t100551\tF\tMabsent\t1964\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tSales\t3\t0\t4.218610847953261\n2.4451138050702506\t2\t103676\tM\tNeverM\t1979\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t2\tSales\t2\t1\t2.4451138050702506\n1.9000096492705163\t3\t103245\tM\tMarried\t1978\tF: 110,000 - 129,999\t1500\tAssoc-A\t0\t3\tHandler\t3\t1\t1.9000096492705163\n4.218610847953261\t4\t101868\tF\tNeverM\t1960\tC: 50,000 - 69,999\t3000\t9th\t0\t1\tSales\t4\t0\t4.218610847953261\n3.8576539813166915\t4\t100893\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tOther\t4\t0\t3.8576539813166915\n2.004308901590943\t3\t103628\tF\tNeverM\t1974\tF: 110,000 - 129,999\t5000\tBach.\t0\t1\tCleric.\t3\t1\t2.004308901590943\n5.663158417671838\t5\t101063\tM\tMarried\t1951\tE: 90,000 - 109,999\t10000\tHS-grad\t1\t3\tProf.\t5\t0\t5.663158417671838\n1.7755861055298254\t2\t100774\tF\tNeverM\t1983\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t1.7755861055298254\n2.6738366011313683\t0\t101665\tM\tNeverM\t1985\tH: 150,000 - 169,999\t5000\t11th\t0\t1\tProtec.\t0\t1\t2.6738366011313683\n2.6738366011313683\t2\t103015\tM\tNeverM\t1979\tK: 250,000 - 299,999\t9000\tBach.\t0\t1\t?\t2\t1\t2.6738366011313683\n4.620710275658258\t3\t100588\tM\tMarried\t1969\tE: 90,000 - 109,999\t5000\tBach.\t0\t3\tProf.\t3\t0\t4.620710275658258\n4.620710275658258\t3\t101274\tM\tMarried\t1969\tK: 250,000 - 299,999\t7000\t11th\t0\t3\tMachine\t3\t0\t4.620710275658258\n2.167437921105945\t2\t102199\tM\tNeverM\t1984\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.267704126988065\t5\t101413\tF\tNeverM\t1955\tH: 150,000 - 169,999\t5000\t< Bach.\t1\t2\tExec.\t5\t0\t5.267704126988065\n4.39198747959714\t5\t100279\tM\tMarried\t1965\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t3\tTechSup\t5\t0\t4.39198747959714\n2.6738366011313683\t3\t103820\tM\tNeverM\t1977\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tCrafts\t3\t1\t2.6738366011313683\n4.752337358000361\t4\t102961\tM\tMarried\t1965\tK: 250,000 - 299,999\t9000\tBach.\t1\t3\tSales\t4\t0\t4.752337358000361\n5.759728857207676\t6\t103323\tM\tMarried\t1946\tL: 300,000 and above\t15000\t< Bach.\t1\t3\tTechSup\t6\t0\t5.759728857207676\n4.70521916748571\t4\t102329\tF\tWidowed\t1929\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tTransp.\t4\t0\t4.70521916748571\n1.7653384934009486\t1\t100742\tF\tNeverM\t1985\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t1\t1\t1.7653384934009486\n5.598099770552437\t5\t101846\tM\tMarried\t1952\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tCleric.\t5\t0\t5.598099770552437\n1.5550552792998091\t3\t103685\tF\tMarried\t1974\tG: 130,000 - 149,999\t5000\t7th-8th\t0\t4-5\tOther\t3\t1\t1.5550552792998091\n4.39198747959714\t6\t102226\tM\tMarried\t1969\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tFarming\t6\t0\t4.39198747959714\n4.218610847953261\t3\t101847\tF\tSepar.\t1958\tH: 150,000 - 169,999\t7000\t11th\t0\t9+\tCleric.\t3\t0\t4.218610847953261\n4.851395514443539\t5\t103083\tM\tMarried\t1965\tL: 300,000 and above\t7000\tBach.\t1\t3\tExec.\t5\t0\t4.851395514443539\n4.647100141957708\t3\t102631\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tExec.\t3\t0\t4.647100141957708\n5.283163195678753\t5\t100154\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t9+\tExec.\t5\t0\t5.283163195678753\n2.4451138050702506\t2\t104008\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n1.682057510728684\t1\t102478\tF\tNeverM\t1984\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n3.9511825761178327\t2\t101302\tF\tNeverM\t1965\tF: 110,000 - 129,999\t10000\tBach.\t0\t2\tCrafts\t2\t0\t3.9511825761178327\n2.004308901590943\t3\t100622\tF\tNeverM\t1974\tF: 110,000 - 129,999\t7000\tBach.\t0\t1\tCleric.\t3\t1\t2.004308901590943\n4.9940310492279325\t4\t100844\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tMasters\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n4.620710275658258\t6\t101844\tM\tMarried\t1947\tD: 70,000 - 89,999\t1500\t7th-8th\t0\t3\tCrafts\t6\t0\t4.620710275658258\n1.9107803067898017\t1\t101478\tF\tMarried\t1979\tC: 50,000 - 69,999\t3000\t1st-4th\t0\t1\tOther\t1\t1\t1.9107803067898017\n2.004308901590943\t1\t102178\tF\tNeverM\t1976\tF: 110,000 - 129,999\t7000\t5th-6th\t0\t1\tSales\t1\t1\t2.004308901590943\n4.2597534090216875\t3\t100761\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tAssoc-A\t0\t6-8\tOther\t3\t0\t4.2597534090216875\n1.7755861055298254\t2\t101481\tF\tNeverM\t1979\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tCleric.\t2\t1\t1.7755861055298254\n4.618113321060264\t5\t101304\tF\tDivorc.\t1960\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t9+\tExec.\t5\t0\t4.618113321060264\n6.002584879070184\t3\t101799\tM\tDivorc.\t1944\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tProf.\t3\t0\t6.002584879070184\n4.6921367740078495\t6\t100015\tM\tSepar.\t1959\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tExec.\t6\t0\t4.6921367740078495\n6.263821706272211\t6\t100546\tF\tWidowed\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tExec.\t6\t0\t6.263821706272211\n4.875260968881278\t6\t100887\tM\tMarried\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t1\t3\tCrafts\t6\t0\t4.875260968881278\n5.3473331062575795\t6\t103913\tF\tDivorc.\t1948\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tSales\t6\t0\t5.3473331062575795\n1.2333886081428602\t3\t101906\tF\tMarried\t1974\tE: 90,000 - 109,999\t9000\t< Bach.\t1\t4-5\tCleric.\t3\t1\t1.2333886081428602\n2.6738366011313683\t4\t100934\tM\tMabsent\t1974\tB: 30,000 - 49,999\t5000\tBach.\t0\t2\t?\t4\t1\t2.6738366011313683\n6.00509498660449\t5\t103294\tM\tMarried\t1952\tF: 110,000 - 129,999\t5000\tMasters\t1\t3\tExec.\t5\t0\t6.00509498660449\n4.620710275658258\t5\t100508\tM\tMarried\t1957\tL: 300,000 and above\t15000\tBach.\t0\t3\tTechSup\t5\t0\t4.620710275658258\n1.682057510728684\t2\t101383\tF\tNeverM\t1980\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n5.735655528677853\t6\t101722\tM\tMarried\t1946\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tExec.\t6\t0\t5.735655528677853\n5.801201708609597\t7\t101560\tM\tMarried\t1957\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5.801201708609597\n4.444718281383928\t6\t101205\tM\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tHandler\t6\t0\t4.444718281383928\n4.9940310492279325\t5\t104213\tM\tMarried\t1967\tI: 170,000 - 189,999\t5000\t9th\t0\t3\tTransp.\t5\t0\t4.9940310492279325\n4.39198747959714\t4\t103758\tM\tMarried\t1966\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4.39198747959714\n5.2395285847286175\t3\t103434\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t1\tOther\t3\t0\t5.2395285847286175\n4.331898393916036\t3\t101283\tF\tWidowed\t1959\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t9+\tCleric.\t3\t0\t4.331898393916036\n4.263379973461696\t4\t104267\tM\tNeverM\t1969\tL: 300,000 and above\t7000\t< Bach.\t1\t2\tProf.\t4\t0\t4.263379973461696\n5.841253267713\t1\t101219\tF\tMarried\t1952\tA: Below 30,000\t1500\t< Bach.\t1\t4-5\tExec.\t1\t0\t5.841253267713\n3.7342783143278098\t3\t103018\tF\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t4-5\tProf.\t3\t0\t3.7342783143278098\n4.5149820797605\t5\t101469\tF\tMarried\t1957\tI: 170,000 - 189,999\t9000\tBach.\t1\t4-5\tProf.\t5\t0\t4.5149820797605\n2.3128797344947984\t3\t103484\tM\tNeverM\t1976\tB: 30,000 - 49,999\t1500\tAssoc-A\t0\t2\tOther\t3\t1\t2.3128797344947984\n4.620710275658258\t7\t101652\tM\tMarried\t1961\tD: 70,000 - 89,999\t10000\tBach.\t0\t3\tFarming\t7\t0\t4.620710275658258\n4.620710275658258\t3\t103222\tM\tMarried\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t3\t0\t4.620710275658258\n2.6738366011313683\t3\t103885\tM\tNeverM\t1984\tI: 170,000 - 189,999\t3000\t11th\t0\t1\tMachine\t3\t1\t2.6738366011313683\n2.043014377365254\t3\t104073\tF\tNeverM\t1980\tL: 300,000 and above\t7000\t< Bach.\t0\t2\tProf.\t3\t1\t2.043014377365254\n2.167437921105945\t0\t100614\tM\tNeverM\t1986\tE: 90,000 - 109,999\t1500\t11th\t0\t1\tHandler\t0\t1\t2.167437921105945\n4.016695862526831\t4\t103386\tF\tMarried\t1963\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t4-5\tExec.\t4\t0\t4.016695862526831\n2.004308901590943\t2\t102409\tF\tNeverM\t1981\tF: 110,000 - 129,999\t3000\tBach.\t0\t1\tProf.\t2\t1\t2.004308901590943\n4.6921367740078495\t4\t100651\tM\tMarried\t1959\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t3\tExec.\t4\t0\t4.6921367740078495\n1.2730940473625907\t3\t103227\tF\tDivorc.\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tTechSup\t3\t1\t1.2730940473625907\n5.303756435059768\t4\t103750\tF\tDivorc.\t1960\tC: 50,000 - 69,999\t1500\tHS-grad\t1\t9+\tExec.\t4\t0\t5.303756435059768\n4.620710275658258\t8\t101467\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t3\tSales\t8\t0\t4.620710275658258\n4.557161416642202\t4\t100493\tM\tNeverM\t1968\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t2\tCleric.\t4\t0\t4.557161416642202\n4.218610847953261\t5\t103984\tF\tNeverM\t1967\tC: 50,000 - 69,999\t1500\tBach.\t0\t2\tCleric.\t5\t0\t4.218610847953261\n5.207747887836106\t5\t101800\tM\tMarried\t1958\tG: 130,000 - 149,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5.207747887836106\n4.620710275658258\t4\t103282\tM\tMarried\t1968\tC: 50,000 - 69,999\t1500\tAssoc-V\t0\t3\tCrafts\t4\t0\t4.620710275658258\n5.175987536186261\t5\t100686\tM\tMarried\t1957\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tMachine\t5\t0\t5.175987536186261\n4.022779018739698\t4\t102527\tF\tDivorc.\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tOther\t4\t0\t4.022779018739698\n6.451788179803501\t7\t104206\tM\tMarried\t1947\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t6.451788179803501\n4.777740329765493\t3\t103668\tF\tDivorc.\t1957\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tTechSup\t3\t0\t4.777740329765493\n4.2597534090216875\t4\t103700\tM\tMarried\t1968\tD: 70,000 - 89,999\t15000\tBach.\t0\t3\tOther\t4\t0\t4.2597534090216875\n3.5551798042987883\t4\t103797\tF\tDivorc.\t1967\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t3.5551798042987883\n2.167437921105945\t2\t102698\tM\tNeverM\t1981\tI: 170,000 - 189,999\t11000\tAssoc-A\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.012571946477934\t5\t103291\tM\tMarried\t1961\tK: 250,000 - 299,999\t7000\tHS-grad\t1\t3\tMachine\t5\t0\t5.012571946477934\n4.807541898240743\t5\t102927\tM\tNeverM\t1963\tI: 170,000 - 189,999\t11000\t< Bach.\t1\t2\tExec.\t5\t0\t4.807541898240743\n0.8117648467660246\t4\t102366\tF\tDivorc.\t1975\tL: 300,000 and above\t11000\tBach.\t1\t9+\tOther\t4\t1\t0.8117648467660246\n5.598099770552437\t3\t101713\tM\tMabsent\t1952\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t2\t?\t3\t0\t5.598099770552437\n1.2098059610856922\t2\t102344\tF\tDivorc.\t1979\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t2\tCleric.\t2\t1\t1.2098059610856922\n2.6738366011313683\t2\t100205\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tFarming\t2\t1\t2.6738366011313683\n4.144859466996493\t4\t100974\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4.144859466996493\n2.271737173426372\t0\t103452\tF\tNeverM\t1985\tD: 70,000 - 89,999\t5000\tHS-grad\t0\t1\tTechSup\t0\t1\t2.271737173426372\n4.620710275658258\t2\t101651\tM\tMarried\t1930\tG: 130,000 - 149,999\t10000\tBach.\t0\t3\t?\t2\t0\t4.620710275658258\n4.231868181045257\t4\t103278\tM\tNeverM\t1973\tL: 300,000 and above\t11000\t11th\t1\t2\tCrafts\t4\t0\t4.231868181045257\n1.682057510728684\t2\t103815\tF\tNeverM\t1976\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n2.0841569384336807\t2\t100886\tM\tNeverM\t1983\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n4.6222200637615884\t4\t101290\tM\tNeverM\t1967\tB: 30,000 - 49,999\t3000\tAssoc-V\t1\t2\tCleric.\t4\t0\t4.6222200637615884\n1.9107803067898017\t2\t101261\tF\tNeverM\t1980\tL: 300,000 and above\t9000\t10th\t0\t2\tOther\t2\t1\t1.9107803067898017\n4.620710275658258\t4\t100102\tM\tNeverM\t1966\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.620710275658258\n2.271737173426372\t2\t100492\tF\tNeverM\t1983\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.271737173426372\n4.620710275658258\t4\t100088\tM\tNeverM\t1967\tL: 300,000 and above\t11000\t7th-8th\t0\t9+\tCrafts\t4\t0\t4.620710275658258\n1.8946426238020138\t2\t100658\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t9+\tCrafts\t2\t1\t1.8946426238020138\n1.7755861055298254\t2\t101329\tF\tNeverM\t1985\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t1.7755861055298254\n2.3128797344947984\t2\t103842\tM\tNeverM\t1980\tL: 300,000 and above\t7000\tBach.\t0\t2\tOther\t2\t1\t2.3128797344947984\n5.779999961710928\t9\t101664\tM\tMarried\t1956\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t3\tExec.\t9\t0\t5.779999961710928\n4.620710275658258\t5\t101528\tM\tSepar.\t1951\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.620710275658258\n4.35700064606057\t6\t101294\tM\tDivorc.\t1962\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tHandler\t6\t0\t4.35700064606057\n5.533041123433051\t5\t104488\tM\tMarried\t1953\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t3\tCleric.\t5\t0\t5.533041123433051\n4.687278710880975\t5\t104149\tM\tMarried\t1966\tL: 300,000 and above\t9000\tMasters\t1\t3\tProf.\t5\t0\t4.687278710880975\n4.39198747959714\t3\t101181\tM\tMarried\t1972\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tCleric.\t3\t0\t4.39198747959714\n3.0003910655982535\t2\t101855\tM\tMarried\t1980\tA: Below 30,000\t1500\t< Bach.\t0\t3\tMachine\t2\t1\t3.0003910655982535\n4.114311595632834\t3\t102870\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t3\t0\t4.114311595632834\n4.293192918141725\t4\t100591\tF\tWidowed\t1962\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tSales\t4\t0\t4.293192918141725\n2.6738366011313683\t1\t104020\tM\tNeverM\t1984\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\t?\t1\t1\t2.6738366011313683\n2.043014377365254\t2\t102038\tF\tNeverM\t1981\tL: 300,000 and above\t15000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n2.167437921105945\t2\t103946\tM\tNeverM\t1983\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n4.775216668238059\t5\t102068\tF\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t4-5\tProf.\t5\t0\t4.775216668238059\n2.6738366011313683\t2\t100264\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t2.6738366011313683\n4.334286821672109\t4\t100523\tF\tMarried\t1962\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t4-5\tTransp.\t4\t0\t4.334286821672109\n5.161964571723885\t6\t102797\tF\tDivorc.\t1941\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tOther\t6\t0\t5.161964571723885\n5.286322718631027\t4\t100012\tM\tMarried\t1968\tH: 150,000 - 169,999\t15000\tPhD\t1\t3\tProf.\t4\t0\t5.286322718631027\n2.6738366011313683\t1\t103611\tM\tMarried\t1974\tL: 300,000 and above\t9000\tMasters\t0\t3\tProf.\t1\t1\t2.6738366011313683\n2.6738366011313683\t1\t100605\tM\tMarried\t1974\tL: 300,000 and above\t11000\tMasters\t0\t3\tProf.\t1\t1\t2.6738366011313683\n2.6738366011313683\t3\t102535\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t1\tProf.\t3\t1\t2.6738366011313683\n5.611615954227972\t4\t100034\tM\tMarried\t1963\tL: 300,000 and above\t9000\tPhD\t1\t3\tProf.\t4\t0\t5.611615954227972\n4.680085027523106\t6\t102959\tM\tMarried\t1962\tF: 110,000 - 129,999\t10000\tMasters\t1\t3\tProf.\t6\t0\t4.680085027523106\n4.620710275658258\t5\t100344\tM\tMarried\t1967\tH: 150,000 - 169,999\t10000\tBach.\t0\t3\tProf.\t5\t0\t4.620710275658258\n4.2597534090216875\t4\t101100\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tAssoc-V\t0\t2\tOther\t4\t0\t4.2597534090216875\n5.612170267482142\t6\t102845\tM\tMarried\t1944\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tHandler\t6\t0\t5.612170267482142\n2.4451138050702506\t3\t103193\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\t?\t3\t1\t2.4451138050702506\n1.9107803067898017\t1\t101869\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t1\t1\t1.9107803067898017\n3.530750255252329\t3\t101021\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tOther\t3\t0\t3.530750255252329\n4.620710275658258\t8\t103958\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4.620710275658258\n4.218610847953261\t4\t100667\tF\tNeverM\t1961\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4.218610847953261\n5.716469519802573\t6\t101542\tF\tNeverM\t1944\tB: 30,000 - 49,999\t1500\tMasters\t1\t2\tProf.\t6\t0\t5.716469519802573\n5.654561175927483\t4\t100899\tM\tSepar.\t1947\tJ: 190,000 - 249,999\t15000\t1st-4th\t0\t2\tExec.\t4\t0\t5.654561175927483\n4.39198747959714\t6\t104462\tM\tMarried\t1940\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tProf.\t6\t0\t4.39198747959714\n4.620710275658258\t3\t100918\tM\tNeverM\t1973\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCleric.\t3\t0\t4.620710275658258\n5.33067149871701\t5\t102184\tM\tMarried\t1952\tF: 110,000 - 129,999\t3000\tMasters\t1\t3\tSales\t5\t0\t5.33067149871701\n5.779999961710928\t7\t100701\tM\tMarried\t1956\tB: 30,000 - 49,999\t3000\tBach.\t1\t3\tExec.\t7\t0\t5.779999961710928\n2.6738366011313683\t3\t103449\tM\tMarried\t1975\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n5.112952412174806\t6\t103135\tF\tDivorc.\t1946\tJ: 190,000 - 249,999\t9000\tMasters\t0\t9+\tOther\t6\t0\t5.112952412174806\n5.369376974491331\t5\t102182\tM\tMarried\t1952\tG: 130,000 - 149,999\t10000\t< Bach.\t1\t3\tCleric.\t5\t0\t5.369376974491331\n6.218435678199853\t7\t102082\tM\tMarried\t1951\tA: Below 30,000\t1500\t10th\t1\t3\tCrafts\t7\t0\t6.218435678199853\n2.271737173426372\t0\t103050\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t11000\t11th\t0\t1\tSales\t0\t1\t2.271737173426372\n2.6738366011313683\t2\t103039\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t2.6738366011313683\n4.331898393916036\t7\t100433\tF\tWidowed\t1938\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tCleric.\t7\t0\t4.331898393916036\n4.620710275658258\t3\t102503\tM\tNeverM\t1969\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t1\tCleric.\t3\t0\t4.620710275658258\n5.116312797217688\t6\t102071\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t0\t3\tExec.\t6\t0\t5.116312797217688\n4.39198747959714\t4\t101748\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tProtec.\t4\t0\t4.39198747959714\n2.4451138050702506\t3\t102008\tM\tNeverM\t1980\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t2\tProf.\t3\t1\t2.4451138050702506\n4.557161416642202\t4\t104136\tM\tMarried\t1968\tI: 170,000 - 189,999\t3000\tMasters\t1\t3\tProf.\t4\t0\t4.557161416642202\n4.970392609596232\t5\t102210\tF\tMarried\t1950\tK: 250,000 - 299,999\t11000\tMasters\t1\t4-5\tCleric.\t5\t0\t4.970392609596232\n5.1742010331331585\t6\t104276\tM\tMarried\t1955\tK: 250,000 - 299,999\t11000\t< Bach.\t1\t3\tCrafts\t6\t0\t5.1742010331331585\n4.218610847953261\t4\t102857\tF\tSepar.\t1962\tD: 70,000 - 89,999\t3000\tBach.\t0\t9+\tProf.\t4\t0\t4.218610847953261\n2.043014377365254\t1\t103553\tF\tNeverM\t1982\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t2\tCleric.\t1\t1\t2.043014377365254\n2.3128797344947984\t3\t100857\tM\tMarried\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t3\t1\t2.3128797344947984\n2.271737173426372\t2\t102545\tF\tNeverM\t1982\tL: 300,000 and above\t9000\tAssoc-V\t0\t2\tCleric.\t2\t1\t2.271737173426372\n5.9233930061493965\t10\t101499\tM\tMarried\t1947\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t10\t0\t5.9233930061493965\n6.966099998746515\t8\t103796\tF\tNeverM\t1936\tJ: 190,000 - 249,999\t11000\tPhD\t1\t2\tProf.\t8\t0\t6.966099998746515\n4.634676530024862\t4\t101809\tM\tDivorc.\t1962\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t2\tCrafts\t4\t0\t4.634676530024862\n3.634163024402151\t3\t101642\tF\tMarried\t1971\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t4-5\tTechSup\t3\t0\t3.634163024402151\n4.620710275658258\t3\t101745\tM\tMarried\t1970\tE: 90,000 - 109,999\t3000\t12th\t0\t3\tProtec.\t3\t0\t4.620710275658258\n5.175987536186261\t3\t101637\tM\tMarried\t1971\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tTechSup\t3\t0\t5.175987536186261\n5.467982476313665\t6\t103045\tM\tMarried\t1954\tC: 50,000 - 69,999\t9000\tHS-grad\t1\t3\tCrafts\t6\t0\t5.467982476313665\n3.501928953826699\t9\t101673\tF\tMarried\t1956\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t4-5\tOther\t9\t0\t3.501928953826699\n4.965118441718914\t6\t100554\tM\tMarried\t1958\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tExec.\t6\t0\t4.965118441718914\n5.533041123433051\t8\t100185\tM\tMarried\t1953\tJ: 190,000 - 249,999\t7000\tBach.\t1\t3\tSales\t8\t0\t5.533041123433051\n4.39198747959714\t6\t102492\tM\tMarried\t1966\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tCrafts\t6\t0\t4.39198747959714\n2.6738366011313683\t4\t100340\tM\tNeverM\t1974\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t2\tFarming\t4\t1\t2.6738366011313683\n7.289624595656591\t4\t103684\tM\tMabsent\t1926\tD: 70,000 - 89,999\t5000\t7th-8th\t1\t2\tCleric.\t4\t0\t7.289624595656591\n5.533041123433051\t8\t103225\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t8\t0\t5.533041123433051\n3.8855887995717167\t4\t101668\tM\tNeverM\t1969\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tHandler\t4\t0\t3.8855887995717167\n4.2597534090216875\t5\t101396\tM\tMarried\t1966\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4.2597534090216875\n4.620710275658258\t5\t101112\tM\tMarried\t1951\tI: 170,000 - 189,999\t11000\t10th\t0\t3\tMachine\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t100432\tM\tNeverM\t1978\tI: 170,000 - 189,999\t10000\tBach.\t0\t1\tProf.\t3\t1\t2.6738366011313683\n4.39198747959714\t6\t100003\tM\tNeverM\t1969\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t2\tSales\t6\t0\t4.39198747959714\n4.081571380719595\t4\t103793\tF\tDivorc.\t1968\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCleric.\t4\t0\t4.081571380719595\n2.6738366011313683\t2\t102822\tM\tNeverM\t1984\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tCrafts\t2\t1\t2.6738366011313683\n6.567015512726357\t7\t103329\tM\tDivorc.\t1949\tH: 150,000 - 169,999\t7000\tBach.\t0\t2\tExec.\t7\t0\t6.567015512726357\n4.9940310492279325\t4\t102031\tM\tMarried\t1969\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n4.620710275658258\t4\t102200\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n1.9000096492705163\t2\t104270\tM\tNeverM\t1983\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t1\tHandler\t2\t1\t1.9000096492705163\n6.7412745937570975\t9\t100848\tF\tDivorc.\t1945\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t2\tCleric.\t9\t0\t6.7412745937570975\n4.245000714253365\t3\t102164\tF\tNeverM\t1969\tL: 300,000 and above\t9000\tHS-grad\t0\t9+\tExec.\t3\t0\t4.245000714253365\n1.6638030514042157\t3\t101595\tM\tMarried\t1977\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tOther\t3\t1\t1.6638030514042157\n5.012571946477934\t6\t100355\tM\tMarried\t1961\tE: 90,000 - 109,999\t9000\tBach.\t1\t3\tProf.\t6\t0\t5.012571946477934\n4.841028416042391\t5\t101447\tF\tDivorc.\t1956\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t2\tSales\t5\t0\t4.841028416042391\n4.620710275658258\t3\t100507\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4.620710275658258\n3.9294542556859824\t4\t100171\tF\tMarried\t1966\tC: 50,000 - 69,999\t7000\tHS-grad\t1\t4-5\tCleric.\t4\t0\t3.9294542556859824\n4.620710275658258\t5\t104041\tM\tMarried\t1956\tL: 300,000 and above\t9000\tBach.\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.0841569384336807\t2\t100200\tM\tNeverM\t1983\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n4.560621189977153\t4\t103850\tF\tWidowed\t1961\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tProf.\t4\t0\t4.560621189977153\n4.620710275658258\t4\t104400\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t10000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.620710275658258\n3.959886047579033\t4\t103864\tF\tSepar.\t1971\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tProf.\t4\t0\t3.959886047579033\n8.867940735848606\t9\t101454\tM\tMarried\t1934\tB: 30,000 - 49,999\t3000\t< Bach.\t1\t3\tExec.\t9\t0\t8.867940735848606\n4.27143563955029\t4\t100807\tF\tDivorc.\t1965\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tProf.\t4\t0\t4.27143563955029\n2.043014377365254\t3\t104240\tF\tNeverM\t1977\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\t?\t3\t1\t2.043014377365254\n5.533041123433051\t5\t102553\tM\tMarried\t1953\tI: 170,000 - 189,999\t10000\tAssoc-V\t1\t3\tTechSup\t5\t0\t5.533041123433051\n3.047157374701043\t4\t103712\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t15000\t10th\t0\t2\tTransp.\t4\t1\t3.047157374701043\n4.018283294442696\t4\t104422\tF\tDivorc.\t1969\tI: 170,000 - 189,999\t1500\tAssoc-A\t0\t9+\tSales\t4\t0\t4.018283294442696\n4.144765477186269\t6\t103331\tF\tDivorc.\t1959\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tHandler\t6\t0\t4.144765477186269\n4.620710275658258\t6\t103945\tM\tMarried\t1966\tB: 30,000 - 49,999\t5000\tHS-grad\t0\t3\tFarming\t6\t0\t4.620710275658258\n4.620710275658258\t4\t102541\tM\tMarried\t1968\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t4\t0\t4.620710275658258\n1.9107803067898017\t2\t103933\tF\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tOther\t2\t1\t1.9107803067898017\n5.906361897002725\t6\t104301\tM\tMarried\t1953\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t3\tTransp.\t6\t0\t5.906361897002725\n4.2597534090216875\t6\t101351\tM\tMarried\t1929\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4.2597534090216875\n5.898526350753855\t7\t103361\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\tBach.\t1\t3\tExec.\t7\t0\t5.898526350753855\n5.012571946477934\t5\t102309\tM\tMarried\t1961\tI: 170,000 - 189,999\t9000\tMasters\t1\t3\tSales\t5\t0\t5.012571946477934\n3.9511825761178327\t5\t101209\tF\tSepar.\t1957\tF: 110,000 - 129,999\t5000\tHS-grad\t0\t9+\tCrafts\t5\t0\t3.9511825761178327\n4.882454652239147\t4\t100713\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t4.882454652239147\n2.6738366011313683\t3\t103805\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t2.6738366011313683\n4.620710275658258\t8\t100898\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4.620710275658258\n4.719768432100864\t6\t100662\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4.719768432100864\n5.402923829194265\t6\t104433\tM\tMarried\t1955\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tCleric.\t6\t0\t5.402923829194265\n5.402923829194265\t6\t101345\tM\tMarried\t1955\tH: 150,000 - 169,999\t1500\tBach.\t1\t3\tCleric.\t6\t0\t5.402923829194265\n4.719768432100864\t6\t103457\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4.719768432100864\n2.6738366011313683\t3\t100784\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t2.6738366011313683\n1.816728666598252\t2\t101358\tM\tNeverM\t1985\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t1.816728666598252\n4.882454652239147\t4\t103523\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t4.882454652239147\n5.179839757470489\t5\t102175\tM\tDivorc.\t1957\tI: 170,000 - 189,999\t11000\tBach.\t0\t2\tMachine\t5\t0\t5.179839757470489\n4.9940310492279325\t6\t100488\tM\tNeverM\t1957\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tTransp.\t6\t0\t4.9940310492279325\n2.0841569384336807\t2\t103897\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n2.021709762010687\t3\t101334\tF\tNeverM\t1976\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t2\tExec.\t3\t1\t2.021709762010687\n2.6738366011313683\t2\t101908\tM\tNeverM\t1984\tL: 300,000 and above\t15000\tHS-grad\t0\t1\tCrafts\t2\t1\t2.6738366011313683\n2.271737173426372\t1\t103153\tF\tNeverM\t1986\tG: 130,000 - 149,999\t3000\t11th\t0\t1\t?\t1\t1\t2.271737173426372\n6.118568947507569\t6\t101536\tM\tMarried\t1944\tE: 90,000 - 109,999\t7000\t10th\t1\t3\tCrafts\t6\t0\t6.118568947507569\n4.361550770931544\t3\t101350\tM\tDivorc.\t1973\tA: Below 30,000\t1500\tBach.\t0\t2\tOther\t3\t0\t4.361550770931544\n3.3035721201152217\t4\t100132\tF\tWidowed\t1926\tI: 170,000 - 189,999\t3000\t< Bach.\t0\t2\tHouse-s\t4\t0\t3.3035721201152217\n4.9940310492279325\t6\t100516\tM\tMarried\t1966\tE: 90,000 - 109,999\t10000\t10th\t0\t3\tTransp.\t6\t0\t4.9940310492279325\n4.39198747959714\t6\t101601\tM\tMarried\t1947\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t3\tCrafts\t6\t0\t4.39198747959714\n4.2597534090216875\t4\t103076\tM\tMarried\t1963\tI: 170,000 - 189,999\t5000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n7.3244326792294885\t10\t101039\tM\tMarried\t1934\tA: Below 30,000\t1500\tHS-grad\t1\t3\t?\t10\t0\t7.3244326792294885\n4.557161416642202\t4\t102416\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tProtec.\t4\t0\t4.557161416642202\n2.3128797344947984\t0\t104155\tM\tNeverM\t1986\tL: 300,000 and above\t9000\t10th\t0\t1\tOther\t0\t1\t2.3128797344947984\n4.597113920339325\t5\t101781\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\tMasters\t1\t3\tExec.\t5\t0\t4.597113920339325\n2.271737173426372\t3\t103910\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t2.271737173426372\n4.2597534090216875\t3\t102750\tM\tMarried\t1971\tB: 30,000 - 49,999\t1500\t7th-8th\t0\t3\tOther\t3\t0\t4.2597534090216875\n1.6872893498752615\t3\t102626\tF\tMarried\t1977\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t4-5\tMachine\t3\t1\t1.6872893498752615\n4.218610847953261\t4\t103101\tF\tNeverM\t1973\tG: 130,000 - 149,999\t3000\tBach.\t0\t2\tSales\t4\t0\t4.218610847953261\n4.384864785521714\t4\t103380\tF\tMarried\t1959\tJ: 190,000 - 249,999\t15000\tMasters\t1\t4-5\tProf.\t4\t0\t4.384864785521714\n5.175987536186261\t6\t100147\tM\tMarried\t1925\tA: Below 30,000\t1500\tHS-grad\t0\t3\t?\t6\t0\t5.175987536186261\n2.081523652998186\t1\t101094\tF\tDivorc.\t1974\tA: Below 30,000\t1500\t< Bach.\t0\t9+\t?\t1\t1\t2.081523652998186\n4.114311595632834\t3\t101682\tM\tMarried\t1969\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tHandler\t3\t0\t4.114311595632834\n2.271737173426372\t3\t102566\tF\tNeverM\t1976\tJ: 190,000 - 249,999\t7000\tBach.\t0\t1\tTechSup\t3\t1\t2.271737173426372\n4.620710275658258\t4\t104268\tM\tMarried\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tMachine\t4\t0\t4.620710275658258\n2.6738366011313683\t3\t104097\tM\tMabsent\t1981\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tSales\t3\t1\t2.6738366011313683\n2.4451138050702506\t3\t102775\tM\tNeverM\t1978\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t1\tMachine\t3\t1\t2.4451138050702506\n2.2199358593989587\t4\t103618\tM\tMarried\t1974\tH: 150,000 - 169,999\t1500\tAssoc-A\t1\t3\tSales\t4\t1\t2.2199358593989587\n2.271737173426372\t0\t103485\tF\tNeverM\t1986\tG: 130,000 - 149,999\t15000\t11th\t0\t1\tCleric.\t0\t1\t2.271737173426372\n4.167230377040099\t3\t100808\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t9+\tMachine\t3\t0\t4.167230377040099\n1.9107803067898017\t3\t103178\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t2\tOther\t3\t1\t1.9107803067898017\n5.175987536186261\t5\t101894\tM\tMarried\t1961\tA: Below 30,000\t1500\tBach.\t0\t3\tSales\t5\t0\t5.175987536186261\n4.800111239809098\t4\t104402\tM\tDivorc.\t1963\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tCrafts\t4\t0\t4.800111239809098\n4.675593706258155\t4\t103426\tF\tDivorc.\t1955\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\t?\t4\t0\t4.675593706258155\n4.549017533704358\t5\t100269\tF\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tCleric.\t5\t0\t4.549017533704358\n4.933941963546828\t4\t103681\tF\tWidowed\t1961\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tTransp.\t4\t0\t4.933941963546828\n4.353282003822829\t4\t100429\tM\tNeverM\t1963\tF: 110,000 - 129,999\t3000\tAssoc-V\t0\t2\tProf.\t4\t0\t4.353282003822829\n3.862885820463269\t4\t103114\tF\tMarried\t1964\tH: 150,000 - 169,999\t1500\tMasters\t0\t4-5\t?\t4\t0\t3.862885820463269\n4.9940310492279325\t8\t103916\tM\tMarried\t1939\tH: 150,000 - 169,999\t5000\t1st-4th\t0\t3\tTransp.\t8\t0\t4.9940310492279325\n4.9940310492279325\t8\t101251\tM\tMarried\t1939\tH: 150,000 - 169,999\t3000\t1st-4th\t0\t3\tTransp.\t8\t0\t4.9940310492279325\n4.6150263804037195\t4\t103568\tM\tMarried\t1963\tF: 110,000 - 129,999\t10000\tAssoc-V\t1\t3\tCrafts\t4\t0\t4.6150263804037195\n2.271737173426372\t2\t100194\tF\tNeverM\t1981\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t2.271737173426372\n4.965118441718914\t6\t103786\tM\tMarried\t1958\tJ: 190,000 - 249,999\t10000\tBach.\t0\t3\tExec.\t6\t0\t4.965118441718914\n4.39198747959714\t6\t101275\tM\tMarried\t1943\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tProf.\t6\t0\t4.39198747959714\n3.862885820463269\t4\t100324\tF\tMarried\t1964\tH: 150,000 - 169,999\t7000\tMasters\t0\t4-5\t?\t4\t0\t3.862885820463269\n2.271737173426372\t2\t100547\tF\tMarried\t1983\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tProf.\t2\t1\t2.271737173426372\n4.620710275658258\t7\t103476\tM\tMarried\t1933\tG: 130,000 - 149,999\t7000\tBach.\t0\t3\t?\t7\t0\t4.620710275658258\n2.6738366011313683\t1\t103693\tM\tNeverM\t1976\tL: 300,000 and above\t15000\tMasters\t0\t2\tProf.\t1\t1\t2.6738366011313683\n3.9549952081657977\t3\t101639\tF\tDivorc.\t1970\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t2\t?\t3\t0\t3.9549952081657977\n5.552156053897306\t6\t100281\tM\tMarried\t1958\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tExec.\t6\t0\t5.552156053897306\n4.620710275658258\t3\t102105\tM\tMarried\t1941\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t3\t?\t3\t0\t4.620710275658258\n5.552156053897306\t6\t103071\tM\tMarried\t1958\tH: 150,000 - 169,999\t15000\tBach.\t1\t3\tExec.\t6\t0\t5.552156053897306\n4.67729504017916\t4\t101805\tM\tMarried\t1967\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t3\tExec.\t4\t0\t4.67729504017916\n5.779999961710928\t5\t101822\tM\tMarried\t1956\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tExec.\t5\t0\t5.779999961710928\n4.208147553273392\t4\t102245\tF\tDivorc.\t1966\tE: 90,000 - 109,999\t1500\tAssoc-A\t0\t9+\tProf.\t4\t0\t4.208147553273392\n2.043014377365254\t2\t104401\tF\tNeverM\t1980\tB: 30,000 - 49,999\t7000\t< Bach.\t0\t2\tSales\t2\t1\t2.043014377365254\n4.9139664446556\t2\t100884\tM\tMarried\t1959\tB: 30,000 - 49,999\t1500\t< Bach.\t1\t3\tTechSup\t2\t0\t4.9139664446556\n6.218435678199853\t8\t103179\tM\tMarried\t1951\tA: Below 30,000\t1500\tBach.\t1\t3\tProtec.\t8\t0\t6.218435678199853\n7.69669358479986\t10\t102451\tM\tWidowed\t1925\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t2\tSales\t10\t0\t7.69669358479986\n4.2597534090216875\t7\t100803\tM\tMarried\t1946\tK: 250,000 - 299,999\t11000\t11th\t0\t3\tOther\t7\t0\t4.2597534090216875\n5.51974447550856\t5\t104453\tF\tDivorc.\t1954\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t2\tExec.\t5\t0\t5.51974447550856\n4.2597534090216875\t4\t101073\tM\tMarried\t1966\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n1.682057510728684\t1\t100181\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n4.557161416642202\t4\t103549\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t4\t0\t4.557161416642202\n4.870707107250496\t5\t102629\tF\tMarried\t1957\tI: 170,000 - 189,999\t5000\tHS-grad\t1\t1\tSales\t5\t0\t4.870707107250496\n5.304318327371945\t6\t100878\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5.304318327371945\n2.167437921105945\t2\t101004\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.304318327371945\t8\t101341\tM\tMarried\t1953\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tSales\t8\t0\t5.304318327371945\n5.284045019980681\t4\t104060\tF\tDivorc.\t1949\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t2\t?\t4\t0\t5.284045019980681\n5.012571946477934\t5\t102950\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tAssoc-A\t1\t3\tCrafts\t5\t0\t5.012571946477934\n2.4451138050702506\t3\t100180\tM\tNeverM\t1981\tL: 300,000 and above\t7000\t< Bach.\t0\t1\tProf.\t3\t1\t2.4451138050702506\n2.6738366011313683\t3\t103749\tM\tMarried\t1976\tI: 170,000 - 189,999\t11000\tBach.\t0\t3\tProf.\t3\t1\t2.6738366011313683\n4.2597534090216875\t5\t100978\tM\tMarried\t1964\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4.2597534090216875\n1.9160121459363793\t2\t102236\tF\tMarried\t1979\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t4-5\t?\t2\t1\t1.9160121459363793\n4.620710275658258\t3\t102533\tM\tMarried\t1972\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tCrafts\t3\t0\t4.620710275658258\n5.759728857207676\t6\t100528\tM\tMarried\t1946\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5.759728857207676\n8.229604852908324\t7\t100731\tM\tDivorc.\t1944\tL: 300,000 and above\t9000\tPhD\t1\t9+\tProf.\t7\t0\t8.229604852908324\n3.9898880518921436\t5\t103132\tF\tMabsent\t1935\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tFarming\t5\t0\t3.9898880518921436\n4.2585633516509915\t4\t103334\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tExec.\t4\t0\t4.2585633516509915\n4.353282003822829\t4\t100724\tM\tNeverM\t1972\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tCrafts\t4\t0\t4.353282003822829\n3.9511825761178327\t5\t100529\tF\tSepar.\t1954\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tMachine\t5\t0\t3.9511825761178327\n7.433258073570897\t10\t102619\tM\tMarried\t1935\tJ: 190,000 - 249,999\t15000\tPhD\t1\t3\tProf.\t10\t0\t7.433258073570897\n5.2395285847286175\t3\t100639\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t1\tOther\t3\t0\t5.2395285847286175\n2.733429381838505\t3\t101979\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t2.733429381838505\n4.6222200637615884\t4\t103779\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tBach.\t1\t3\tSales\t4\t0\t4.6222200637615884\n4.765308253166815\t4\t102542\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tTransp.\t4\t0\t4.765308253166815\n4.218610847953261\t3\t100903\tF\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t1\tCleric.\t3\t0\t4.218610847953261\n4.818657233989711\t5\t101409\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t4.818657233989711\n5.207747887836106\t5\t103424\tM\tMarried\t1958\tE: 90,000 - 109,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5.207747887836106\n4.620710275658258\t2\t102224\tM\tMarried\t1923\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\t?\t2\t0\t4.620710275658258\n3.6268639991974965\t4\t102124\tM\tMarried\t1971\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tHandler\t4\t0\t3.6268639991974965\n6.423230572964869\t2\t102194\tF\tDivorc.\t1931\tB: 30,000 - 49,999\t7000\t11th\t0\t2\tCleric.\t2\t0\t6.423230572964869\n3.9945129028053685\t5\t101790\tF\tMarried\t1965\tE: 90,000 - 109,999\t7000\t7th-8th\t1\t4-5\tMachine\t5\t0\t3.9945129028053685\n2.6738366011313683\t3\t100832\tM\tNeverM\t1974\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t2\tCrafts\t3\t1\t2.6738366011313683\n4.246865116608205\t4\t103206\tF\tMarried\t1961\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t4-5\tExec.\t4\t0\t4.246865116608205\n3.1902845741524475\t2\t100969\tF\tMabsent\t1957\tJ: 190,000 - 249,999\t9000\t7th-8th\t0\t9+\tHouse-s\t2\t0\t3.1902845741524475\n2.6738366011313683\t2\t103662\tM\tNeverM\t1981\tH: 150,000 - 169,999\t10000\t9th\t0\t9+\tMachine\t2\t1\t2.6738366011313683\n2.271737173426372\t2\t100337\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t7000\t7th-8th\t0\t2\t?\t2\t1\t2.271737173426372\n2.6738366011313683\t3\t103882\tM\tNeverM\t1975\tH: 150,000 - 169,999\t5000\t5th-6th\t0\t2\tCrafts\t3\t1\t2.6738366011313683\n4.818657233989711\t5\t104334\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t4.818657233989711\n4.620710275658258\t7\t104105\tM\tMarried\t1936\tG: 130,000 - 149,999\t9000\t7th-8th\t0\t3\tCrafts\t7\t0\t4.620710275658258\n2.3128797344947984\t3\t102293\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\t11th\t0\t2\tOther\t3\t1\t2.3128797344947984\n2.043014377365254\t2\t103110\tF\tNeverM\t1979\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t2\tTechSup\t2\t1\t2.043014377365254\n3.9294542556859824\t3\t103745\tF\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t1\t4-5\tProf.\t3\t0\t3.9294542556859824\n4.688539939750939\t6\t102634\tM\tMarried\t1971\tA: Below 30,000\t1500\t< Bach.\t1\t3\tMachine\t6\t0\t4.688539939750939\n2.167437921105945\t2\t102442\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tHandler\t2\t1\t2.167437921105945\n4.353282003822829\t3\t102993\tM\tMarried\t1934\tF: 110,000 - 129,999\t9000\t9th\t0\t3\t?\t3\t0\t4.353282003822829\n2.271737173426372\t1\t100335\tF\tNeverM\t1986\tK: 250,000 - 299,999\t9000\t10th\t0\t1\tCleric.\t1\t1\t2.271737173426372\n5.337865182074879\t6\t101557\tM\tMarried\t1956\tK: 250,000 - 299,999\t11000\tHS-grad\t1\t3\tSales\t6\t0\t5.337865182074879\n4.042712843489156\t4\t100375\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.042712843489156\n3.7357171131487235\t3\t102204\tM\tMarried\t1973\tF: 110,000 - 129,999\t7000\t< Bach.\t1\t3\tSales\t3\t0\t3.7357171131487235\n4.620710275658258\t7\t101489\tM\tMarried\t1944\tL: 300,000 and above\t15000\tAssoc-V\t0\t3\tSales\t7\t0\t4.620710275658258\n4.620710275658258\t3\t103638\tM\tNeverM\t1969\tE: 90,000 - 109,999\t10000\tBach.\t0\t9+\tCrafts\t3\t0\t4.620710275658258\n4.612827900983575\t4\t101152\tM\tNeverM\t1961\tE: 90,000 - 109,999\t5000\t< Bach.\t0\t2\tExec.\t4\t0\t4.612827900983575\n5.283163195678753\t5\t103194\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t9+\tExec.\t5\t0\t5.283163195678753\n5.663158417671838\t7\t102910\tM\tMarried\t1951\tG: 130,000 - 149,999\t10000\tBach.\t1\t3\tSales\t7\t0\t5.663158417671838\n2.6738366011313683\t3\t100204\tM\tMarried\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n4.620710275658258\t4\t103515\tM\tMarried\t1968\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.620710275658258\t5\t102903\tM\tMarried\t1953\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tMachine\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t102095\tM\tNeverM\t1976\tI: 170,000 - 189,999\t9000\tAssoc-V\t0\t6-8\tCrafts\t3\t1\t2.6738366011313683\n4.777740329765493\t3\t100366\tF\tDivorc.\t1957\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t2\tTechSup\t3\t0\t4.777740329765493\n1.4146292388932553\t2\t102954\tF\tNeverM\t1982\tF: 110,000 - 129,999\t3000\t< Bach.\t0\t1\tOther\t2\t1\t1.4146292388932553\n3.9549952081657977\t4\t101264\tF\tDivorc.\t1970\tJ: 190,000 - 249,999\t15000\tAssoc-A\t0\t2\tSales\t4\t0\t3.9549952081657977\n2.4451138050702506\t1\t103899\tM\tNeverM\t1978\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t2\tCrafts\t1\t1\t2.4451138050702506\n1.8946426238020138\t2\t101347\tM\tMarried\t1979\tL: 300,000 and above\t15000\tBach.\t1\t3\tProf.\t2\t1\t1.8946426238020138\n5.936909189824931\t7\t104018\tM\tMarried\t1958\tJ: 190,000 - 249,999\t9000\tPhD\t1\t3\tProf.\t7\t0\t5.936909189824931\n4.508100357471065\t5\t103661\tM\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tSales\t5\t0\t4.508100357471065\n4.848907797536214\t4\t101075\tM\tMarried\t1960\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tSales\t4\t0\t4.848907797536214\n4.620710275658258\t4\t102294\tM\tMarried\t1966\tJ: 190,000 - 249,999\t15000\t5th-6th\t0\t3\tMachine\t4\t0\t4.620710275658258\n1.9107803067898017\t3\t100347\tF\tNeverM\t1974\tK: 250,000 - 299,999\t11000\t5th-6th\t0\t6-8\tOther\t3\t1\t1.9107803067898017\n2.818434578639925\t3\t101531\tM\tMarried\t1975\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tTransp.\t3\t1\t2.818434578639925\n4.2597534090216875\t5\t102490\tM\tMarried\t1950\tI: 170,000 - 189,999\t10000\t5th-6th\t0\t3\tOther\t5\t0\t4.2597534090216875\n2.3128797344947984\t3\t101810\tM\tNeverM\t1976\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t3\t1\t2.3128797344947984\n2.6738366011313683\t2\t102921\tM\tMarried\t1979\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tSales\t2\t1\t2.6738366011313683\n4.218610847953261\t6\t103826\tF\tNeverM\t1959\tL: 300,000 and above\t7000\tBach.\t0\t2\tProf.\t6\t0\t4.218610847953261\n2.3128797344947984\t2\t102094\tM\tMabsent\t1981\tL: 300,000 and above\t9000\t9th\t0\t6-8\tOther\t2\t1\t2.3128797344947984\n1.9160121459363793\t2\t102229\tF\tMarried\t1979\tL: 300,000 and above\t9000\tHS-grad\t0\t4-5\t?\t2\t1\t1.9160121459363793\n4.865423543092476\t7\t104147\tM\tMarried\t1969\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tTransp.\t7\t0\t4.865423543092476\n4.2597534090216875\t4\t101534\tM\tMarried\t1965\tE: 90,000 - 109,999\t3000\tAssoc-A\t0\t3\tOther\t4\t0\t4.2597534090216875\n1.9107803067898017\t3\t102621\tF\tNeverM\t1974\tL: 300,000 and above\t11000\t5th-6th\t0\t1\tOther\t3\t1\t1.9107803067898017\n4.9940310492279325\t5\t100221\tM\tSepar.\t1967\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\tTransp.\t5\t0\t4.9940310492279325\n4.114311595632834\t3\t103013\tM\tMarried\t1973\tL: 300,000 and above\t15000\tAssoc-V\t0\t3\tHandler\t3\t0\t4.114311595632834\n4.719768432100864\t5\t104173\tM\tNeverM\t1965\tE: 90,000 - 109,999\t9000\tBach.\t0\t2\tExec.\t5\t0\t4.719768432100864\n4.6592591405274675\t5\t104039\tM\tDivorc.\t1961\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tMachine\t5\t0\t4.6592591405274675\n6.491889721077243\t6\t102062\tM\tMarried\t1944\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tTransp.\t6\t0\t6.491889721077243\n4.557161416642202\t4\t102368\tM\tMarried\t1968\tE: 90,000 - 109,999\t1500\tBach.\t1\t3\tTechSup\t4\t0\t4.557161416642202\n4.39198747959714\t7\t104487\tM\tMarried\t1954\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t3\tSales\t7\t0\t4.39198747959714\n2.024759918040786\t3\t101837\tM\tMarried\t1977\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tMachine\t3\t1\t2.024759918040786\n4.353282003822829\t5\t101406\tM\tMarried\t1961\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCleric.\t5\t0\t4.353282003822829\n2.6738366011313683\t1\t103087\tM\tNeverM\t1984\tG: 130,000 - 149,999\t3000\t12th\t0\t1\t?\t1\t1\t2.6738366011313683\n4.620710275658258\t4\t104255\tM\tMarried\t1923\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.952357851112538\t5\t101321\tF\tWidowed\t1957\tH: 150,000 - 169,999\t11000\tMasters\t0\t9+\tExec.\t5\t0\t4.952357851112538\n4.9940310492279325\t3\t100718\tM\tMarried\t1970\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tTransp.\t3\t0\t4.9940310492279325\n3.9898880518921436\t6\t101231\tF\tMabsent\t1948\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t9+\tCleric.\t6\t0\t3.9898880518921436\n5.33067149871701\t5\t102651\tM\tMarried\t1952\tF: 110,000 - 129,999\t3000\tMasters\t1\t3\tProf.\t5\t0\t5.33067149871701\n3.634163024402151\t0\t101271\tF\tMarried\t1969\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t4-5\t?\t0\t0\t3.634163024402151\n5.467982476313665\t5\t103251\tM\tMarried\t1954\tI: 170,000 - 189,999\t5000\tHS-grad\t1\t3\tCrafts\t5\t0\t5.467982476313665\n1.5018168434237111\t3\t102758\tF\tDivorc.\t1978\tI: 170,000 - 189,999\t11000\tAssoc-V\t0\t9+\tCleric.\t3\t1\t1.5018168434237111\n2.6738366011313683\t3\t102005\tM\tMarried\t1974\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n5.014405047686253\t5\t100328\tM\tDivorc.\t1956\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t2\tCrafts\t5\t0\t5.014405047686253\n3.634163024402151\t4\t100077\tF\tMarried\t1959\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t4-5\tCleric.\t4\t0\t3.634163024402151\n3.4383800948106398\t4\t101592\tF\tMarried\t1968\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t4-5\tOther\t4\t0\t3.4383800948106398\n1.6226604903357895\t3\t101924\tF\tNeverM\t1977\tI: 170,000 - 189,999\t3000\tBach.\t1\t1\tCleric.\t3\t1\t1.6226604903357895\n4.620710275658258\t6\t102017\tM\tNeverM\t1939\tC: 50,000 - 69,999\t5000\t9th\t0\t6-8\tCleric.\t6\t0\t4.620710275658258\n4.6222200637615884\t4\t100192\tM\tMarried\t1967\tI: 170,000 - 189,999\t9000\tMasters\t1\t3\tProf.\t4\t0\t4.6222200637615884\n5.467982476313665\t5\t100471\tM\tMarried\t1954\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t5\t0\t5.467982476313665\n4.114311595632834\t5\t102976\tM\tNeverM\t1968\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t1\tHandler\t5\t0\t4.114311595632834\n4.39198747959714\t8\t102183\tM\tMarried\t1956\tE: 90,000 - 109,999\t5000\t< Bach.\t0\t3\tProf.\t8\t0\t4.39198747959714\n4.293806549593896\t3\t101029\tM\tDivorc.\t1971\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tMachine\t3\t0\t4.293806549593896\n4.620710275658258\t5\t101452\tM\tMarried\t1967\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t102705\tM\tMarried\t1974\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tProtec.\t3\t1\t2.6738366011313683\n1.682057510728684\t2\t103407\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n4.620710275658258\t5\t103635\tM\tMarried\t1952\tL: 300,000 and above\t9000\t9th\t0\t3\tFarming\t5\t0\t4.620710275658258\n4.620710275658258\t5\t102811\tM\tMarried\t1952\tJ: 190,000 - 249,999\t11000\t1st-4th\t0\t3\tCrafts\t5\t0\t4.620710275658258\n3.558685073507334\t3\t104376\tM\tDivorc.\t1971\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t9+\tHandler\t3\t0\t3.558685073507334\n2.6738366011313683\t3\t102446\tM\tMarried\t1976\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n1.9107803067898017\t3\t103649\tF\tNeverM\t1974\tK: 250,000 - 299,999\t7000\t5th-6th\t0\t6-8\tOther\t3\t1\t1.9107803067898017\n2.4451138050702506\t2\t101423\tM\tNeverM\t1983\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.4451138050702506\n2.6738366011313683\t3\t104017\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\t10th\t0\t2\tSales\t3\t1\t2.6738366011313683\n4.620710275658258\t3\t100072\tM\tMabsent\t1971\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t6-8\tCrafts\t3\t0\t4.620710275658258\n2.167437921105945\t2\t100787\tM\tMarried\t1980\tE: 90,000 - 109,999\t7000\t5th-6th\t0\t3\tHandler\t2\t1\t2.167437921105945\n4.114311595632834\t6\t104052\tM\tSepar.\t1957\tL: 300,000 and above\t11000\t5th-6th\t0\t2\tHandler\t6\t0\t4.114311595632834\n4.770750734865032\t5\t101332\tF\tNeverM\t1954\tH: 150,000 - 169,999\t10000\tAssoc-V\t0\t9+\tExec.\t5\t0\t4.770750734865032\n2.6738366011313683\t3\t104161\tM\tNeverM\t1975\tL: 300,000 and above\t15000\t5th-6th\t0\t6-8\tCrafts\t3\t1\t2.6738366011313683\n2.4064083292959397\t2\t100050\tM\tNeverM\t1979\tF: 110,000 - 129,999\t1500\t12th\t0\t9+\tMachine\t2\t1\t2.4064083292959397\n4.620710275658258\t4\t103561\tM\tMarried\t1960\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tFarming\t4\t0\t4.620710275658258\n4.560621189977153\t9\t102051\tF\tWidowed\t1944\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tCleric.\t9\t0\t4.560621189977153\n5.142689240716706\t7\t103550\tM\tMarried\t1959\tL: 300,000 and above\t9000\tHS-grad\t1\t3\tCrafts\t7\t0\t5.142689240716706\n4.620710275658258\t2\t103775\tM\tMarried\t1934\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t3\tSales\t2\t0\t4.620710275658258\n2.271737173426372\t2\t101241\tF\tNeverM\t1983\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tSales\t2\t1\t2.271737173426372\n2.4064083292959397\t1\t102925\tM\tNeverM\t1983\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t6-8\tCleric.\t1\t1\t2.4064083292959397\n1.5651049297006097\t4\t101303\tF\tDivorc.\t1977\tE: 90,000 - 109,999\t10000\tAssoc-V\t0\t2\tCleric.\t4\t1\t1.5651049297006097\n4.9940310492279325\t5\t104132\tM\tNeverM\t1968\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t2\tTransp.\t5\t0\t4.9940310492279325\n2.4064083292959397\t1\t104079\tM\tNeverM\t1985\tF: 110,000 - 129,999\t1500\t11th\t0\t1\tCleric.\t1\t1\t2.4064083292959397\n5.889846151446463\t9\t101607\tM\tSepar.\t1944\tG: 130,000 - 149,999\t1500\t< Bach.\t1\t2\tSales\t9\t0\t5.889846151446463\n4.353282003822829\t5\t103333\tM\tMarried\t1934\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t3\tTechSup\t5\t0\t4.353282003822829\n4.620710275658258\t5\t100999\tM\tMarried\t1951\tJ: 190,000 - 249,999\t15000\t7th-8th\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.670247601734303\t5\t100777\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t3\tTransp.\t5\t0\t4.670247601734303\n4.218610847953261\t4\t100539\tF\tNeverM\t1970\tH: 150,000 - 169,999\t10000\tMasters\t0\t2\tProf.\t4\t0\t4.218610847953261\n4.620710275658258\t7\t102785\tM\tMarried\t1946\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t3\tCleric.\t7\t0\t4.620710275658258\n3.501928953826699\t2\t102193\tF\tMarried\t1960\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t4-5\tOther\t2\t0\t3.501928953826699\n5.402923829194265\t5\t103722\tM\tMarried\t1955\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t3\tMachine\t5\t0\t5.402923829194265\n5.142689240716706\t4\t100173\tM\tMarried\t1959\tH: 150,000 - 169,999\t1500\tAssoc-A\t1\t3\tProf.\t4\t0\t5.142689240716706\n4.6969969244264576\t5\t102830\tM\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t0\t6-8\tExec.\t5\t0\t4.6969969244264576\n4.620710275658258\t3\t104413\tM\tMarried\t1944\tL: 300,000 and above\t15000\tMasters\t0\t3\t?\t3\t0\t4.620710275658258\n1.9160121459363793\t3\t104473\tF\tMarried\t1976\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t4-5\tProtec.\t3\t1\t1.9160121459363793\n4.7858353130812645\t4\t100789\tM\tDivorc.\t1959\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.7858353130812645\n4.218610847953261\t2\t102982\tF\tNeverM\t1970\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tProf.\t2\t0\t4.218610847953261\n4.484909086164933\t4\t101339\tM\tNeverM\t1965\tF: 110,000 - 129,999\t1500\tMasters\t1\t2\tProf.\t4\t0\t4.484909086164933\n5.846964018777726\t7\t101732\tF\tWidowed\t1944\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tExec.\t7\t0\t5.846964018777726\n5.799598212228275\t6\t102142\tM\tMarried\t1956\tF: 110,000 - 129,999\t10000\tPhD\t1\t3\tProf.\t6\t0\t5.799598212228275\n4.6222200637615884\t4\t100655\tM\tMarried\t1967\tL: 300,000 and above\t15000\tHS-grad\t1\t3\tSales\t4\t0\t4.6222200637615884\n5.85959558789996\t5\t104461\tM\tMarried\t1953\tA: Below 30,000\t3000\t< Bach.\t1\t3\tFarming\t5\t0\t5.85959558789996\n2.6738366011313683\t3\t100654\tM\tMarried\t1975\tD: 70,000 - 89,999\t9000\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n4.42704412240343\t3\t100039\tM\tMarried\t1970\tJ: 190,000 - 249,999\t15000\tAssoc-A\t1\t3\tProf.\t3\t0\t4.42704412240343\n2.2199358593989587\t3\t101889\tM\tMarried\t1974\tK: 250,000 - 299,999\t9000\tBach.\t1\t3\tSales\t3\t1\t2.2199358593989587\n5.779999961710928\t7\t103511\tM\tMarried\t1956\tB: 30,000 - 49,999\t5000\tBach.\t1\t3\tExec.\t7\t0\t5.779999961710928\n2.271737173426372\t1\t102807\tF\tNeverM\t1983\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t1\t?\t1\t1\t2.271737173426372\n5.07763059359732\t4\t104287\tM\tMarried\t1960\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tCrafts\t4\t0\t5.07763059359732\n4.678804828282409\t5\t100156\tM\tMarried\t1967\tG: 130,000 - 149,999\t10000\tHS-grad\t1\t3\tExec.\t5\t0\t4.678804828282409\n2.004308901590943\t3\t101278\tF\tNeverM\t1975\tF: 110,000 - 129,999\t5000\t11th\t0\t9+\tMachine\t3\t1\t2.004308901590943\n4.9940310492279325\t5\t103176\tM\tSepar.\t1967\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\tTransp.\t5\t0\t4.9940310492279325\n4.246865116608205\t4\t100166\tF\tMarried\t1961\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t4-5\tExec.\t4\t0\t4.246865116608205\n4.865423543092476\t7\t101042\tM\tMarried\t1969\tL: 300,000 and above\t7000\tHS-grad\t1\t3\tTransp.\t7\t0\t4.865423543092476\n2.6738366011313683\t3\t102145\tM\tNeverM\t1974\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tCleric.\t3\t1\t2.6738366011313683\n2.3128797344947984\t2\t103032\tM\tNeverM\t1980\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tOther\t2\t1\t2.3128797344947984\n2.6738366011313683\t3\t103853\tM\tNeverM\t1974\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t2\tCrafts\t3\t1\t2.6738366011313683\n4.620710275658258\t5\t100333\tM\tMarried\t1952\tL: 300,000 and above\t11000\t9th\t0\t3\tFarming\t5\t0\t4.620710275658258\n5.041966962557694\t5\t101214\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tOther\t5\t0\t5.041966962557694\n2.6738366011313683\t6\t104029\tM\tMarried\t1978\tL: 300,000 and above\t9000\t1st-4th\t0\t3\tFarming\t6\t1\t2.6738366011313683\n4.114311595632834\t3\t103263\tM\tMabsent\t1969\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tHandler\t3\t0\t4.114311595632834\n2.4451138050702506\t1\t102973\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tTechSup\t1\t1\t2.4451138050702506\n2.3128797344947984\t2\t100257\tM\tNeverM\t1980\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tOther\t2\t1\t2.3128797344947984\n4.620710275658258\t5\t103410\tM\tMarried\t1957\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t3\tMachine\t5\t0\t4.620710275658258\n4.653431298233045\t4\t100900\tM\tMarried\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tExec.\t4\t0\t4.653431298233045\n4.2597534090216875\t6\t101119\tM\tMarried\t1952\tL: 300,000 and above\t11000\t1st-4th\t0\t3\tOther\t6\t0\t4.2597534090216875\n2.4064083292959397\t4\t100329\tM\tNeverM\t1979\tF: 110,000 - 129,999\t1500\t10th\t0\t9+\tCrafts\t4\t1\t2.4064083292959397\n5.564552915849504\t8\t101266\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tProf.\t8\t0\t5.564552915849504\n7.419741889895377\t8\t100679\tM\tMarried\t1924\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t3\t?\t8\t0\t7.419741889895377\n4.620710275658258\t1\t101860\tM\tMarried\t1946\tK: 250,000 - 299,999\t15000\t10th\t0\t3\tCrafts\t1\t0\t4.620710275658258\n4.218610847953261\t4\t100615\tF\tMabsent\t1955\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t9+\t?\t4\t0\t4.218610847953261\n2.043014377365254\t2\t100725\tF\tNeverM\t1983\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tSales\t2\t1\t2.043014377365254\n3.992325137186259\t5\t100394\tM\tMarried\t1954\tF: 110,000 - 129,999\t7000\t9th\t0\t3\tOther\t5\t0\t3.992325137186259\n4.610246980978388\t5\t101884\tM\tDivorc.\t1966\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.610246980978388\n4.882454652239147\t6\t101824\tM\tMarried\t1963\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tSales\t6\t0\t4.882454652239147\n4.263379973461696\t3\t103699\tM\tMarried\t1969\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tProtec.\t3\t0\t4.263379973461696\n4.2597534090216875\t7\t101757\tM\tMabsent\t1951\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tOther\t7\t0\t4.2597534090216875\n1.682057510728684\t1\t103574\tF\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n4.851395514443539\t7\t101559\tM\tMarried\t1965\tE: 90,000 - 109,999\t5000\tMasters\t1\t3\tExec.\t7\t0\t4.851395514443539\n2.043014377365254\t2\t100820\tF\tNeverM\t1980\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t1\tMachine\t2\t1\t2.043014377365254\n4.620710275658258\t4\t104465\tM\tMarried\t1960\tH: 150,000 - 169,999\t10000\tBach.\t0\t3\tMachine\t4\t0\t4.620710275658258\n3.2022317747854605\t4\t102577\tM\tNeverM\t1974\tI: 170,000 - 189,999\t5000\tProfsc\t0\t6-8\tProf.\t4\t1\t3.2022317747854605\n4.620710275658258\t6\t102027\tM\tNeverM\t1956\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t6-8\tTechSup\t6\t0\t4.620710275658258\n4.1060009297660685\t4\t104491\tF\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tCleric.\t4\t0\t4.1060009297660685\n4.359059285063424\t5\t102702\tF\tDivorc.\t1952\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t2\tHandler\t5\t0\t4.359059285063424\n4.620710275658258\t4\t100764\tM\tSepar.\t1966\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t4\t0\t4.620710275658258\n2.6738366011313683\t1\t102339\tM\tNeverM\t1986\tJ: 190,000 - 249,999\t11000\t10th\t0\t2\tCrafts\t1\t1\t2.6738366011313683\n5.060599484450648\t6\t103004\tM\tMarried\t1966\tD: 70,000 - 89,999\t10000\t9th\t1\t3\tTransp.\t6\t0\t5.060599484450648\n5.402923829194265\t5\t100420\tM\tMarried\t1955\tG: 130,000 - 149,999\t7000\tHS-grad\t1\t3\tMachine\t5\t0\t5.402923829194265\n2.71629578498505\t3\t101293\tM\tMarried\t1978\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t3\t1\t2.71629578498505\n3.992325137186259\t4\t103947\tM\tMarried\t1962\tF: 110,000 - 129,999\t5000\tHS-grad\t0\t3\tOther\t4\t0\t3.992325137186259\n2.6738366011313683\t3\t100877\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tSales\t3\t1\t2.6738366011313683\n5.898526350753855\t7\t104346\tM\tMarried\t1955\tC: 50,000 - 69,999\t3000\tBach.\t1\t3\tExec.\t7\t0\t5.898526350753855\n2.043014377365254\t3\t103243\tF\tNeverM\t1974\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t1\tSales\t3\t1\t2.043014377365254\n4.610246980978388\t4\t101081\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t0\t4.610246980978388\n2.043014377365254\t2\t102692\tF\tNeverM\t1982\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n4.408102894056896\t4\t102155\tF\tNeverM\t1960\tF: 110,000 - 129,999\t10000\tHS-grad\t1\t9+\tCleric.\t4\t0\t4.408102894056896\n5.9233930061493965\t10\t104424\tM\tMarried\t1947\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t10\t0\t5.9233930061493965\n5.79327571191061\t5\t101578\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\tHS-grad\t1\t3\tCrafts\t5\t0\t5.79327571191061\n4.747006021607353\t4\t101512\tF\tNeverM\t1973\tI: 170,000 - 189,999\t1500\tProfsc\t0\t2\tProf.\t4\t0\t4.747006021607353\n4.2597534090216875\t5\t101933\tM\tNeverM\t1958\tI: 170,000 - 189,999\t3000\t9th\t0\t1\tOther\t5\t0\t4.2597534090216875\n5.878067345519241\t7\t104423\tF\tDivorc.\t1936\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tCleric.\t7\t0\t5.878067345519241\n4.620710275658258\t11\t101151\tM\tMabsent\t1950\tJ: 190,000 - 249,999\t9000\t9th\t0\t9+\tMachine\t11\t0\t4.620710275658258\n1.9160121459363793\t1\t101575\tF\tMarried\t1975\tL: 300,000 and above\t7000\tHS-grad\t0\t4-5\t?\t1\t1\t1.9160121459363793\n4.620710275658258\t11\t104026\tM\tMabsent\t1950\tJ: 190,000 - 249,999\t9000\t9th\t0\t9+\tMachine\t11\t0\t4.620710275658258\n2.271737173426372\t1\t103454\tF\tSepar.\t1977\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tSales\t1\t1\t2.271737173426372\n5.564552915849504\t8\t103931\tM\tMarried\t1949\tI: 170,000 - 189,999\t5000\t< Bach.\t1\t3\tProf.\t8\t0\t5.564552915849504\n4.218610847953261\t2\t103542\tF\tMabsent\t1956\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tSales\t2\t0\t4.218610847953261\n6.40671850511626\t5\t100404\tM\tMarried\t1949\tF: 110,000 - 129,999\t5000\tBach.\t1\t3\tExec.\t5\t0\t6.40671850511626\n4.660745627589677\t6\t101563\tF\tNeverM\t1956\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tExec.\t6\t0\t4.660745627589677\n4.620710275658258\t5\t102298\tM\tMarried\t1956\tJ: 190,000 - 249,999\t9000\t12th\t0\t3\tCleric.\t5\t0\t4.620710275658258\n2.6738366011313683\t2\t102530\tM\tNeverM\t1980\tI: 170,000 - 189,999\t5000\tHS-grad\t0\t2\tCrafts\t2\t1\t2.6738366011313683\n4.198321326342324\t3\t104045\tM\tMarried\t1970\tL: 300,000 and above\t9000\t< Bach.\t1\t3\tProf.\t3\t0\t4.198321326342324\n5.215673884535079\t4\t100607\tM\tMarried\t1966\tK: 250,000 - 299,999\t9000\tProfsc\t1\t3\tProf.\t4\t0\t5.215673884535079\n4.218610847953261\t5\t103725\tF\tSepar.\t1956\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t6-8\tProf.\t5\t0\t4.218610847953261\n4.218610847953261\t3\t101619\tF\tNeverM\t1964\tJ: 190,000 - 249,999\t11000\t11th\t0\t9+\tProf.\t3\t0\t4.218610847953261\n2.6738366011313683\t1\t103592\tM\tNeverM\t1980\tL: 300,000 and above\t7000\tBach.\t0\t1\tSales\t1\t1\t2.6738366011313683\n3.8576539813166915\t5\t102061\tF\tSepar.\t1953\tL: 300,000 and above\t15000\tHS-grad\t0\t9+\tOther\t5\t0\t3.8576539813166915\n4.1245592077617115\t4\t103520\tM\tMarried\t1945\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t3\t?\t4\t0\t4.1245592077617115\n3.3733214476912394\t3\t100940\tF\tMarried\t1969\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t4-5\tOther\t3\t0\t3.3733214476912394\n4.620710275658258\t5\t102030\tM\tMarried\t1965\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\tMachine\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t103030\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t9000\tBach.\t0\t1\tCleric.\t3\t1\t2.6738366011313683\n6.457378366780048\t5\t101972\tM\tMarried\t1950\tJ: 190,000 - 249,999\t11000\tPhD\t1\t3\tProf.\t5\t0\t6.457378366780048\n3.6817559768525854\t4\t102787\tF\tDivorc.\t1965\tI: 170,000 - 189,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t3.6817559768525854\n4.293192918141725\t4\t103597\tF\tWidowed\t1962\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tSales\t4\t0\t4.293192918141725\n4.620710275658258\t4\t102580\tM\tMarried\t1972\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t3\tMachine\t4\t0\t4.620710275658258\n4.328438620581096\t4\t102719\tM\tMarried\t1968\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tProf.\t4\t0\t4.328438620581096\n4.798873634457777\t5\t104222\tF\tNeverM\t1950\tH: 150,000 - 169,999\t15000\t< Bach.\t0\t2\tExec.\t5\t0\t4.798873634457777\n2.6738366011313683\t3\t100175\tM\tMarried\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n1.7297485337294347\t1\t103335\tF\tMarried\t1978\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t4-5\tExec.\t1\t1\t1.7297485337294347\n4.620710275658258\t3\t102936\tM\tMarried\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tCrafts\t3\t0\t4.620710275658258\n6.865061171338311\t5\t102310\tM\tNeverM\t1951\tF: 110,000 - 129,999\t7000\tPhD\t1\t2\tExec.\t5\t0\t6.865061171338311\n5.3360413912518245\t5\t104296\tM\tWidowed\t1952\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t9+\tTransp.\t5\t0\t5.3360413912518245\n2.271737173426372\t2\t103272\tF\tNeverM\t1983\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.271737173426372\n4.39198747959714\t4\t102125\tM\tSepar.\t1960\tL: 300,000 and above\t15000\t< Bach.\t0\t2\t?\t4\t0\t4.39198747959714\n2.043014377365254\t2\t103009\tF\tNeverM\t1983\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t2\tTechSup\t2\t1\t2.043014377365254\n2.043014377365254\t2\t100773\tF\tNeverM\t1981\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n4.39198747959714\t3\t102157\tM\tNeverM\t1969\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t6-8\tSales\t3\t0\t4.39198747959714\n4.620710275658258\t5\t102960\tM\tMarried\t1964\tK: 250,000 - 299,999\t11000\tAssoc-V\t0\t3\tCrafts\t5\t0\t4.620710275658258\n3.618467890575687\t4\t102251\tF\tDivorc.\t1966\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t3.618467890575687\n4.065083753532761\t3\t100384\tM\tDivorc.\t1971\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t9+\tMachine\t3\t0\t4.065083753532761\n4.296926828164629\t3\t100101\tM\tMarried\t1972\tH: 150,000 - 169,999\t7000\tBach.\t1\t3\tProf.\t3\t0\t4.296926828164629\n4.620710275658258\t7\t103742\tM\tNeverM\t1961\tB: 30,000 - 49,999\t1500\tMasters\t0\t2\tProf.\t7\t0\t4.620710275658258\n2.167437921105945\t1\t101074\tM\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t10th\t0\t1\tHandler\t1\t1\t2.167437921105945\n4.620710275658258\t6\t101128\tM\tMabsent\t1946\tI: 170,000 - 189,999\t1500\tAssoc-A\t0\t9+\tFarming\t6\t0\t4.620710275658258\n2.3128797344947984\t2\t104121\tM\tMarried\t1981\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tOther\t2\t1\t2.3128797344947984\n3.862885820463269\t4\t100116\tF\tMarried\t1963\tL: 300,000 and above\t9000\tAssoc-V\t0\t4-5\tProf.\t4\t0\t3.862885820463269\n4.560621189977153\t2\t103441\tF\tWidowed\t1941\tG: 130,000 - 149,999\t5000\tBach.\t0\t9+\tTechSup\t2\t0\t4.560621189977153\n2.6738366011313683\t4\t102782\tM\tMarried\t1975\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t3\tCrafts\t4\t1\t2.6738366011313683\n4.293806549593896\t5\t101779\tM\tDivorc.\t1971\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t1\tSales\t5\t0\t4.293806549593896\n2.167437921105945\t1\t101597\tM\tNeverM\t1985\tI: 170,000 - 189,999\t1500\t11th\t0\t1\tHandler\t1\t1\t2.167437921105945\n2.4451138050702506\t3\t102197\tM\tMarried\t1976\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t3\tCrafts\t3\t1\t2.4451138050702506\n2.271737173426372\t2\t102528\tF\tNeverM\t1981\tC: 50,000 - 69,999\t3000\tBach.\t0\t1\tProf.\t2\t1\t2.271737173426372\n1.7755861055298254\t3\t103465\tF\tNeverM\t1975\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t2\tTechSup\t3\t1\t1.7755861055298254\n5.284727782061964\t6\t101089\tM\tMarried\t1958\tF: 110,000 - 129,999\t1500\tAssoc-A\t1\t3\tExec.\t6\t0\t5.284727782061964\n7.718705140026032\t6\t100068\tM\tMarried\t1942\tC: 50,000 - 69,999\t9000\tHS-grad\t1\t3\tExec.\t6\t0\t7.718705140026032\n4.620710275658258\t5\t101848\tM\tMarried\t1952\tC: 50,000 - 69,999\t7000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t101236\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tFarming\t3\t1\t2.6738366011313683\n4.620710275658258\t3\t100027\tM\tMarried\t1969\tL: 300,000 and above\t11000\t9th\t0\t3\tCrafts\t3\t0\t4.620710275658258\n1.9387151250448273\t2\t104205\tM\tNeverM\t1980\tL: 300,000 and above\t7000\t< Bach.\t0\t1\tHandler\t2\t1\t1.9387151250448273\n2.271737173426372\t1\t102208\tF\tNeverM\t1986\tE: 90,000 - 109,999\t1500\t10th\t0\t1\tSales\t1\t1\t2.271737173426372\n4.620710275658258\t5\t101797\tM\tMarried\t1951\tK: 250,000 - 299,999\t7000\tBach.\t0\t3\tProf.\t5\t0\t4.620710275658258\n4.9940310492279325\t4\t103170\tM\tMarried\t1959\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n5.598099770552437\t5\t102573\tM\tMarried\t1952\tE: 90,000 - 109,999\t10000\tMasters\t1\t3\tProtec.\t5\t0\t5.598099770552437\n4.620710275658258\t5\t101101\tM\tMarried\t1951\tJ: 190,000 - 249,999\t15000\tAssoc-V\t0\t3\tCleric.\t5\t0\t4.620710275658258\n3.9511825761178327\t2\t102574\tF\tSepar.\t1958\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t9+\tMachine\t2\t0\t3.9511825761178327\n4.7166737269607495\t4\t103527\tM\tMarried\t1960\tH: 150,000 - 169,999\t15000\tHS-grad\t1\t3\tOther\t4\t0\t4.7166737269607495\n4.39198747959714\t5\t102686\tM\tMarried\t1955\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tProf.\t5\t0\t4.39198747959714\n2.043014377365254\t1\t101146\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t1\t1\t2.043014377365254\n4.9940310492279325\t7\t100491\tM\tMarried\t1949\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t3\tTransp.\t7\t0\t4.9940310492279325\n2.4064083292959397\t3\t103033\tM\tSepar.\t1975\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t2\tCrafts\t3\t1\t2.4064083292959397\n1.7309784748602794\t3\t101080\tM\tMarried\t1978\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t3\tCleric.\t3\t1\t1.7309784748602794\n4.859800067067212\t5\t101322\tF\tDivorc.\t1950\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t2\tOther\t5\t0\t4.859800067067212\n3.862885820463269\t4\t100122\tF\tMarried\t1954\tB: 30,000 - 49,999\t5000\tHS-grad\t0\t4-5\tCleric.\t4\t0\t3.862885820463269\n4.817396005119761\t4\t102695\tM\tMarried\t1964\tG: 130,000 - 149,999\t5000\tBach.\t1\t3\tProf.\t4\t0\t4.817396005119761\n4.39128099411736\t4\t100954\tF\tMarried\t1965\tI: 170,000 - 189,999\t15000\tProfsc\t0\t4-5\tSales\t4\t0\t4.39128099411736\n4.714452243488594\t5\t102118\tF\tDivorc.\t1958\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.714452243488594\n1.7755861055298254\t2\t104492\tF\tNeverM\t1985\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t1\t?\t2\t1\t1.7755861055298254\n2.043014377365254\t2\t103121\tF\tNeverM\t1983\tG: 130,000 - 149,999\t10000\t< Bach.\t0\t9+\tProf.\t2\t1\t2.043014377365254\n5.2728065349554925\t7\t100933\tM\tMarried\t1957\tL: 300,000 and above\t15000\tHS-grad\t1\t3\tSales\t7\t0\t5.2728065349554925\n4.1245592077617115\t3\t102383\tM\tMarried\t1970\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t3\tProf.\t3\t0\t4.1245592077617115\n4.9940310492279325\t6\t102929\tM\tMarried\t1955\tH: 150,000 - 169,999\t3000\tAssoc-A\t0\t3\tTransp.\t6\t0\t4.9940310492279325\n2.043014377365254\t1\t103858\tF\tNeverM\t1983\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t1\tCleric.\t1\t1\t2.043014377365254\n5.133303719371725\t4\t102733\tM\tMarried\t1962\tL: 300,000 and above\t15000\tMasters\t1\t3\tExec.\t4\t0\t5.133303719371725\n2.0841569384336807\t2\t104096\tM\tNeverM\t1982\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n4.39198747959714\t4\t103496\tM\tMarried\t1954\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4.39198747959714\n5.898359762074506\t3\t103116\tF\tWidowed\t1941\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t2\tExec.\t3\t0\t5.898359762074506\n2.271737173426372\t2\t103806\tF\tNeverM\t1981\tL: 300,000 and above\t7000\tHS-grad\t0\t1\tSales\t2\t1\t2.271737173426372\n4.620710275658258\t8\t104392\tM\tMarried\t1959\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t3\tSales\t8\t0\t4.620710275658258\n5.663158417671838\t5\t102084\tM\tMarried\t1951\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t5\t0\t5.663158417671838\n4.218610847953261\t5\t103978\tF\tNeverM\t1958\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.218610847953261\n4.114311595632834\t5\t101346\tM\tMarried\t1958\tI: 170,000 - 189,999\t11000\tAssoc-A\t0\t3\tHandler\t5\t0\t4.114311595632834\n2.271737173426372\t2\t103473\tF\tNeverM\t1981\tL: 300,000 and above\t9000\tBach.\t0\t1\tCleric.\t2\t1\t2.271737173426372\n2.4451138050702506\t2\t102827\tM\tNeverM\t1982\tL: 300,000 and above\t11000\t< Bach.\t0\t1\t?\t2\t1\t2.4451138050702506\n4.620710275658258\t2\t100797\tM\tMabsent\t1970\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tSales\t2\t0\t4.620710275658258\n4.916449655477578\t4\t103747\tF\tDivorc.\t1961\tL: 300,000 and above\t9000\tAssoc-A\t1\t9+\tProf.\t4\t0\t4.916449655477578\n2.6738366011313683\t3\t103125\tM\tMarried\t1975\tL: 300,000 and above\t15000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n6.445423980890155\t5\t100738\tM\tMarried\t1949\tH: 150,000 - 169,999\t10000\t< Bach.\t1\t3\tExec.\t5\t0\t6.445423980890155\n4.620710275658258\t10\t100334\tM\tMarried\t1945\tC: 50,000 - 69,999\t5000\tBach.\t0\t3\t?\t10\t0\t4.620710275658258\n6.494916794000346\t7\t102046\tM\tMarried\t1938\tI: 170,000 - 189,999\t3000\tHS-grad\t0\t3\tExec.\t7\t0\t6.494916794000346\n2.4451138050702506\t3\t103726\tM\tMarried\t1977\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t3\tProtec.\t3\t1\t2.4451138050702506\n4.6248299703147495\t3\t102930\tM\tNeverM\t1972\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tExec.\t3\t0\t4.6248299703147495\n2.6738366011313683\t1\t103233\tM\tNeverM\t1975\tB: 30,000 - 49,999\t1500\tBach.\t0\t1\tProf.\t1\t1\t2.6738366011313683\n2.167437921105945\t2\t101281\tM\tNeverM\t1983\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.349871577647072\t4\t104410\tM\tMarried\t1967\tL: 300,000 and above\t11000\tPhD\t0\t3\tProf.\t4\t0\t5.349871577647072\n4.620710275658258\t3\t100480\tM\tMarried\t1970\tI: 170,000 - 189,999\t9000\t10th\t0\t3\tMachine\t3\t0\t4.620710275658258\n5.239259680252559\t5\t101176\tM\tMarried\t1954\tH: 150,000 - 169,999\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t5.239259680252559\n4.353282003822829\t4\t101065\tM\tNeverM\t1964\tF: 110,000 - 129,999\t10000\tAssoc-V\t0\t2\tMachine\t4\t0\t4.353282003822829\n2.5249098060576216\t2\t102630\tM\tNeverM\t1980\tD: 70,000 - 89,999\t3000\t< Bach.\t0\t2\tExec.\t2\t1\t2.5249098060576216\n2.6738366011313683\t2\t103003\tM\tMarried\t1982\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t3\tCrafts\t2\t1\t2.6738366011313683\n4.777740329765493\t5\t101023\tF\tDivorc.\t1957\tG: 130,000 - 149,999\t3000\tAssoc-A\t0\t2\tTechSup\t5\t0\t4.777740329765493\n4.841028416042391\t5\t102371\tF\tDivorc.\t1956\tJ: 190,000 - 249,999\t9000\tAssoc-V\t0\t2\tCleric.\t5\t0\t4.841028416042391\n1.9107803067898017\t1\t102974\tF\tNeverM\t1984\tE: 90,000 - 109,999\t10000\t10th\t0\t6-8\tOther\t1\t1\t1.9107803067898017\n2.004308901590943\t2\t104274\tF\tNeverM\t1981\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.004308901590943\n1.4146292388932553\t2\t101718\tF\tNeverM\t1984\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t6-8\tOther\t2\t1\t1.4146292388932553\n4.620710275658258\t5\t102838\tM\tNeverM\t1950\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t6-8\tCleric.\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t104190\tM\tMarried\t1977\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n4.620710275658258\t5\t104091\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.271737173426372\t3\t104175\tF\tNeverM\t1978\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t2\tCleric.\t3\t1\t2.271737173426372\n2.043014377365254\t2\t101296\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n2.4451138050702506\t2\t102536\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tMachine\t2\t1\t2.4451138050702506\n4.370458937064541\t4\t103072\tM\tMarried\t1971\tB: 30,000 - 49,999\t7000\tBach.\t1\t3\tExec.\t4\t0\t4.370458937064541\n3.6851165195348585\t3\t103503\tF\tMarried\t1970\tB: 30,000 - 49,999\t1500\tBach.\t1\t4-5\tExec.\t3\t0\t3.6851165195348585\n4.620710275658258\t5\t104236\tM\tNeverM\t1956\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.620710275658258\n2.6738366011313683\t4\t102534\tM\tMarried\t1974\tE: 90,000 - 109,999\t7000\tBach.\t0\t3\tMachine\t4\t1\t2.6738366011313683\n4.620710275658258\t5\t103230\tM\tMarried\t1956\tD: 70,000 - 89,999\t1500\tBach.\t0\t3\tProf.\t5\t0\t4.620710275658258\n4.798873634457777\t5\t101102\tF\tNeverM\t1950\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t2\tExec.\t5\t0\t4.798873634457777\n4.6222200637615884\t4\t102655\tM\tMarried\t1967\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t4\t0\t4.6222200637615884\n2.6738366011313683\t1\t104169\tM\tNeverM\t1985\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tProf.\t1\t1\t2.6738366011313683\n4.560621189977153\t5\t101408\tF\tWidowed\t1937\tL: 300,000 and above\t15000\tBach.\t0\t2\tProf.\t5\t0\t4.560621189977153\n4.9940310492279325\t5\t101179\tM\tNeverM\t1964\tL: 300,000 and above\t11000\tAssoc-A\t0\t2\tTransp.\t5\t0\t4.9940310492279325\n2.6738366011313683\t2\t100604\tM\tNeverM\t1981\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t1\tProf.\t2\t1\t2.6738366011313683\n2.6738366011313683\t1\t100586\tM\tNeverM\t1980\tL: 300,000 and above\t9000\tBach.\t0\t1\tSales\t1\t1\t2.6738366011313683\n4.5236145619392545\t5\t103814\tM\tMarried\t1965\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tSales\t5\t0\t4.5236145619392545\n2.6450579469960465\t3\t100306\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tTransp.\t3\t1\t2.6450579469960465\n4.088946208335074\t5\t100542\tF\tSepar.\t1965\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t2\tExec.\t5\t0\t4.088946208335074\n4.2597534090216875\t5\t101910\tM\tMarried\t1950\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4.2597534090216875\n4.620710275658258\t4\t100705\tM\tMarried\t1968\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.39198747959714\t6\t102144\tM\tMabsent\t1928\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tCrafts\t6\t0\t4.39198747959714\n5.179839757470489\t5\t102359\tM\tDivorc.\t1957\tE: 90,000 - 109,999\t3000\tHS-grad\t0\t2\tCrafts\t5\t0\t5.179839757470489\n2.39808069161046\t3\t103036\tM\tMarried\t1977\tJ: 190,000 - 249,999\t10000\tBach.\t1\t3\tTransp.\t3\t1\t2.39808069161046\n4.037054945467531\t2\t103417\tF\tDivorc.\t1963\tE: 90,000 - 109,999\t3000\t11th\t0\t6-8\tOther\t2\t0\t4.037054945467531\n4.169289016042967\t4\t102609\tF\tDivorc.\t1963\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.169289016042967\n3.9945129028053685\t5\t100376\tF\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tBach.\t1\t4-5\tCleric.\t5\t0\t3.9945129028053685\n3.3733214476912394\t3\t104285\tF\tMarried\t1969\tE: 90,000 - 109,999\t7000\tHS-grad\t1\t4-5\tOther\t3\t0\t3.3733214476912394\n2.6738366011313683\t4\t102966\tM\tNeverM\t1976\tH: 150,000 - 169,999\t15000\tAssoc-V\t0\t2\tProtec.\t4\t1\t2.6738366011313683\n2.6738366011313683\t1\t103612\tM\tNeverM\t1982\tL: 300,000 and above\t9000\tAssoc-A\t0\t1\t?\t1\t1\t2.6738366011313683\n4.560621189977153\t6\t102252\tF\tWidowed\t1946\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCleric.\t6\t0\t4.560621189977153\n3.590225709481263\t5\t104398\tF\tSepar.\t1952\tF: 110,000 - 129,999\t9000\t9th\t0\t6-8\tOther\t5\t0\t3.590225709481263\n3.938507580978964\t3\t102800\tM\tDivorc.\t1973\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tMachine\t3\t0\t3.938507580978964\n4.516886767137294\t5\t100357\tM\tNeverM\t1964\tL: 300,000 and above\t11000\t< Bach.\t0\t2\tExec.\t5\t0\t4.516886767137294\n4.620710275658258\t4\t100650\tM\tMarried\t1945\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tFarming\t4\t0\t4.620710275658258\n1.949289582422736\t3\t100083\tF\tDivorc.\t1974\tA: Below 30,000\t1500\tBach.\t0\t9+\tOther\t3\t1\t1.949289582422736\n4.152954450312265\t3\t103937\tM\tDivorc.\t1969\tF: 110,000 - 129,999\t7000\tAssoc-A\t0\t2\tMachine\t3\t0\t4.152954450312265\n5.533041123433051\t6\t101208\tM\tMarried\t1953\tH: 150,000 - 169,999\t7000\tMasters\t1\t3\tProf.\t6\t0\t5.533041123433051\n2.6738366011313683\t3\t102505\tM\tNeverM\t1976\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tMachine\t3\t1\t2.6738366011313683\n4.620710275658258\t7\t104323\tM\tNeverM\t1944\tL: 300,000 and above\t9000\tBach.\t0\t2\tCrafts\t7\t0\t4.620710275658258\n4.700176316760761\t5\t102052\tF\tDivorc.\t1954\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.700176316760761\n1.9107803067898017\t2\t104106\tF\tNeverM\t1982\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tOther\t2\t1\t1.9107803067898017\n4.537309308351723\t4\t100719\tF\tMarried\t1952\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t4-5\tExec.\t4\t0\t4.537309308351723\n2.043014377365254\t1\t101199\tF\tNeverM\t1982\tL: 300,000 and above\t15000\t< Bach.\t0\t2\tSales\t1\t1\t2.043014377365254\n2.6912374615512817\t3\t101936\tM\tNeverM\t1976\tH: 150,000 - 169,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t2.6912374615512817\n2.4451138050702506\t2\t104467\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n5.336590639783026\t5\t103020\tM\tMarried\t1960\tI: 170,000 - 189,999\t1500\tMasters\t1\t3\tExec.\t5\t0\t5.336590639783026\n5.0560049860005165\t5\t101600\tM\tMarried\t1958\tF: 110,000 - 129,999\t3000\t< Bach.\t1\t3\tExec.\t5\t0\t5.0560049860005165\n2.6738366011313683\t4\t100937\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t1\t2.6738366011313683\n4.557161416642202\t4\t101203\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tSales\t4\t0\t4.557161416642202\n2.6738366011313683\t3\t103257\tM\tMarried\t1974\tH: 150,000 - 169,999\t1500\tAssoc-V\t0\t3\tProf.\t3\t1\t2.6738366011313683\n4.42704412240343\t3\t102250\tM\tMarried\t1970\tH: 150,000 - 169,999\t5000\tBach.\t1\t3\tProf.\t3\t0\t4.42704412240343\n2.6738366011313683\t2\t101634\tM\tMarried\t1979\tJ: 190,000 - 249,999\t10000\tBach.\t0\t3\tSales\t2\t1\t2.6738366011313683\n4.687278710880975\t1\t100042\tM\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t1\t0\t4.687278710880975\n3.9898880518921436\t5\t101340\tF\tMabsent\t1958\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tCleric.\t5\t0\t3.9898880518921436\n4.218610847953261\t3\t100143\tF\tNeverM\t1969\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tProf.\t3\t0\t4.218610847953261\n3.846883323797406\t3\t100124\tM\tMarried\t1939\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tHandler\t3\t0\t3.846883323797406\n2.4451138050702506\t2\t102724\tM\tNeverM\t1981\tL: 300,000 and above\t11000\t< Bach.\t0\t1\t?\t2\t1\t2.4451138050702506\n2.271737173426372\t3\t103359\tF\tNeverM\t1978\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t2.271737173426372\n4.620710275658258\t3\t100783\tM\tMarried\t1969\tK: 250,000 - 299,999\t7000\t11th\t0\t3\tCrafts\t3\t0\t4.620710275658258\n4.752337358000361\t4\t102307\tM\tMarried\t1965\tE: 90,000 - 109,999\t10000\tHS-grad\t1\t3\tCleric.\t4\t0\t4.752337358000361\n5.012571946477934\t4\t102380\tM\tMarried\t1961\tH: 150,000 - 169,999\t3000\tMasters\t1\t3\tProf.\t4\t0\t5.012571946477934\n4.03103061296057\t2\t100776\tM\tMarried\t1966\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tOther\t2\t0\t4.03103061296057\n4.597113920339325\t4\t102406\tM\tMarried\t1968\tI: 170,000 - 189,999\t10000\tHS-grad\t1\t3\tExec.\t4\t0\t4.597113920339325\n4.9940310492279325\t4\t103504\tM\tMarried\t1961\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n6.880664899802468\t6\t103214\tM\tDivorc.\t1952\tF: 110,000 - 129,999\t1500\tBach.\t1\t2\tExec.\t6\t0\t6.880664899802468\n2.271737173426372\t1\t103028\tF\tNeverM\t1978\tK: 250,000 - 299,999\t9000\tBach.\t0\t2\tCleric.\t1\t1\t2.271737173426372\n4.620710275658258\t9\t103800\tM\tMarried\t1950\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t3\tCrafts\t9\t0\t4.620710275658258\n2.6738366011313683\t3\t101502\tM\tNeverM\t1976\tI: 170,000 - 189,999\t9000\tBach.\t0\t2\tSales\t3\t1\t2.6738366011313683\n2.0937805299594032\t4\t100121\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t1\t2.0937805299594032\n4.236206594032943\t3\t101967\tF\tMarried\t1940\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t4-5\tTransp.\t3\t0\t4.236206594032943\n4.765308253166815\t5\t101387\tM\tMarried\t1966\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t3\tTransp.\t5\t0\t4.765308253166815\n3.8576539813166915\t5\t101931\tF\tSepar.\t1952\tE: 90,000 - 109,999\t1500\tAssoc-A\t0\t2\tOther\t5\t0\t3.8576539813166915\n4.39198747959714\t3\t103715\tM\tMarried\t1972\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t0\t4.39198747959714\n4.05422250995173\t3\t103364\tF\tWidowed\t1967\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t9+\tHandler\t3\t0\t4.05422250995173\n5.070436910239451\t7\t104093\tM\tMarried\t1956\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tProf.\t7\t0\t5.070436910239451\n4.620710275658258\t4\t104273\tM\tMarried\t1966\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tCleric.\t4\t0\t4.620710275658258\n4.9940310492279325\t4\t101632\tM\tSepar.\t1968\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t1\tTransp.\t4\t0\t4.9940310492279325\n4.39198747959714\t5\t101808\tM\tMarried\t1960\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tFarming\t5\t0\t4.39198747959714\n3.9898880518921436\t4\t100222\tF\tNeverM\t1972\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t2\tSales\t4\t0\t3.9898880518921436\n5.24255597140899\t4\t101270\tM\tMarried\t1966\tA: Below 30,000\t1500\tHS-grad\t1\t3\tMachine\t4\t0\t5.24255597140899\n5.2207569337037825\t5\t100948\tF\tDivorc.\t1950\tG: 130,000 - 149,999\t5000\t7th-8th\t0\t2\tMachine\t5\t0\t5.2207569337037825\n1.926154416218452\t4\t100071\tM\tMarried\t1975\tG: 130,000 - 149,999\t9000\t< Bach.\t1\t3\tSales\t4\t1\t1.926154416218452\n2.4451138050702506\t2\t101379\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n2.6738366011313683\t3\t103199\tM\tNeverM\t1982\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t6-8\t?\t3\t1\t2.6738366011313683\n5.064846272795393\t6\t103697\tF\tMarried\t1943\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t4-5\tOther\t6\t0\t5.064846272795393\n4.557161416642202\t4\t104292\tM\tMarried\t1968\tI: 170,000 - 189,999\t1500\tBach.\t1\t1\tSales\t4\t0\t4.557161416642202\n4.114311595632834\t4\t103486\tM\tMarried\t1967\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tHandler\t4\t0\t4.114311595632834\n5.190202349786276\t1\t100822\tM\tDivorc.\t1962\tL: 300,000 and above\t9000\tMasters\t1\t9+\tSales\t1\t0\t5.190202349786276\n2.271737173426372\t1\t100830\tF\tNeverM\t1986\tL: 300,000 and above\t11000\t11th\t0\t1\tCleric.\t1\t1\t2.271737173426372\n2.6738366011313683\t2\t104004\tM\tNeverM\t1981\tG: 130,000 - 149,999\t10000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.6738366011313683\n4.39198747959714\t3\t101880\tM\tMarried\t1969\tL: 300,000 and above\t7000\t< Bach.\t0\t3\tCrafts\t3\t0\t4.39198747959714\n4.620710275658258\t3\t101111\tM\tNeverM\t1972\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t1\tCrafts\t3\t0\t4.620710275658258\n4.2547474912829415\t4\t100405\tF\tMarried\t1961\tE: 90,000 - 109,999\t9000\tHS-grad\t1\t4-5\tMachine\t4\t0\t4.2547474912829415\n4.620710275658258\t6\t101174\tM\tMarried\t1947\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.620710275658258\n6.281317355886131\t5\t103261\tM\tSepar.\t1958\tJ: 190,000 - 249,999\t15000\tPhD\t1\t9+\tExec.\t5\t0\t6.281317355886131\n5.175987536186261\t11\t102557\tM\tMarried\t1933\tA: Below 30,000\t1500\tHS-grad\t0\t3\t?\t11\t0\t5.175987536186261\n3.8292522293404545\t4\t100209\tF\tDivorc.\t1968\tG: 130,000 - 149,999\t7000\t< Bach.\t1\t2\tExec.\t4\t0\t3.8292522293404545\n4.39198747959714\t4\t104016\tM\tNeverM\t1968\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t2\tProtec.\t4\t0\t4.39198747959714\n4.03103061296057\t3\t103557\tM\tMarried\t1971\tE: 90,000 - 109,999\t9000\t< Bach.\t0\t3\tOther\t3\t0\t4.03103061296057\n1.9160121459363793\t3\t102279\tF\tMarried\t1978\tJ: 190,000 - 249,999\t15000\tBach.\t0\t4-5\tCleric.\t3\t1\t1.9160121459363793\n4.620710275658258\t5\t103344\tM\tMarried\t1950\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t3\tMachine\t5\t0\t4.620710275658258\n4.620710275658258\t6\t103748\tM\tMabsent\t1946\tI: 170,000 - 189,999\t10000\tAssoc-A\t0\t9+\tFarming\t6\t0\t4.620710275658258\n2.004308901590943\t2\t102638\tF\tNeverM\t1981\tF: 110,000 - 129,999\t10000\tBach.\t0\t1\tCleric.\t2\t1\t2.004308901590943\n5.533041123433051\t8\t100809\tM\tMarried\t1953\tL: 300,000 and above\t11000\tBach.\t1\t3\tSales\t8\t0\t5.533041123433051\n5.996377649967769\t11\t102326\tM\tMarried\t1954\tH: 150,000 - 169,999\t11000\tProfsc\t1\t3\tProf.\t11\t0\t5.996377649967769\n2.043014377365254\t2\t101903\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t1\tSales\t2\t1\t2.043014377365254\n4.620710275658258\t5\t103367\tM\tNeverM\t1970\tD: 70,000 - 89,999\t1500\tBach.\t0\t2\tProf.\t5\t0\t4.620710275658258\n5.533041123433051\t6\t103873\tM\tMarried\t1953\tH: 150,000 - 169,999\t1500\tMasters\t1\t3\tProf.\t6\t0\t5.533041123433051\n5.33067149871701\t9\t103031\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tProf.\t9\t0\t5.33067149871701\n2.6738366011313683\t1\t100186\tM\tNeverM\t1985\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\t?\t1\t1\t2.6738366011313683\n4.620710275658258\t8\t103172\tM\tMabsent\t1957\tG: 130,000 - 149,999\t1500\tHS-grad\t0\t2\tFarming\t8\t0\t4.620710275658258\n4.39198747959714\t4\t102531\tM\tMarried\t1971\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tSales\t4\t0\t4.39198747959714\n4.636607127984462\t5\t103590\tM\tMarried\t1970\tL: 300,000 and above\t11000\tBach.\t0\t1\tExec.\t5\t0\t4.636607127984462\n2.4451138050702506\t3\t101169\tM\tNeverM\t1976\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tSales\t3\t1\t2.4451138050702506\n4.218610847953261\t6\t101774\tF\tNeverM\t1956\tG: 130,000 - 149,999\t7000\tMasters\t0\t2\tProf.\t6\t0\t4.218610847953261\n5.432992102578083\t8\t100517\tM\tDivorc.\t1953\tJ: 190,000 - 249,999\t9000\t7th-8th\t0\t2\tCrafts\t8\t0\t5.432992102578083\n2.4451138050702506\t1\t101153\tM\tNeverM\t1983\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t1\t?\t1\t1\t2.4451138050702506\n5.306415930024286\t8\t103753\tM\tDivorc.\t1955\tB: 30,000 - 49,999\t5000\tMasters\t0\t2\tProtec.\t8\t0\t5.306415930024286\n5.646127308525166\t5\t100818\tM\tMarried\t1957\tK: 250,000 - 299,999\t7000\tBach.\t1\t3\tTransp.\t5\t0\t5.646127308525166\n1.643352034954373\t1\t104432\tF\tNeverM\t1986\tF: 110,000 - 129,999\t10000\t10th\t0\t1\tOther\t1\t1\t1.643352034954373\n4.39198747959714\t5\t102320\tM\tMarried\t1966\tC: 50,000 - 69,999\t7000\t< Bach.\t0\t3\tCrafts\t5\t0\t4.39198747959714\n4.393497267700482\t4\t102167\tM\tMarried\t1967\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t3\tProtec.\t4\t0\t4.393497267700482\n5.875391844385376\t4\t103532\tM\tDivorc.\t1959\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t2\tExec.\t4\t0\t5.875391844385376\n3.68756693633037\t3\t101336\tF\tDivorc.\t1970\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t9+\tCleric.\t3\t0\t3.68756693633037\n4.199664323340584\t6\t103711\tF\tWidowed\t1954\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t2\tOther\t6\t0\t4.199664323340584\n4.9139664446556\t8\t102494\tM\tMarried\t1959\tL: 300,000 and above\t9000\t< Bach.\t1\t3\tSales\t8\t0\t4.9139664446556\n4.714452243488594\t5\t103695\tF\tDivorc.\t1958\tJ: 190,000 - 249,999\t9000\tMasters\t0\t2\tProf.\t5\t0\t4.714452243488594\n4.39198747959714\t5\t101630\tM\tMarried\t1963\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tSales\t5\t0\t4.39198747959714\n2.6738366011313683\t4\t100960\tM\tNeverM\t1975\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t2\tSales\t4\t1\t2.6738366011313683\n3.9511825761178327\t5\t101843\tF\tNeverM\t1950\tF: 110,000 - 129,999\t3000\tBach.\t0\t2\tProf.\t5\t0\t3.9511825761178327\n4.587876070934797\t5\t102055\tF\tDivorc.\t1960\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.587876070934797\n2.6738366011313683\t3\t102072\tM\tMarried\t1976\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tCleric.\t3\t1\t2.6738366011313683\n4.620710275658258\t3\t103588\tM\tMarried\t1969\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t3\t0\t4.620710275658258\n1.7755861055298254\t2\t102884\tF\tSepar.\t1979\tF: 110,000 - 129,999\t3000\t< Bach.\t0\t9+\tCleric.\t2\t1\t1.7755861055298254\n1.682057510728684\t1\t100568\tF\tNeverM\t1983\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n2.043014377365254\t3\t104417\tF\tNeverM\t1974\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t9+\tCleric.\t3\t1\t2.043014377365254\n4.39198747959714\t7\t100093\tM\tMarried\t1946\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tSales\t7\t0\t4.39198747959714\n2.3128797344947984\t1\t101886\tM\tNeverM\t1986\tE: 90,000 - 109,999\t9000\t10th\t0\t1\tOther\t1\t1\t2.3128797344947984\n4.587876070934797\t2\t103027\tF\tDivorc.\t1960\tE: 90,000 - 109,999\t7000\tBach.\t0\t9+\tProf.\t2\t0\t4.587876070934797\n4.2597534090216875\t2\t102185\tM\tMarried\t1971\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t3\tOther\t2\t0\t4.2597534090216875\n5.07763059359732\t2\t101448\tM\tMarried\t1960\tJ: 190,000 - 249,999\t15000\tBach.\t1\t3\tTechSup\t2\t0\t5.07763059359732\n4.620710275658258\t4\t100482\tM\tMarried\t1959\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n5.110143927101873\t4\t100914\tM\tDivorc.\t1964\tL: 300,000 and above\t9000\t11th\t0\t1\tTransp.\t4\t0\t5.110143927101873\n5.502790559886549\t4\t102266\tM\tMarried\t1962\tA: Below 30,000\t1500\tMasters\t1\t3\tProf.\t4\t0\t5.502790559886549\n4.419850439045547\t5\t102851\tM\tMarried\t1966\tF: 110,000 - 129,999\t5000\tHS-grad\t1\t3\tCrafts\t5\t0\t4.419850439045547\n4.620710275658258\t5\t102912\tM\tNeverM\t1960\tI: 170,000 - 189,999\t3000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.620710275658258\n2.2812133072684446\t3\t104118\tF\tNeverM\t1975\tI: 170,000 - 189,999\t15000\tHS-grad\t0\t1\tExec.\t3\t1\t2.2812133072684446\n4.620710275658258\t5\t103647\tM\tMarried\t1955\tI: 170,000 - 189,999\t9000\tAssoc-A\t0\t3\tMachine\t5\t0\t4.620710275658258\n4.620710275658258\t6\t104049\tM\tMarried\t1947\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.620710275658258\n4.3125782006187166\t4\t100434\tM\tDivorc.\t1965\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tOther\t4\t0\t4.3125782006187166\n1.3996702199163877\t3\t103513\tF\tDivorc.\t1976\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t9+\tCrafts\t3\t1\t1.3996702199163877\n4.39198747959714\t4\t103985\tM\tMarried\t1963\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t3\tCrafts\t4\t0\t4.39198747959714\n2.271737173426372\t0\t101135\tF\tNeverM\t1986\tH: 150,000 - 169,999\t7000\t10th\t0\t9+\tSales\t0\t1\t2.271737173426372\n5.446895816578845\t4\t102077\tM\tDivorc.\t1960\tC: 50,000 - 69,999\t3000\tBach.\t1\t9+\tSales\t4\t0\t5.446895816578845\n4.218610847953261\t5\t100062\tF\tNeverM\t1963\tK: 250,000 - 299,999\t15000\tBach.\t0\t2\tTechSup\t5\t0\t4.218610847953261\n5.267704126988065\t5\t104338\tF\tNeverM\t1955\tH: 150,000 - 169,999\t3000\t< Bach.\t1\t2\tExec.\t5\t0\t5.267704126988065\n4.353282003822829\t5\t100911\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCrafts\t5\t0\t4.353282003822829\n1.9387151250448273\t2\t100957\tM\tNeverM\t1980\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t2\tHandler\t2\t1\t1.9387151250448273\n4.39198747959714\t6\t100058\tM\tMarried\t1961\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t3\tFarming\t6\t0\t4.39198747959714\n4.54695889470149\t5\t102415\tM\tDivorc.\t1967\tJ: 190,000 - 249,999\t11000\tBach.\t0\t9+\tProf.\t5\t0\t4.54695889470149\n5.6865300558553145\t7\t103536\tF\tDivorc.\t1955\tI: 170,000 - 189,999\t10000\tAssoc-V\t1\t9+\tProf.\t7\t0\t5.6865300558553145\n4.1060009297660685\t4\t100262\tF\tDivorc.\t1964\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.1060009297660685\n5.142689240716706\t4\t100322\tM\tMarried\t1959\tK: 250,000 - 299,999\t9000\tHS-grad\t1\t3\tSales\t4\t0\t5.142689240716706\n2.3128797344947984\t3\t102860\tM\tMarried\t1975\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t3\tOther\t3\t1\t2.3128797344947984\n4.726602777392504\t4\t101017\tM\tMarried\t1962\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.726602777392504\n2.043014377365254\t2\t100810\tF\tNeverM\t1983\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n2.6738366011313683\t2\t102092\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tProf.\t2\t1\t2.6738366011313683\n6.661917434700385\t0\t101693\tF\tMarried\t1924\tE: 90,000 - 109,999\t7000\tAssoc-A\t1\t4-5\t?\t0\t0\t6.661917434700385\n5.598099770552437\t5\t100778\tM\tMarried\t1952\tI: 170,000 - 189,999\t1500\tBach.\t1\t3\tProf.\t5\t0\t5.598099770552437\n4.620710275658258\t7\t101918\tM\tMarried\t1945\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t7\t0\t4.620710275658258\n4.36198547528403\t3\t101422\tM\tMarried\t1971\tK: 250,000 - 299,999\t15000\tAssoc-A\t1\t3\tTechSup\t3\t0\t4.36198547528403\n2.678457631819583\t3\t102081\tM\tNeverM\t1974\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tExec.\t3\t1\t2.678457631819583\n5.284045019980681\t4\t101185\tF\tDivorc.\t1949\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t2\t?\t4\t0\t5.284045019980681\n3.846883323797406\t6\t102540\tM\tNeverM\t1948\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tHandler\t6\t0\t3.846883323797406\n3.59545754862784\t2\t103506\tF\tMarried\t1971\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t4-5\tCleric.\t2\t0\t3.59545754862784\n2.4451138050702506\t1\t101234\tM\tNeverM\t1978\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t2\tCrafts\t1\t1\t2.4451138050702506\n4.967604588596188\t5\t100014\tF\tDivorc.\t1954\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tCleric.\t5\t0\t4.967604588596188\n4.218610847953261\t3\t102600\tF\tNeverM\t1973\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tSales\t3\t0\t4.218610847953261\n2.4451138050702506\t3\t104452\tM\tNeverM\t1982\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t1\t?\t3\t1\t2.4451138050702506\n4.0249446946984335\t4\t101535\tF\tNeverM\t1970\tL: 300,000 and above\t9000\tBach.\t1\t2\tProf.\t4\t0\t4.0249446946984335\n4.9940310492279325\t4\t101211\tM\tMarried\t1965\tG: 130,000 - 149,999\t5000\tAssoc-A\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n2.177685533234822\t2\t102265\tM\tNeverM\t1981\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.177685533234822\n4.620710275658258\t4\t100067\tM\tNeverM\t1962\tH: 150,000 - 169,999\t5000\tBach.\t0\t2\tTechSup\t4\t0\t4.620710275658258\n3.871620235683295\t2\t102043\tF\tDivorc.\t1962\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tOther\t2\t0\t3.871620235683295\n4.2597534090216875\t4\t103539\tM\tMarried\t1965\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n4.620710275658258\t5\t101006\tM\tMarried\t1969\tE: 90,000 - 109,999\t5000\tBach.\t0\t3\tSales\t5\t0\t4.620710275658258\n4.353282003822829\t6\t104138\tM\tMarried\t1939\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.353282003822829\n1.4146292388932553\t1\t102586\tF\tNeverM\t1983\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t2\tOther\t1\t1\t1.4146292388932553\n4.933941963546828\t4\t100379\tF\tWidowed\t1961\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t9+\tTransp.\t4\t0\t4.933941963546828\n5.308474569027155\t7\t103091\tF\tDivorc.\t1945\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t9+\tCleric.\t7\t0\t5.308474569027155\n4.817396005119761\t4\t104325\tM\tMarried\t1964\tB: 30,000 - 49,999\t3000\t9th\t1\t3\tMachine\t4\t0\t4.817396005119761\n4.218610847953261\t5\t102701\tF\tSepar.\t1953\tE: 90,000 - 109,999\t10000\t1st-4th\t0\t9+\tProf.\t5\t0\t4.218610847953261\n2.603937207445597\t3\t102502\tM\tNeverM\t1983\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tExec.\t3\t1\t2.603937207445597\n4.620710275658258\t6\t103971\tM\tMabsent\t1944\tG: 130,000 - 149,999\t1500\t10th\t0\t2\tProtec.\t6\t0\t4.620710275658258\n5.7762446027639385\t7\t104345\tM\tMarried\t1955\tH: 150,000 - 169,999\t1500\tHS-grad\t1\t3\tTransp.\t7\t0\t5.7762446027639385\n4.620710275658258\t5\t103802\tM\tSepar.\t1962\tH: 150,000 - 169,999\t3000\tAssoc-A\t0\t2\tCrafts\t5\t0\t4.620710275658258\n4.39198747959714\t7\t101324\tM\tMarried\t1954\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t3\tSales\t7\t0\t4.39198747959714\n4.7858353130812645\t4\t103810\tM\tDivorc.\t1959\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.7858353130812645\n4.1245592077617115\t4\t100710\tM\tMarried\t1945\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t3\t?\t4\t0\t4.1245592077617115\n4.39198747959714\t4\t104264\tM\tNeverM\t1962\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tCrafts\t4\t0\t4.39198747959714\n2.4451138050702506\t2\t100873\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n4.293806549593896\t3\t104134\tM\tDivorc.\t1971\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tMachine\t3\t0\t4.293806549593896\n4.620710275658258\t1\t102450\tM\tMarried\t1961\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tSales\t1\t0\t4.620710275658258\n4.620710275658258\t6\t101235\tM\tMarried\t1960\tK: 250,000 - 299,999\t9000\tAssoc-A\t0\t3\tSales\t6\t0\t4.620710275658258\n1.9107803067898017\t2\t104327\tF\tNeverM\t1984\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tOther\t2\t1\t1.9107803067898017\n5.2728065349554925\t6\t101361\tM\tMarried\t1957\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tCrafts\t6\t0\t5.2728065349554925\n2.043014377365254\t1\t100242\tF\tNeverM\t1982\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t2\tProf.\t1\t1\t2.043014377365254\n2.6738366011313683\t2\t100240\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tBach.\t0\t1\t?\t2\t1\t2.6738366011313683\n2.4451138050702506\t4\t103390\tM\tMarried\t1975\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tFarming\t4\t1\t2.4451138050702506\n6.248686241746341\t8\t102765\tM\tMarried\t1942\tD: 70,000 - 89,999\t3000\tHS-grad\t1\t3\tCrafts\t8\t0\t6.248686241746341\n2.6738366011313683\t2\t102968\tM\tMarried\t1979\tK: 250,000 - 299,999\t15000\t7th-8th\t0\t3\tCrafts\t2\t1\t2.6738366011313683\n3.474043725850265\t4\t100035\tF\tMarried\t1973\tH: 150,000 - 169,999\t5000\tBach.\t1\t4-5\tProf.\t4\t0\t3.474043725850265\n2.224556890087115\t3\t101096\tM\tMarried\t1974\tC: 50,000 - 69,999\t1500\tBach.\t1\t3\tExec.\t3\t1\t2.224556890087115\n3.592384001857444\t4\t102460\tM\tNeverM\t1954\tE: 90,000 - 109,999\t3000\tBach.\t0\t2\tHouse-s\t4\t0\t3.592384001857444\n7.167433298116791\t2\t104032\tM\tMarried\t1936\tH: 150,000 - 169,999\t10000\tProfsc\t1\t3\t?\t2\t0\t7.167433298116791\n2.6738366011313683\t2\t103054\tM\tNeverM\t1980\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tSales\t2\t1\t2.6738366011313683\n4.422441361150561\t4\t101879\tF\tDivorc.\t1959\tD: 70,000 - 89,999\t3000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.422441361150561\n4.39198747959714\t4\t100798\tM\tMarried\t1968\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tProtec.\t4\t0\t4.39198747959714\n4.620710275658258\t6\t103392\tM\tMarried\t1942\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t3\tMachine\t6\t0\t4.620710275658258\n4.2597534090216875\t4\t101506\tM\tMarried\t1965\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n2.043014377365254\t2\t103976\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n2.6738366011313683\t3\t101299\tM\tNeverM\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\t?\t3\t1\t2.6738366011313683\n5.51974447550856\t5\t101365\tF\tDivorc.\t1954\tJ: 190,000 - 249,999\t15000\tAssoc-A\t0\t2\tExec.\t5\t0\t5.51974447550856\n4.218610847953261\t5\t100854\tF\tSepar.\t1956\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.218610847953261\n2.043014377365254\t3\t103741\tF\tNeverM\t1976\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t9+\t?\t3\t1\t2.043014377365254\n3.8576539813166915\t3\t101287\tF\tSepar.\t1969\tH: 150,000 - 169,999\t1500\tAssoc-A\t0\t9+\tOther\t3\t0\t3.8576539813166915\n4.620710275658258\t4\t100095\tM\tMarried\t1966\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tTechSup\t4\t0\t4.620710275658258\n2.271737173426372\t1\t103207\tF\tNeverM\t1984\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t2\tCleric.\t1\t1\t2.271737173426372\n6.619124347591423\t3\t104197\tM\tMarried\t1942\tG: 130,000 - 149,999\t5000\tProfsc\t0\t3\tExec.\t3\t0\t6.619124347591423\n4.851395514443539\t5\t100022\tM\tMarried\t1965\tI: 170,000 - 189,999\t5000\tAssoc-V\t1\t3\tExec.\t5\t0\t4.851395514443539\n4.620710275658258\t5\t102227\tM\tMarried\t1952\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.587876070934797\t4\t102863\tF\tDivorc.\t1960\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4.587876070934797\n4.42704412240343\t4\t101161\tM\tMarried\t1970\tI: 170,000 - 189,999\t11000\tBach.\t1\t3\tCleric.\t4\t0\t4.42704412240343\n1.9107803067898017\t2\t101643\tF\tNeverM\t1982\tL: 300,000 and above\t11000\t10th\t0\t2\tOther\t2\t1\t1.9107803067898017\n4.442940974729936\t4\t100616\tM\tMarried\t1970\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tExec.\t4\t0\t4.442940974729936\n4.39198747959714\t4\t102812\tM\tMarried\t1961\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t3\tMachine\t4\t0\t4.39198747959714\n2.0604152377854916\t3\t103587\tF\tNeverM\t1976\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tExec.\t3\t1\t2.0604152377854916\n4.459623013367491\t4\t104212\tF\tDivorc.\t1964\tE: 90,000 - 109,999\t7000\tBach.\t0\t9+\tExec.\t4\t0\t4.459623013367491\n4.251348753344686\t6\t103961\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t2\tOther\t6\t0\t4.251348753344686\n4.114311595632834\t3\t102704\tM\tNeverM\t1966\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t2\tHandler\t3\t0\t4.114311595632834\n5.858334359029996\t6\t100532\tM\tMarried\t1948\tH: 150,000 - 169,999\t5000\tHS-grad\t1\t3\tFarming\t6\t0\t5.858334359029996\n3.2022317747854605\t1\t103954\tM\tNeverM\t1976\tJ: 190,000 - 249,999\t11000\tProfsc\t0\t2\tProf.\t1\t1\t3.2022317747854605\n4.765308253166815\t5\t104475\tM\tMarried\t1966\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t3\tTransp.\t5\t0\t4.765308253166815\n4.39198747959714\t7\t101840\tM\tMarried\t1937\tE: 90,000 - 109,999\t10000\t< Bach.\t0\t3\t?\t7\t0\t4.39198747959714\n2.6738366011313683\t0\t102117\tM\tNeverM\t1984\tB: 30,000 - 49,999\t7000\tHS-grad\t0\t1\tFarming\t0\t1\t2.6738366011313683\n2.167437921105945\t2\t102485\tM\tNeverM\t1982\tL: 300,000 and above\t9000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n4.620710275658258\t2\t102562\tM\tNeverM\t1970\tD: 70,000 - 89,999\t9000\tHS-grad\t0\t2\tFarming\t2\t0\t4.620710275658258\n4.218610847953261\t4\t100002\tF\tNeverM\t1962\tL: 300,000 and above\t7000\tBach.\t0\t2\tProf.\t4\t0\t4.218610847953261\n1.682057510728684\t2\t104471\tF\tNeverM\t1980\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n4.620710275658258\t6\t104356\tM\tMarried\t1948\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.620710275658258\n2.6738366011313683\t3\t100687\tM\tMarried\t1975\tE: 90,000 - 109,999\t9000\tBach.\t0\t3\tProf.\t3\t1\t2.6738366011313683\n6.403328141184829\t8\t103099\tM\tMarried\t1951\tI: 170,000 - 189,999\t15000\tAssoc-A\t1\t3\tExec.\t8\t0\t6.403328141184829\n2.271737173426372\t3\t102132\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t2.271737173426372\n2.043014377365254\t1\t100642\tF\tNeverM\t1979\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t1\tSales\t1\t1\t2.043014377365254\n6.019963445685235\t6\t103562\tM\tMarried\t1942\tB: 30,000 - 49,999\t7000\t< Bach.\t1\t3\tSales\t6\t0\t6.019963445685235\n4.218610847953261\t3\t102658\tF\tNeverM\t1969\tL: 300,000 and above\t9000\tHS-grad\t0\t9+\tMachine\t3\t0\t4.218610847953261\n9.828927492093499\t7\t102417\tM\tMarried\t1929\tH: 150,000 - 169,999\t7000\t< Bach.\t1\t3\tExec.\t7\t0\t9.828927492093499\n5.36087999917072\t5\t100620\tM\tMarried\t1951\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tExec.\t5\t0\t5.36087999917072\n2.818434578639925\t3\t104479\tM\tMarried\t1974\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t3\tTransp.\t3\t1\t2.818434578639925\n4.418367522333028\t4\t102001\tF\tDivorc.\t1962\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tExec.\t4\t0\t4.418367522333028\n5.663158417671838\t5\t100980\tM\tMarried\t1951\tH: 150,000 - 169,999\t10000\tAssoc-A\t1\t3\tTechSup\t5\t0\t5.663158417671838\n5.349871577647072\t7\t102080\tM\tMarried\t1954\tC: 50,000 - 69,999\t1500\tPhD\t0\t3\tProf.\t7\t0\t5.349871577647072\n4.6979646163017605\t4\t103242\tM\tDivorc.\t1961\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t9+\tCrafts\t4\t0\t4.6979646163017605\n2.4451138050702506\t4\t102028\tM\tNeverM\t1975\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tCrafts\t4\t1\t2.4451138050702506\n4.218610847953261\t4\t101787\tF\tNeverM\t1966\tG: 130,000 - 149,999\t10000\tAssoc-V\t0\t2\tCleric.\t4\t0\t4.218610847953261\n2.043014377365254\t2\t103074\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n2.6738366011313683\t3\t104339\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tBach.\t0\t2\tSales\t3\t1\t2.6738366011313683\n4.620710275658258\t4\t102264\tM\tMarried\t1967\tJ: 190,000 - 249,999\t15000\tBach.\t0\t3\tCleric.\t4\t0\t4.620710275658258\n2.6738366011313683\t2\t103280\tM\tNeverM\t1983\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t1\tCrafts\t2\t1\t2.6738366011313683\n4.620710275658258\t4\t101646\tM\tMarried\t1962\tB: 30,000 - 49,999\t1500\tBach.\t0\t3\tTechSup\t4\t0\t4.620710275658258\n4.9940310492279325\t5\t103811\tM\tMarried\t1942\tG: 130,000 - 149,999\t1500\t7th-8th\t0\t3\tTransp.\t5\t0\t4.9940310492279325\n2.3128797344947984\t2\t100821\tM\tNeverM\t1980\tL: 300,000 and above\t9000\tBach.\t0\t2\tOther\t2\t1\t2.3128797344947984\n1.926154416218452\t3\t102215\tM\tMarried\t1975\tK: 250,000 - 299,999\t11000\t< Bach.\t1\t3\tMachine\t3\t1\t1.926154416218452\n5.728217064791224\t5\t103343\tM\tMarried\t1950\tE: 90,000 - 109,999\t5000\tHS-grad\t1\t3\tTechSup\t5\t0\t5.728217064791224\n2.6738366011313683\t2\t103180\tM\tMarried\t1979\tL: 300,000 and above\t15000\tBach.\t0\t3\tProf.\t2\t1\t2.6738366011313683\n4.39198747959714\t3\t102666\tM\tNeverM\t1970\tE: 90,000 - 109,999\t9000\t< Bach.\t0\t1\t?\t3\t0\t4.39198747959714\n4.620710275658258\t5\t103400\tM\tMarried\t1962\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tFarming\t5\t0\t4.620710275658258\n1.9387151250448273\t2\t102206\tM\tMarried\t1981\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t3\tHandler\t2\t1\t1.9387151250448273\n3.5364081532739675\t3\t104130\tF\tDivorc.\t1973\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t9+\tSales\t3\t0\t3.5364081532739675\n4.48572944742746\t5\t104035\tF\tDivorc.\t1958\tH: 150,000 - 169,999\t7000\t< Bach.\t0\t9+\tSales\t5\t0\t4.48572944742746\n2.733429381838505\t2\t103644\tM\tNeverM\t1979\tD: 70,000 - 89,999\t1500\tBach.\t0\t2\tExec.\t2\t1\t2.733429381838505\n4.169289016042967\t2\t100326\tF\tDivorc.\t1963\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t9+\tCleric.\t2\t0\t4.169289016042967\n4.51849263582244\t4\t100254\tM\tMarried\t1969\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tExec.\t4\t0\t4.51849263582244\n2.043014377365254\t2\t104140\tF\tNeverM\t1980\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n1.9107803067898017\t2\t101465\tF\tNeverM\t1977\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t9+\tOther\t2\t1\t1.9107803067898017\n2.271737173426372\t0\t100040\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tSales\t0\t1\t2.271737173426372\n1.397052757084566\t3\t102606\tF\tMarried\t1975\tJ: 190,000 - 249,999\t7000\tAssoc-A\t1\t4-5\tCleric.\t3\t1\t1.397052757084566\n2.043014377365254\t2\t100284\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n4.218610847953261\t2\t102837\tF\tSepar.\t1955\tC: 50,000 - 69,999\t3000\t9th\t0\t2\t?\t2\t0\t4.218610847953261\n2.6738366011313683\t4\t101758\tM\tMarried\t1977\tK: 250,000 - 299,999\t7000\tAssoc-V\t0\t3\tFarming\t4\t1\t2.6738366011313683\n1.926154416218452\t4\t103904\tM\tMarried\t1975\tH: 150,000 - 169,999\t7000\t< Bach.\t1\t3\tCrafts\t4\t1\t1.926154416218452\n4.114311595632834\t5\t100908\tM\tMarried\t1973\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tHandler\t5\t0\t4.114311595632834\n4.610246980978388\t6\t102663\tM\tDivorc.\t1966\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t2\tCrafts\t6\t0\t4.610246980978388\n4.560621189977153\t7\t100913\tF\tWidowed\t1937\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t6-8\tSales\t7\t0\t4.560621189977153\n4.353282003822829\t6\t101033\tM\tMarried\t1939\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCrafts\t6\t0\t4.353282003822829\n4.620710275658258\t6\t100602\tM\tNeverM\t1941\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4.620710275658258\n4.39198747959714\t3\t104056\tM\tMarried\t1972\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tCleric.\t3\t0\t4.39198747959714\n4.620710275658258\t4\t103894\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tMasters\t0\t3\tProf.\t4\t0\t4.620710275658258\n2.6738366011313683\t2\t104395\tM\tNeverM\t1980\tL: 300,000 and above\t11000\tBach.\t0\t2\tSales\t2\t1\t2.6738366011313683\n2.4451138050702506\t3\t102904\tM\tMarried\t1977\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t3\tProf.\t3\t1\t2.4451138050702506\n4.620710275658258\t9\t103744\tM\tMarried\t1967\tK: 250,000 - 299,999\t11000\tAssoc-V\t0\t3\tFarming\t9\t0\t4.620710275658258\n4.51849263582244\t4\t101246\tM\tMarried\t1969\tH: 150,000 - 169,999\t5000\tBach.\t1\t3\tExec.\t4\t0\t4.51849263582244\n4.620710275658258\t4\t100697\tM\tMarried\t1960\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.6969969244264576\t5\t101684\tM\tNeverM\t1966\tB: 30,000 - 49,999\t3000\tBach.\t0\t2\tExec.\t5\t0\t4.6969969244264576\n4.620710275658258\t5\t100178\tM\tMarried\t1954\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.199664323340584\t3\t103403\tF\tWidowed\t1938\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t9+\tOther\t3\t0\t4.199664323340584\n5.801201708609597\t6\t100037\tM\tSepar.\t1957\tJ: 190,000 - 249,999\t9000\tProfsc\t1\t2\tProf.\t6\t0\t5.801201708609597\n5.898526350753855\t5\t100406\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tExec.\t5\t0\t5.898526350753855\n4.508100357471065\t5\t100359\tM\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tSales\t5\t0\t4.508100357471065\n5.07763059359732\t4\t103062\tM\tMarried\t1960\tC: 50,000 - 69,999\t5000\tBach.\t1\t3\tProf.\t4\t0\t5.07763059359732\n4.620710275658258\t10\t103636\tM\tMarried\t1945\tC: 50,000 - 69,999\t5000\tBach.\t0\t3\t?\t10\t0\t4.620710275658258\n4.2597534090216875\t4\t101989\tM\tNeverM\t1944\tI: 170,000 - 189,999\t9000\t7th-8th\t0\t6-8\tOther\t4\t0\t4.2597534090216875\n4.765308253166815\t2\t102231\tM\tSepar.\t1973\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t2\tTransp.\t2\t0\t4.765308253166815\n3.63567281250549\t4\t103781\tF\tMarried\t1967\tL: 300,000 and above\t9000\t< Bach.\t1\t4-5\tCleric.\t4\t0\t3.63567281250549\n5.306415930024286\t7\t103886\tM\tDivorc.\t1955\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tSales\t7\t0\t5.306415930024286\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_2133615169","id":"20210125-170341_2020149435","dateCreated":"2021-01-12T21:23:34+0000","dateStarted":"2021-02-06T19:25:48+0000","dateFinished":"2021-02-06T19:25:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%md\n\n.\nPlot the predicted versus actual years of residence. Click on *settings* to see how the plot was specified. \n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Plot the predicted versus actual years of residence. Click on settings to see how the plot was specified.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-2121461432","id":"20210125-170341_1185415025","dateCreated":"2021-01-12T21:23:46+0000","dateStarted":"2021-02-06T19:25:49+0000","dateFinished":"2021-02-06T19:25:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"text":"%python\n\nz.show(RES_DF[['YRS_RESIDENCE', 'PREDICTION']])\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"scatterChart","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PREDICTION":"string","YRS_RESIDENCE":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false},"lineChart":{"rotate":{"degree":"-45"},"xLabelStatus":"default"},"multiBarChart":{"rotate":{"degree":"-45"},"xLabelStatus":"default"}},"commonSetting":{},"keys":[{"name":"PREDICTION","index":0,"aggr":"sum"}],"groups":[],"values":[{"name":"YRS_RESIDENCE","index":1,"aggr":"sum"}]},"helium":{}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"YRS_RESIDENCE\tPREDICTION\n2.0\t4.27143563955029\n2.0\t2.0841569384336807\n5.0\t5.496280188854982\n2.0\t2.4451138050702506\n4.0\t4.817396005119761\n4.0\t2.0937805299594032\n0.0\t6.188849878882095\n3.0\t4.167230377040099\n3.0\t3.2022317747854605\n5.0\t5.336590639783026\n5.0\t4.39198747959714\n1.0\t3.9898880518921436\n4.0\t4.735306248853703\n5.0\t4.549017533704358\n4.0\t4.620710275658258\n5.0\t4.523623312122254\n5.0\t3.590225709481263\n3.0\t4.620710275658258\n5.0\t4.687278710880975\n4.0\t4.620710275658258\n4.0\t2.6738366011313683\n3.0\t4.42704412240343\n1.0\t2.271737173426372\n3.0\t4.492102769522802\n3.0\t4.198321326342324\n5.0\t5.2728065349554925\n5.0\t4.6450993739992725\n2.0\t1.6872893498752615\n5.0\t5.2728065349554925\n3.0\t2.6738366011313683\n5.0\t4.381524184917254\n2.0\t4.39198747959714\n6.0\t4.620710275658258\n4.0\t4.144859466996493\n3.0\t4.398011812104102\n2.0\t1.7755861055298254\n6.0\t4.2597534090216875\n5.0\t4.114311595632834\n5.0\t4.39198747959714\n10.0\t5.239259680252559\n1.0\t2.3128797344947984\n7.0\t4.9139664446556\n7.0\t8.733756193388217\n2.0\t2.6738366011313683\n7.0\t5.594278222262773\n4.0\t2.449734835758136\n5.0\t3.9898880518921436\n3.0\t2.71629578498505\n7.0\t5.2728065349554925\n4.0\t4.234703732005073\n5.0\t4.620710275658258\n4.0\t4.765308253166815\n3.0\t2.4451138050702506\n3.0\t2.2891380338460294\n4.0\t4.557161416642202\n3.0\t3.501928953826699\n2.0\t2.3128797344947984\n6.0\t4.620710275658258\n9.0\t4.620710275658258\n1.0\t2.167437921105945\n6.0\t6.019963445685235\n4.0\t4.294897496722115\n6.0\t4.39198747959714\n6.0\t5.8247875043270625\n2.0\t2.6738366011313683\n2.0\t4.887175654444039\n4.0\t4.620710275658258\n6.0\t4.2597534090216875\n0.0\t2.043014377365254\n3.0\t4.005980935943626\n4.0\t4.144859466996493\n7.0\t3.862885820463269\n4.0\t4.620710275658258\n6.0\t5.116551671193591\n3.0\t4.218610847953261\n4.0\t4.03103061296057\n6.0\t5.727061623918985\n1.0\t1.9107803067898017\n3.0\t4.218610847953261\n2.0\t2.4451138050702506\n3.0\t1.9000096492705163\n4.0\t4.218610847953261\n4.0\t3.8576539813166915\n3.0\t2.004308901590943\n5.0\t5.663158417671838\n2.0\t1.7755861055298254\n0.0\t2.6738366011313683\n2.0\t2.6738366011313683\n3.0\t4.620710275658258\n3.0\t4.620710275658258\n2.0\t2.167437921105945\n5.0\t5.267704126988065\n5.0\t4.39198747959714\n3.0\t2.6738366011313683\n4.0\t4.752337358000361\n6.0\t5.759728857207676\n4.0\t4.70521916748571\n1.0\t1.7653384934009486\n5.0\t5.598099770552437\n3.0\t1.5550552792998091\n6.0\t4.39198747959714\n3.0\t4.218610847953261\n5.0\t4.851395514443539\n3.0\t4.647100141957708\n5.0\t5.283163195678753\n2.0\t2.4451138050702506\n1.0\t1.682057510728684\n2.0\t3.9511825761178327\n3.0\t2.004308901590943\n4.0\t4.9940310492279325\n6.0\t4.620710275658258\n1.0\t1.9107803067898017\n1.0\t2.004308901590943\n3.0\t4.2597534090216875\n2.0\t1.7755861055298254\n5.0\t4.618113321060264\n3.0\t6.002584879070184\n6.0\t4.6921367740078495\n6.0\t6.263821706272211\n6.0\t4.875260968881278\n6.0\t5.3473331062575795\n3.0\t1.2333886081428602\n4.0\t2.6738366011313683\n5.0\t6.00509498660449\n5.0\t4.620710275658258\n2.0\t1.682057510728684\n6.0\t5.735655528677853\n7.0\t5.801201708609597\n6.0\t4.444718281383928\n5.0\t4.9940310492279325\n4.0\t4.39198747959714\n3.0\t5.2395285847286175\n3.0\t4.331898393916036\n4.0\t4.263379973461696\n1.0\t5.841253267713\n3.0\t3.7342783143278098\n5.0\t4.5149820797605\n3.0\t2.3128797344947984\n7.0\t4.620710275658258\n3.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t2.043014377365254\n0.0\t2.167437921105945\n4.0\t4.016695862526831\n2.0\t2.004308901590943\n4.0\t4.6921367740078495\n3.0\t1.2730940473625907\n4.0\t5.303756435059768\n8.0\t4.620710275658258\n4.0\t4.557161416642202\n5.0\t4.218610847953261\n5.0\t5.207747887836106\n4.0\t4.620710275658258\n5.0\t5.175987536186261\n4.0\t4.022779018739698\n7.0\t6.451788179803501\n3.0\t4.777740329765493\n4.0\t4.2597534090216875\n4.0\t3.5551798042987883\n2.0\t2.167437921105945\n5.0\t5.012571946477934\n5.0\t4.807541898240743\n4.0\t0.8117648467660246\n3.0\t5.598099770552437\n2.0\t1.2098059610856922\n2.0\t2.6738366011313683\n4.0\t4.144859466996493\n0.0\t2.271737173426372\n2.0\t4.620710275658258\n4.0\t4.231868181045257\n2.0\t1.682057510728684\n2.0\t2.0841569384336807\n4.0\t4.6222200637615884\n2.0\t1.9107803067898017\n4.0\t4.620710275658258\n2.0\t2.271737173426372\n4.0\t4.620710275658258\n2.0\t1.8946426238020138\n2.0\t1.7755861055298254\n2.0\t2.3128797344947984\n9.0\t5.779999961710928\n5.0\t4.620710275658258\n6.0\t4.35700064606057\n5.0\t5.533041123433051\n5.0\t4.687278710880975\n3.0\t4.39198747959714\n2.0\t3.0003910655982535\n3.0\t4.114311595632834\n4.0\t4.293192918141725\n1.0\t2.6738366011313683\n2.0\t2.043014377365254\n2.0\t2.167437921105945\n5.0\t4.775216668238059\n2.0\t2.6738366011313683\n4.0\t4.334286821672109\n6.0\t5.161964571723885\n4.0\t5.286322718631027\n1.0\t2.6738366011313683\n1.0\t2.6738366011313683\n3.0\t2.6738366011313683\n4.0\t5.611615954227972\n6.0\t4.680085027523106\n5.0\t4.620710275658258\n4.0\t4.2597534090216875\n6.0\t5.612170267482142\n3.0\t2.4451138050702506\n1.0\t1.9107803067898017\n3.0\t3.530750255252329\n8.0\t4.620710275658258\n4.0\t4.218610847953261\n6.0\t5.716469519802573\n4.0\t5.654561175927483\n6.0\t4.39198747959714\n3.0\t4.620710275658258\n5.0\t5.33067149871701\n7.0\t5.779999961710928\n3.0\t2.6738366011313683\n6.0\t5.112952412174806\n5.0\t5.369376974491331\n7.0\t6.218435678199853\n0.0\t2.271737173426372\n2.0\t2.6738366011313683\n7.0\t4.331898393916036\n3.0\t4.620710275658258\n6.0\t5.116312797217688\n4.0\t4.39198747959714\n3.0\t2.4451138050702506\n4.0\t4.557161416642202\n5.0\t4.970392609596232\n6.0\t5.1742010331331585\n4.0\t4.218610847953261\n1.0\t2.043014377365254\n3.0\t2.3128797344947984\n2.0\t2.271737173426372\n10.0\t5.9233930061493965\n8.0\t6.966099998746515\n4.0\t4.634676530024862\n3.0\t3.634163024402151\n3.0\t4.620710275658258\n3.0\t5.175987536186261\n6.0\t5.467982476313665\n9.0\t3.501928953826699\n6.0\t4.965118441718914\n8.0\t5.533041123433051\n6.0\t4.39198747959714\n4.0\t2.6738366011313683\n4.0\t7.289624595656591\n8.0\t5.533041123433051\n4.0\t3.8855887995717167\n5.0\t4.2597534090216875\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n6.0\t4.39198747959714\n4.0\t4.081571380719595\n2.0\t2.6738366011313683\n7.0\t6.567015512726357\n4.0\t4.9940310492279325\n4.0\t4.620710275658258\n2.0\t1.9000096492705163\n9.0\t6.7412745937570975\n3.0\t4.245000714253365\n3.0\t1.6638030514042157\n6.0\t5.012571946477934\n5.0\t4.841028416042391\n3.0\t4.620710275658258\n4.0\t3.9294542556859824\n5.0\t4.620710275658258\n2.0\t2.0841569384336807\n4.0\t4.560621189977153\n4.0\t4.620710275658258\n4.0\t3.959886047579033\n9.0\t8.867940735848606\n4.0\t4.27143563955029\n3.0\t2.043014377365254\n5.0\t5.533041123433051\n4.0\t3.047157374701043\n4.0\t4.018283294442696\n6.0\t4.144765477186269\n6.0\t4.620710275658258\n4.0\t4.620710275658258\n2.0\t1.9107803067898017\n6.0\t5.906361897002725\n6.0\t4.2597534090216875\n7.0\t5.898526350753855\n5.0\t5.012571946477934\n5.0\t3.9511825761178327\n4.0\t4.882454652239147\n3.0\t2.6738366011313683\n8.0\t4.620710275658258\n6.0\t4.719768432100864\n6.0\t5.402923829194265\n6.0\t5.402923829194265\n6.0\t4.719768432100864\n3.0\t2.6738366011313683\n2.0\t1.816728666598252\n4.0\t4.882454652239147\n5.0\t5.179839757470489\n6.0\t4.9940310492279325\n2.0\t2.0841569384336807\n3.0\t2.021709762010687\n2.0\t2.6738366011313683\n1.0\t2.271737173426372\n6.0\t6.118568947507569\n3.0\t4.361550770931544\n4.0\t3.3035721201152217\n6.0\t4.9940310492279325\n6.0\t4.39198747959714\n4.0\t4.2597534090216875\n10.0\t7.3244326792294885\n4.0\t4.557161416642202\n0.0\t2.3128797344947984\n5.0\t4.597113920339325\n3.0\t2.271737173426372\n3.0\t4.2597534090216875\n3.0\t1.6872893498752615\n4.0\t4.218610847953261\n4.0\t4.384864785521714\n6.0\t5.175987536186261\n1.0\t2.081523652998186\n3.0\t4.114311595632834\n3.0\t2.271737173426372\n4.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t2.4451138050702506\n4.0\t2.2199358593989587\n0.0\t2.271737173426372\n3.0\t4.167230377040099\n3.0\t1.9107803067898017\n5.0\t5.175987536186261\n4.0\t4.800111239809098\n4.0\t4.675593706258155\n5.0\t4.549017533704358\n4.0\t4.933941963546828\n4.0\t4.353282003822829\n4.0\t3.862885820463269\n8.0\t4.9940310492279325\n8.0\t4.9940310492279325\n4.0\t4.6150263804037195\n2.0\t2.271737173426372\n6.0\t4.965118441718914\n6.0\t4.39198747959714\n4.0\t3.862885820463269\n2.0\t2.271737173426372\n7.0\t4.620710275658258\n1.0\t2.6738366011313683\n3.0\t3.9549952081657977\n6.0\t5.552156053897306\n3.0\t4.620710275658258\n6.0\t5.552156053897306\n4.0\t4.67729504017916\n5.0\t5.779999961710928\n4.0\t4.208147553273392\n2.0\t2.043014377365254\n2.0\t4.9139664446556\n8.0\t6.218435678199853\n10.0\t7.69669358479986\n7.0\t4.2597534090216875\n5.0\t5.51974447550856\n4.0\t4.2597534090216875\n1.0\t1.682057510728684\n4.0\t4.557161416642202\n5.0\t4.870707107250496\n6.0\t5.304318327371945\n2.0\t2.167437921105945\n8.0\t5.304318327371945\n4.0\t5.284045019980681\n5.0\t5.012571946477934\n3.0\t2.4451138050702506\n3.0\t2.6738366011313683\n5.0\t4.2597534090216875\n2.0\t1.9160121459363793\n3.0\t4.620710275658258\n6.0\t5.759728857207676\n7.0\t8.229604852908324\n5.0\t3.9898880518921436\n4.0\t4.2585633516509915\n4.0\t4.353282003822829\n5.0\t3.9511825761178327\n10.0\t7.433258073570897\n3.0\t5.2395285847286175\n3.0\t2.733429381838505\n4.0\t4.6222200637615884\n4.0\t4.765308253166815\n3.0\t4.218610847953261\n5.0\t4.818657233989711\n5.0\t5.207747887836106\n2.0\t4.620710275658258\n4.0\t3.6268639991974965\n2.0\t6.423230572964869\n5.0\t3.9945129028053685\n3.0\t2.6738366011313683\n4.0\t4.246865116608205\n2.0\t3.1902845741524475\n2.0\t2.6738366011313683\n2.0\t2.271737173426372\n3.0\t2.6738366011313683\n5.0\t4.818657233989711\n7.0\t4.620710275658258\n3.0\t2.3128797344947984\n2.0\t2.043014377365254\n3.0\t3.9294542556859824\n6.0\t4.688539939750939\n2.0\t2.167437921105945\n3.0\t4.353282003822829\n1.0\t2.271737173426372\n6.0\t5.337865182074879\n4.0\t4.042712843489156\n3.0\t3.7357171131487235\n7.0\t4.620710275658258\n3.0\t4.620710275658258\n4.0\t4.612827900983575\n5.0\t5.283163195678753\n7.0\t5.663158417671838\n3.0\t2.6738366011313683\n4.0\t4.620710275658258\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t4.777740329765493\n2.0\t1.4146292388932553\n4.0\t3.9549952081657977\n1.0\t2.4451138050702506\n2.0\t1.8946426238020138\n7.0\t5.936909189824931\n5.0\t4.508100357471065\n4.0\t4.848907797536214\n4.0\t4.620710275658258\n3.0\t1.9107803067898017\n3.0\t2.818434578639925\n5.0\t4.2597534090216875\n3.0\t2.3128797344947984\n2.0\t2.6738366011313683\n6.0\t4.218610847953261\n2.0\t2.3128797344947984\n2.0\t1.9160121459363793\n7.0\t4.865423543092476\n4.0\t4.2597534090216875\n3.0\t1.9107803067898017\n5.0\t4.9940310492279325\n3.0\t4.114311595632834\n5.0\t4.719768432100864\n5.0\t4.6592591405274675\n6.0\t6.491889721077243\n4.0\t4.557161416642202\n7.0\t4.39198747959714\n3.0\t2.024759918040786\n5.0\t4.353282003822829\n1.0\t2.6738366011313683\n4.0\t4.620710275658258\n5.0\t4.952357851112538\n3.0\t4.9940310492279325\n6.0\t3.9898880518921436\n5.0\t5.33067149871701\n0.0\t3.634163024402151\n5.0\t5.467982476313665\n3.0\t1.5018168434237111\n3.0\t2.6738366011313683\n5.0\t5.014405047686253\n4.0\t3.634163024402151\n4.0\t3.4383800948106398\n3.0\t1.6226604903357895\n6.0\t4.620710275658258\n4.0\t4.6222200637615884\n5.0\t5.467982476313665\n5.0\t4.114311595632834\n8.0\t4.39198747959714\n3.0\t4.293806549593896\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n2.0\t1.682057510728684\n5.0\t4.620710275658258\n5.0\t4.620710275658258\n3.0\t3.558685073507334\n3.0\t2.6738366011313683\n3.0\t1.9107803067898017\n2.0\t2.4451138050702506\n3.0\t2.6738366011313683\n3.0\t4.620710275658258\n2.0\t2.167437921105945\n6.0\t4.114311595632834\n5.0\t4.770750734865032\n3.0\t2.6738366011313683\n2.0\t2.4064083292959397\n4.0\t4.620710275658258\n9.0\t4.560621189977153\n7.0\t5.142689240716706\n2.0\t4.620710275658258\n2.0\t2.271737173426372\n1.0\t2.4064083292959397\n4.0\t1.5651049297006097\n5.0\t4.9940310492279325\n1.0\t2.4064083292959397\n9.0\t5.889846151446463\n5.0\t4.353282003822829\n5.0\t4.620710275658258\n5.0\t4.670247601734303\n4.0\t4.218610847953261\n7.0\t4.620710275658258\n2.0\t3.501928953826699\n5.0\t5.402923829194265\n4.0\t5.142689240716706\n5.0\t4.6969969244264576\n3.0\t4.620710275658258\n3.0\t1.9160121459363793\n4.0\t4.7858353130812645\n2.0\t4.218610847953261\n4.0\t4.484909086164933\n7.0\t5.846964018777726\n6.0\t5.799598212228275\n4.0\t4.6222200637615884\n5.0\t5.85959558789996\n3.0\t2.6738366011313683\n3.0\t4.42704412240343\n3.0\t2.2199358593989587\n7.0\t5.779999961710928\n1.0\t2.271737173426372\n4.0\t5.07763059359732\n5.0\t4.678804828282409\n3.0\t2.004308901590943\n5.0\t4.9940310492279325\n4.0\t4.246865116608205\n7.0\t4.865423543092476\n3.0\t2.6738366011313683\n2.0\t2.3128797344947984\n3.0\t2.6738366011313683\n5.0\t4.620710275658258\n5.0\t5.041966962557694\n6.0\t2.6738366011313683\n3.0\t4.114311595632834\n1.0\t2.4451138050702506\n2.0\t2.3128797344947984\n5.0\t4.620710275658258\n4.0\t4.653431298233045\n6.0\t4.2597534090216875\n4.0\t2.4064083292959397\n8.0\t5.564552915849504\n8.0\t7.419741889895377\n1.0\t4.620710275658258\n4.0\t4.218610847953261\n2.0\t2.043014377365254\n5.0\t3.992325137186259\n5.0\t4.610246980978388\n6.0\t4.882454652239147\n3.0\t4.263379973461696\n7.0\t4.2597534090216875\n1.0\t1.682057510728684\n7.0\t4.851395514443539\n2.0\t2.043014377365254\n4.0\t4.620710275658258\n4.0\t3.2022317747854605\n6.0\t4.620710275658258\n4.0\t4.1060009297660685\n5.0\t4.359059285063424\n4.0\t4.620710275658258\n1.0\t2.6738366011313683\n6.0\t5.060599484450648\n5.0\t5.402923829194265\n3.0\t2.71629578498505\n4.0\t3.992325137186259\n3.0\t2.6738366011313683\n7.0\t5.898526350753855\n3.0\t2.043014377365254\n4.0\t4.610246980978388\n2.0\t2.043014377365254\n4.0\t4.408102894056896\n10.0\t5.9233930061493965\n5.0\t5.79327571191061\n4.0\t4.747006021607353\n5.0\t4.2597534090216875\n7.0\t5.878067345519241\n11.0\t4.620710275658258\n1.0\t1.9160121459363793\n11.0\t4.620710275658258\n1.0\t2.271737173426372\n8.0\t5.564552915849504\n2.0\t4.218610847953261\n5.0\t6.40671850511626\n6.0\t4.660745627589677\n5.0\t4.620710275658258\n2.0\t2.6738366011313683\n3.0\t4.198321326342324\n4.0\t5.215673884535079\n5.0\t4.218610847953261\n3.0\t4.218610847953261\n1.0\t2.6738366011313683\n5.0\t3.8576539813166915\n4.0\t4.1245592077617115\n3.0\t3.3733214476912394\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n5.0\t6.457378366780048\n4.0\t3.6817559768525854\n4.0\t4.293192918141725\n4.0\t4.620710275658258\n4.0\t4.328438620581096\n5.0\t4.798873634457777\n3.0\t2.6738366011313683\n1.0\t1.7297485337294347\n3.0\t4.620710275658258\n5.0\t6.865061171338311\n5.0\t5.3360413912518245\n2.0\t2.271737173426372\n4.0\t4.39198747959714\n2.0\t2.043014377365254\n2.0\t2.043014377365254\n3.0\t4.39198747959714\n5.0\t4.620710275658258\n4.0\t3.618467890575687\n3.0\t4.065083753532761\n3.0\t4.296926828164629\n7.0\t4.620710275658258\n1.0\t2.167437921105945\n6.0\t4.620710275658258\n2.0\t2.3128797344947984\n4.0\t3.862885820463269\n2.0\t4.560621189977153\n4.0\t2.6738366011313683\n5.0\t4.293806549593896\n1.0\t2.167437921105945\n3.0\t2.4451138050702506\n2.0\t2.271737173426372\n3.0\t1.7755861055298254\n6.0\t5.284727782061964\n6.0\t7.718705140026032\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t4.620710275658258\n2.0\t1.9387151250448273\n1.0\t2.271737173426372\n5.0\t4.620710275658258\n4.0\t4.9940310492279325\n5.0\t5.598099770552437\n5.0\t4.620710275658258\n2.0\t3.9511825761178327\n4.0\t4.7166737269607495\n5.0\t4.39198747959714\n1.0\t2.043014377365254\n7.0\t4.9940310492279325\n3.0\t2.4064083292959397\n3.0\t1.7309784748602794\n5.0\t4.859800067067212\n4.0\t3.862885820463269\n4.0\t4.817396005119761\n4.0\t4.39128099411736\n5.0\t4.714452243488594\n2.0\t1.7755861055298254\n2.0\t2.043014377365254\n7.0\t5.2728065349554925\n3.0\t4.1245592077617115\n6.0\t4.9940310492279325\n1.0\t2.043014377365254\n4.0\t5.133303719371725\n2.0\t2.0841569384336807\n4.0\t4.39198747959714\n3.0\t5.898359762074506\n2.0\t2.271737173426372\n8.0\t4.620710275658258\n5.0\t5.663158417671838\n5.0\t4.218610847953261\n5.0\t4.114311595632834\n2.0\t2.271737173426372\n2.0\t2.4451138050702506\n2.0\t4.620710275658258\n4.0\t4.916449655477578\n3.0\t2.6738366011313683\n5.0\t6.445423980890155\n10.0\t4.620710275658258\n7.0\t6.494916794000346\n3.0\t2.4451138050702506\n3.0\t4.6248299703147495\n1.0\t2.6738366011313683\n2.0\t2.167437921105945\n4.0\t5.349871577647072\n3.0\t4.620710275658258\n5.0\t5.239259680252559\n4.0\t4.353282003822829\n2.0\t2.5249098060576216\n2.0\t2.6738366011313683\n5.0\t4.777740329765493\n5.0\t4.841028416042391\n1.0\t1.9107803067898017\n2.0\t2.004308901590943\n2.0\t1.4146292388932553\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n5.0\t4.620710275658258\n3.0\t2.271737173426372\n2.0\t2.043014377365254\n2.0\t2.4451138050702506\n4.0\t4.370458937064541\n3.0\t3.6851165195348585\n5.0\t4.620710275658258\n4.0\t2.6738366011313683\n5.0\t4.620710275658258\n5.0\t4.798873634457777\n4.0\t4.6222200637615884\n1.0\t2.6738366011313683\n5.0\t4.560621189977153\n5.0\t4.9940310492279325\n2.0\t2.6738366011313683\n1.0\t2.6738366011313683\n5.0\t4.5236145619392545\n3.0\t2.6450579469960465\n5.0\t4.088946208335074\n5.0\t4.2597534090216875\n4.0\t4.620710275658258\n6.0\t4.39198747959714\n5.0\t5.179839757470489\n3.0\t2.39808069161046\n2.0\t4.037054945467531\n4.0\t4.169289016042967\n5.0\t3.9945129028053685\n3.0\t3.3733214476912394\n4.0\t2.6738366011313683\n1.0\t2.6738366011313683\n6.0\t4.560621189977153\n5.0\t3.590225709481263\n3.0\t3.938507580978964\n5.0\t4.516886767137294\n4.0\t4.620710275658258\n3.0\t1.949289582422736\n3.0\t4.152954450312265\n6.0\t5.533041123433051\n3.0\t2.6738366011313683\n7.0\t4.620710275658258\n5.0\t4.700176316760761\n2.0\t1.9107803067898017\n4.0\t4.537309308351723\n1.0\t2.043014377365254\n3.0\t2.6912374615512817\n2.0\t2.4451138050702506\n5.0\t5.336590639783026\n5.0\t5.0560049860005165\n4.0\t2.6738366011313683\n4.0\t4.557161416642202\n3.0\t2.6738366011313683\n3.0\t4.42704412240343\n2.0\t2.6738366011313683\n1.0\t4.687278710880975\n5.0\t3.9898880518921436\n3.0\t4.218610847953261\n3.0\t3.846883323797406\n2.0\t2.4451138050702506\n3.0\t2.271737173426372\n3.0\t4.620710275658258\n4.0\t4.752337358000361\n4.0\t5.012571946477934\n2.0\t4.03103061296057\n4.0\t4.597113920339325\n4.0\t4.9940310492279325\n6.0\t6.880664899802468\n1.0\t2.271737173426372\n9.0\t4.620710275658258\n3.0\t2.6738366011313683\n4.0\t2.0937805299594032\n3.0\t4.236206594032943\n5.0\t4.765308253166815\n5.0\t3.8576539813166915\n3.0\t4.39198747959714\n3.0\t4.05422250995173\n7.0\t5.070436910239451\n4.0\t4.620710275658258\n4.0\t4.9940310492279325\n5.0\t4.39198747959714\n4.0\t3.9898880518921436\n4.0\t5.24255597140899\n5.0\t5.2207569337037825\n4.0\t1.926154416218452\n2.0\t2.4451138050702506\n3.0\t2.6738366011313683\n6.0\t5.064846272795393\n4.0\t4.557161416642202\n4.0\t4.114311595632834\n1.0\t5.190202349786276\n1.0\t2.271737173426372\n2.0\t2.6738366011313683\n3.0\t4.39198747959714\n3.0\t4.620710275658258\n4.0\t4.2547474912829415\n6.0\t4.620710275658258\n5.0\t6.281317355886131\n11.0\t5.175987536186261\n4.0\t3.8292522293404545\n4.0\t4.39198747959714\n3.0\t4.03103061296057\n3.0\t1.9160121459363793\n5.0\t4.620710275658258\n6.0\t4.620710275658258\n2.0\t2.004308901590943\n8.0\t5.533041123433051\n11.0\t5.996377649967769\n2.0\t2.043014377365254\n5.0\t4.620710275658258\n6.0\t5.533041123433051\n9.0\t5.33067149871701\n1.0\t2.6738366011313683\n8.0\t4.620710275658258\n4.0\t4.39198747959714\n5.0\t4.636607127984462\n3.0\t2.4451138050702506\n6.0\t4.218610847953261\n8.0\t5.432992102578083\n1.0\t2.4451138050702506\n8.0\t5.306415930024286\n5.0\t5.646127308525166\n1.0\t1.643352034954373\n5.0\t4.39198747959714\n4.0\t4.393497267700482\n4.0\t5.875391844385376\n3.0\t3.68756693633037\n6.0\t4.199664323340584\n8.0\t4.9139664446556\n5.0\t4.714452243488594\n5.0\t4.39198747959714\n4.0\t2.6738366011313683\n5.0\t3.9511825761178327\n5.0\t4.587876070934797\n3.0\t2.6738366011313683\n3.0\t4.620710275658258\n2.0\t1.7755861055298254\n1.0\t1.682057510728684\n3.0\t2.043014377365254\n7.0\t4.39198747959714\n1.0\t2.3128797344947984\n2.0\t4.587876070934797\n2.0\t4.2597534090216875\n2.0\t5.07763059359732\n4.0\t4.620710275658258\n4.0\t5.110143927101873\n4.0\t5.502790559886549\n5.0\t4.419850439045547\n5.0\t4.620710275658258\n3.0\t2.2812133072684446\n5.0\t4.620710275658258\n6.0\t4.620710275658258\n4.0\t4.3125782006187166\n3.0\t1.3996702199163877\n4.0\t4.39198747959714\n0.0\t2.271737173426372\n4.0\t5.446895816578845\n5.0\t4.218610847953261\n5.0\t5.267704126988065\n5.0\t4.353282003822829\n2.0\t1.9387151250448273\n6.0\t4.39198747959714\n5.0\t4.54695889470149\n7.0\t5.6865300558553145\n4.0\t4.1060009297660685\n4.0\t5.142689240716706\n3.0\t2.3128797344947984\n4.0\t4.726602777392504\n2.0\t2.043014377365254\n2.0\t2.6738366011313683\n0.0\t6.661917434700385\n5.0\t5.598099770552437\n7.0\t4.620710275658258\n3.0\t4.36198547528403\n3.0\t2.678457631819583\n4.0\t5.284045019980681\n6.0\t3.846883323797406\n2.0\t3.59545754862784\n1.0\t2.4451138050702506\n5.0\t4.967604588596188\n3.0\t4.218610847953261\n3.0\t2.4451138050702506\n4.0\t4.0249446946984335\n4.0\t4.9940310492279325\n2.0\t2.177685533234822\n4.0\t4.620710275658258\n2.0\t3.871620235683295\n4.0\t4.2597534090216875\n5.0\t4.620710275658258\n6.0\t4.353282003822829\n1.0\t1.4146292388932553\n4.0\t4.933941963546828\n7.0\t5.308474569027155\n4.0\t4.817396005119761\n5.0\t4.218610847953261\n3.0\t2.603937207445597\n6.0\t4.620710275658258\n7.0\t5.7762446027639385\n5.0\t4.620710275658258\n7.0\t4.39198747959714\n4.0\t4.7858353130812645\n4.0\t4.1245592077617115\n4.0\t4.39198747959714\n2.0\t2.4451138050702506\n3.0\t4.293806549593896\n1.0\t4.620710275658258\n6.0\t4.620710275658258\n2.0\t1.9107803067898017\n6.0\t5.2728065349554925\n1.0\t2.043014377365254\n2.0\t2.6738366011313683\n4.0\t2.4451138050702506\n8.0\t6.248686241746341\n2.0\t2.6738366011313683\n4.0\t3.474043725850265\n3.0\t2.224556890087115\n4.0\t3.592384001857444\n2.0\t7.167433298116791\n2.0\t2.6738366011313683\n4.0\t4.422441361150561\n4.0\t4.39198747959714\n6.0\t4.620710275658258\n4.0\t4.2597534090216875\n2.0\t2.043014377365254\n3.0\t2.6738366011313683\n5.0\t5.51974447550856\n5.0\t4.218610847953261\n3.0\t2.043014377365254\n3.0\t3.8576539813166915\n4.0\t4.620710275658258\n1.0\t2.271737173426372\n3.0\t6.619124347591423\n5.0\t4.851395514443539\n5.0\t4.620710275658258\n4.0\t4.587876070934797\n4.0\t4.42704412240343\n2.0\t1.9107803067898017\n4.0\t4.442940974729936\n4.0\t4.39198747959714\n3.0\t2.0604152377854916\n4.0\t4.459623013367491\n6.0\t4.251348753344686\n3.0\t4.114311595632834\n6.0\t5.858334359029996\n1.0\t3.2022317747854605\n5.0\t4.765308253166815\n7.0\t4.39198747959714\n0.0\t2.6738366011313683\n2.0\t2.167437921105945\n2.0\t4.620710275658258\n4.0\t4.218610847953261\n2.0\t1.682057510728684\n6.0\t4.620710275658258\n3.0\t2.6738366011313683\n8.0\t6.403328141184829\n3.0\t2.271737173426372\n1.0\t2.043014377365254\n6.0\t6.019963445685235\n3.0\t4.218610847953261\n7.0\t9.828927492093499\n5.0\t5.36087999917072\n3.0\t2.818434578639925\n4.0\t4.418367522333028\n5.0\t5.663158417671838\n7.0\t5.349871577647072\n4.0\t4.6979646163017605\n4.0\t2.4451138050702506\n4.0\t4.218610847953261\n2.0\t2.043014377365254\n3.0\t2.6738366011313683\n4.0\t4.620710275658258\n2.0\t2.6738366011313683\n4.0\t4.620710275658258\n5.0\t4.9940310492279325\n2.0\t2.3128797344947984\n3.0\t1.926154416218452\n5.0\t5.728217064791224\n2.0\t2.6738366011313683\n3.0\t4.39198747959714\n5.0\t4.620710275658258\n2.0\t1.9387151250448273\n3.0\t3.5364081532739675\n5.0\t4.48572944742746\n2.0\t2.733429381838505\n2.0\t4.169289016042967\n4.0\t4.51849263582244\n2.0\t2.043014377365254\n2.0\t1.9107803067898017\n0.0\t2.271737173426372\n3.0\t1.397052757084566\n2.0\t2.043014377365254\n2.0\t4.218610847953261\n4.0\t2.6738366011313683\n4.0\t1.926154416218452\n5.0\t4.114311595632834\n6.0\t4.610246980978388\n7.0\t4.560621189977153\n6.0\t4.353282003822829\n6.0\t4.620710275658258\n3.0\t4.39198747959714\n4.0\t4.620710275658258\n2.0\t2.6738366011313683\n3.0\t2.4451138050702506\n9.0\t4.620710275658258\n4.0\t4.51849263582244\n4.0\t4.620710275658258\n5.0\t4.6969969244264576\n5.0\t4.620710275658258\n3.0\t4.199664323340584\n6.0\t5.801201708609597\n5.0\t5.898526350753855\n5.0\t4.508100357471065\n4.0\t5.07763059359732\n10.0\t4.620710275658258\n4.0\t4.2597534090216875\n2.0\t4.765308253166815\n4.0\t3.63567281250549\n7.0\t5.306415930024286\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_870338284","id":"20210125-170341_211098694","dateCreated":"2021-01-12T21:24:08+0000","dateStarted":"2021-02-06T19:25:50+0000","dateFinished":"2021-02-06T19:25:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"text":"%md\n\n.\nUsing *matplotlib*, plot the predicted and actual years of residence.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Using matplotlib, plot the predicted and actual years of residence.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_139574153","id":"20210125-170341_308464893","dateCreated":"2021-01-12T21:24:19+0000","dateStarted":"2021-02-06T19:25:51+0000","dateFinished":"2021-02-06T19:25:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%python\n\nplt.style.use('seaborn')\nplt.figure(figsize=[9,7])\n\n\nx = RES_DF[['PREDICTION']].pull()\ny = RES_DF[['YRS_RESIDENCE']].pull()\nn = len(x)\nrefx = np.linspace(0, 15,n)\nplt.plot(refx, refx, '.')\nplt.plot(x, y, '.')\n\nplt.xlabel('PREDICTION')\nplt.ylabel('YRS_RESIDENCE')\nplt.title('The prediction and actual value for years of residence')\nplt.grid(True)\nplt.show()\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_238132129","id":"20210125-170341_587080410","dateCreated":"2021-01-12T21:24:55+0000","dateStarted":"2021-02-06T19:25:51+0000","dateFinished":"2021-02-06T19:25:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%md\n.\nPlot the residuals using *matplotlib*.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Plot the residuals using matplotlib.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-2019820365","id":"20210125-170341_1541082499","dateCreated":"2021-01-12T21:25:18+0000","dateStarted":"2021-02-06T19:25:53+0000","dateFinished":"2021-02-06T19:25:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"text":"%python\n\nplt.style.use('seaborn')\nplt.figure(figsize=[9,7])\n\nx = np.matrix(RES_DF[['PREDICTION']].pull())\ny = np.matrix(RES_DF[['YRS_RESIDENCE']].pull())\nplt.plot(x, y-x, '.')\n\nplt.hlines(y=0, xmin=0, xmax=15, colors='black', linestyles='solid', alpha=0.8)\nplt.xlabel('PREDICTION')\nplt.ylabel('RESIDUAL')\nplt.title('Prediction vs. residuals')\nplt.grid(True)\nplt.show()\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1351336363","id":"20210125-170341_2131254674","dateCreated":"2021-01-12T21:25:39+0000","dateStarted":"2021-02-06T19:25:54+0000","dateFinished":"2021-02-06T19:25:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"text":"%md\n\n.\n\nCompute RMSE explicitly using the prediction results. Also compute R-squared using the test data set using the model's *score* method. Note that both the RMSE and R-squared are similar to the values produced automatically by ***oml.glm***.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Compute RMSE explicitly using the prediction results. Also compute R-squared using the test data set using the model's score method. Note that both the RMSE and R-squared are similar to the values produced automatically by oml.glm.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_382433762","id":"20210125-170341_2072601514","dateCreated":"2021-01-12T21:46:38+0000","dateStarted":"2021-02-06T19:25:55+0000","dateFinished":"2021-02-06T19:25:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"text":"%python\n\nprint(((RES_DF['YRS_RESIDENCE'] - RES_DF['PREDICTION']) ** 2).mean() ** .5)\n\nprint(glm_mod.score(TEST.drop('YRS_RESIDENCE'), TEST[:,['YRS_RESIDENCE']]))\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"1.402635365872594\n0.477143\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1751201584","id":"20210125-170341_682784499","dateCreated":"2021-01-12T22:00:35+0000","dateStarted":"2021-02-06T19:25:56+0000","dateFinished":"2021-02-06T19:25:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"title":"Step 3: Clustering using K-Means","text":"%md\n\nOML4Py supports clustering using several algorithms: K-Means, O-Cluster, and Expectation Maximization. In this lab, we illustrate how to identify natural clusters of customers using the *CUSTOMERS* dataset and the unsupervised learning K-Means algorithm. Note that data exploration, preparation, and machine learning run inside Autonomous Database.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py supports clustering using several algorithms: K-Means, O-Cluster, and Expectation Maximization. In this lab, we illustrate how to identify natural clusters of customers using the CUSTOMERS dataset and the unsupervised learning K-Means algorithm. Note that data exploration, preparation, and machine learning run inside Autonomous Database.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1920877208","id":"20210125-170341_730251635","dateCreated":"2021-01-12T22:03:34+0000","dateStarted":"2021-02-06T19:25:57+0000","dateFinished":"2021-02-06T19:25:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%md\n\n.\nBuild a *k-Means* clustering model with 3 clusters, first dropping the model *CUST_CLUSTER_MODEL* if it exists. Specify the number of iterations for building the cluster tree using the *KMNS_ITERATIONS* setting and the K-Means random seed generator using the *KMNS_RANDOM_SEED* setting. *KMNS_ITERATIONS* specifies the number of times the algorithm should iterate over the training data before it finalizes the selection of centroids. You can adjust this parameter to balance accuracy against training time. The *KMNS_RANDOM_SEED* value is used for cluster initialization and can have a significant effect on cluster selection.\n\nNote that *model_name* causes the model to be persisted across notebook sessions.","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Build a k-Means clustering model with 3 clusters, first dropping the model CUST_CLUSTER_MODEL if it exists. Specify the number of iterations for building the cluster tree using the KMNS_ITERATIONS setting and the K-Means random seed generator using the KMNS_RANDOM_SEED setting. KMNS_ITERATIONS specifies the number of times the algorithm should iterate over the training data before it finalizes the selection of centroids. You can adjust this parameter to balance accuracy against training time. The KMNS_RANDOM_SEED value is used for cluster initialization and can have a significant effect on cluster selection.

\n

Note that model_name causes the model to be persisted across notebook sessions.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-2082300111","id":"20210125-170341_383774044","dateCreated":"2021-01-12T22:34:24+0000","dateStarted":"2021-02-06T19:25:58+0000","dateFinished":"2021-02-06T19:25:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"text":"%python\n\ntry:\n oml.drop(model=\"CUST_CLUSTER_MODEL\")\nexcept:\n print(\"Model does not exist\")\n\nsetting = {'KMNS_ITERATIONS': 20, 'KMNS_RANDOM_SEED': 7}\nkm_mod = oml.km(n_clusters = 3, **setting).fit(CUST_DF, model_name = \"CUST_CLUSTER_MODEL\", case_id = 'CUST_ID')","user":"OMLUSER03","dateUpdated":"2021-02-06T19:25:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_-2001724888","id":"20210125-170341_645617694","dateCreated":"2021-01-12T22:31:33+0000","dateStarted":"2021-02-06T19:25:58+0000","dateFinished":"2021-02-06T19:26:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%md\n\n.\nDisplay the K-Means model details. \n\n ","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display the K-Means model details.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1973185089","id":"20210125-170341_491104204","dateCreated":"2021-01-12T22:35:20+0000","dateStarted":"2021-02-06T19:26:03+0000","dateFinished":"2021-02-06T19:26:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%python\n\nkm_mod\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nModel Name: CUST_CLUSTER_MODEL\n\nModel Owner: OMLUSER03\n\nAlgorithm Name: K-Means\n\nMining Function: CLUSTERING\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_KMEANS\n1 CLUS_NUM_CLUSTERS 3\n2 KMNS_CONV_TOLERANCE .001\n3 KMNS_DETAILS KMNS_DETAILS_HIERARCHY\n4 KMNS_DISTANCE KMNS_EUCLIDEAN\n5 KMNS_ITERATIONS 20\n6 KMNS_MIN_PCT_ATTR_SUPPORT .1\n7 KMNS_NUM_BINS 11\n8 KMNS_RANDOM_SEED 7\n9 KMNS_SPLIT_CRITERION KMNS_VARIANCE\n10 ODMS_DETAILS ODMS_ENABLE\n11 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n12 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n13 PREP_AUTO ON\n\nGlobal Statistics: \n attribute name attribute value\n0 CONVERGED YES\n1 NUM_ROWS 4500\n\nAttributes: \nAFFINITY_CARD\nCUST_CREDIT_LIMIT\nCUST_GENDER\nCUST_INCOME_LEVEL\nCUST_MARITAL_STATUS\nCUST_YEAR_OF_BIRTH\nEDUCATION\nHOUSEHOLD_SIZE\nOCCUPATION\nYRS_RESIDENCE\nY_BOX_GAMES\n\nPartition: NO\n\nClusters: \n\n CLUSTER_ID ROW_CNT PARENT_CLUSTER_ID TREE_LEVEL DISPERSION\n0 1 4500 NaN 1 6.276772\n1 2 3123 1.0 2 6.586027\n2 3 1377 1.0 2 5.575388\n3 4 2085 2.0 3 6.938511\n4 5 1038 2.0 3 5.878003\n\nTaxonomy: \n\n PARENT_CLUSTER_ID CHILD_CLUSTER_ID\n0 1 2.0\n1 1 3.0\n2 2 4.0\n3 2 5.0\n4 3 NaN\n5 4 NaN\n6 5 NaN\n\nLeaf Cluster Counts: \n\n CLUSTER_ID CNT\n0 3 1377\n1 4 2085\n2 5 1038\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1148731922","id":"20210125-170341_13983822","dateCreated":"2021-01-12T22:35:12+0000","dateStarted":"2021-02-06T19:26:04+0000","dateFinished":"2021-02-06T19:26:04+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"text":"%md\n\n.\nDisplay the cluster details for all clusters in the hierarchy with row counts and dispersion. The dispersion value is a measure of how compact or how spread out the data is within a cluster. The dispersion value is greater than 0 - the lower the dispersion value, the more compact the cluster, and the closer the data points are to the centroid of the cluster. A larger value indicates the data points are more disperse or spread out from the controid.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:04+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display the cluster details for all clusters in the hierarchy with row counts and dispersion. The dispersion value is a measure of how compact or how spread out the data is within a cluster. The dispersion value is greater than 0 - the lower the dispersion value, the more compact the cluster, and the closer the data points are to the centroid of the cluster. A larger value indicates the data points are more disperse or spread out from the controid.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_429452791","id":"20210125-170341_1762248709","dateCreated":"2021-01-12T22:40:39+0000","dateStarted":"2021-02-06T19:26:05+0000","dateFinished":"2021-02-06T19:26:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:71"},{"text":"%python\n\nz.show(km_mod.clusters)\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:05+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CLUSTER_ID":"string","ROW_CNT":"string","PARENT_CLUSTER_ID":"string","TREE_LEVEL":"string","DISPERSION":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CLUSTER_ID\tROW_CNT\tPARENT_CLUSTER_ID\tTREE_LEVEL\tDISPERSION\n1.0\t4500.0\tnan\t1.0\t6.276771678127229\n2.0\t3123.0\t1.0\t2.0\t6.5860271201254195\n3.0\t1377.0\t1.0\t2.0\t5.575388420784927\n4.0\t2085.0\t2.0\t3.0\t6.9385112173435965\n5.0\t1038.0\t2.0\t3.0\t5.878002705192953\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1649598332","id":"20210125-170341_365872786","dateCreated":"2021-01-12T22:40:54+0000","dateStarted":"2021-02-06T19:26:06+0000","dateFinished":"2021-02-06T19:26:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:72"},{"text":"%md\n.\nThe taxonomy shows the hierarchy of the child clusters in relationship to the parent clusters.","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
The taxonomy shows the hierarchy of the child clusters in relationship to the parent clusters.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-248038066","id":"20210125-170341_621111328","dateCreated":"2021-01-16T00:26:07+0000","dateStarted":"2021-02-06T19:26:06+0000","dateFinished":"2021-02-06T19:26:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:73"},{"text":"%python\n\nz.show(km_mod.taxonomy)","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PARENT_CLUSTER_ID":"string","CHILD_CLUSTER_ID":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"PARENT_CLUSTER_ID\tCHILD_CLUSTER_ID\n1.0\t2.0\n1.0\t3.0\n2.0\t4.0\n2.0\t5.0\n3.0\tnan\n4.0\tnan\n5.0\tnan\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-2106929939","id":"20210125-170341_251243486","dateCreated":"2021-01-16T00:16:46+0000","dateStarted":"2021-02-06T19:26:07+0000","dateFinished":"2021-02-06T19:26:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:74"},{"text":"%md\n.\nUse the model to predict cluster membership. The *supplemental_cols* argument carries the target column to the output to retain the relationship between the predictions and their original preditor values. These predictors may include a case id, for example to join with other tables, or mutiple (or all) columns of the scoring data. Users should be aware that unlike Pandas DataFrames, which are explicitly ordered in memory, results from relational databases do not have a specific order unless explicitly specified by an *ORDER BY* clause. As such, users cannot rely on results to maintain the same order across different data sets (tables and DataFrame proxy objects).","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the model to predict cluster membership. The supplemental_cols argument carries the target column to the output to retain the relationship between the predictions and their original preditor values. These predictors may include a case id, for example to join with other tables, or mutiple (or all) columns of the scoring data. Users should be aware that unlike Pandas DataFrames, which are explicitly ordered in memory, results from relational databases do not have a specific order unless explicitly specified by an ORDER BY clause. As such, users cannot rely on results to maintain the same order across different data sets (tables and DataFrame proxy objects).

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-860092760","id":"20210125-170341_689374180","dateCreated":"2021-01-12T22:48:40+0000","dateStarted":"2021-02-06T19:26:08+0000","dateFinished":"2021-02-06T19:26:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:75"},{"text":"%python\n\npred = km_mod.predict(CUST_DF, supplemental_cols = CUST_DF)\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_775584053","id":"20210125-170341_1242479106","dateCreated":"2021-01-12T22:49:05+0000","dateStarted":"2021-02-06T19:26:08+0000","dateFinished":"2021-02-06T19:26:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:76"},{"text":"%python\n\nz.show(pred)","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","YRS_RESIDENCE":"string","Y_BOX_GAMES":"string","CLUSTER_ID":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\tCLUSTER_ID\n100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4\n102828\tF\tNeverM\t1967\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t1\tMachine\t4\t0\t4\n101232\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n100696\tM\tMarried\t1971\tF: 110,000 - 129,999\t7000\tProfsc\t1\t3\tProf.\t3\t0\t5\n103948\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tCleric.\t4\t0\t4\n103791\tM\tDivorc.\t1952\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tProf.\t5\t0\t4\n100804\tF\tDivorc.\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tProf.\t6\t0\t4\n101610\tM\tNeverM\t1985\tI: 170,000 - 189,999\t3000\t11th\t0\t1\tHandler\t0\t1\t3\n102308\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tProf.\t2\t1\t3\n100593\tM\tMarried\t1963\tG: 130,000 - 149,999\t1500\tHS-grad\t1\t3\tProf.\t4\t0\t5\n100558\tM\tMarried\t1964\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t3\tMachine\t4\t0\t5\n103401\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tCrafts\t4\t1\t3\n102740\tF\tDivorc.\t1929\tK: 250,000 - 299,999\t15000\t10th\t0\t2\tOther\t0\t0\t4\n103049\tM\tMarried\t1970\tJ: 190,000 - 249,999\t7000\tAssoc-A\t1\t3\tProf.\t3\t0\t5\n103021\tM\tNeverM\t1978\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t2\tSales\t2\t1\t3\n103829\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t9+\tMachine\t3\t0\t4\n104077\tM\tNeverM\t1975\tL: 300,000 and above\t9000\tProfsc\t0\t2\tProf.\t3\t1\t3\n101243\tF\tNeverM\t1984\tK: 250,000 - 299,999\t7000\t11th\t0\t9+\t?\t1\t1\t3\n101798\tM\tMarried\t1960\tG: 130,000 - 149,999\t15000\tHS-grad\t1\t3\tExec.\t5\t0\t5\n101315\tM\tMarried\t1954\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t3\tCrafts\t5\t0\t4\n101940\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t1\t?\t2\t1\t3\n104454\tM\tMarried\t1943\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tSales\t8\t0\t5\n102060\tM\tNeverM\t1978\tL: 300,000 and above\t9000\tHS-grad\t0\t6-8\tHandler\t3\t1\t3\n101297\tF\tSepar.\t1960\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tSales\t1\t0\t4\n103046\tM\tMarried\t1954\tL: 300,000 and above\t7000\tBach.\t0\t3\tExec.\t6\t0\t4\n101392\tF\tDivorc.\t1948\tD: 70,000 - 89,999\t3000\tAssoc-V\t0\t9+\tCleric.\t6\t0\t4\n101893\tM\tNeverM\t1976\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\tCrafts\t3\t1\t3\n100019\tM\tMarried\t1971\tE: 90,000 - 109,999\t7000\tAssoc-V\t1\t3\tTransp.\t4\t0\t5\n102893\tF\tDivorc.\t1957\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t9+\tCleric.\t5\t0\t4\n102276\tM\tMarried\t1972\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t4\t0\t5\n103564\tM\tMarried\t1948\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tProf.\t6\t0\t5\n104459\tM\tMarried\t1963\tL: 300,000 and above\t11000\t7th-8th\t0\t3\tSales\t4\t0\t4\n102404\tM\tDivorc.\t1954\tK: 250,000 - 299,999\t11000\tMasters\t1\t2\tSales\t6\t0\t5\n101891\tM\tMarried\t1956\tJ: 190,000 - 249,999\t15000\tHS-grad\t1\t3\tCrafts\t5\t0\t5\n104426\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t6-8\tTechSup\t2\t1\t3\n102894\tM\tDivorc.\t1968\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t2\tExec.\t5\t0\t4\n102561\tF\tSepar.\t1954\tF: 110,000 - 129,999\t9000\t10th\t0\t9+\tOther\t5\t0\t4\n103302\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4\n103159\tM\tMarried\t1977\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t3\tCrafts\t3\t1\t3\n101044\tM\tMarried\t1966\tL: 300,000 and above\t11000\tMasters\t1\t3\tProf.\t5\t0\t5\n103613\tM\tMarried\t1966\tK: 250,000 - 299,999\t9000\tProfsc\t1\t3\tProf.\t4\t0\t5\n104388\tF\tNeverM\t1980\tK: 250,000 - 299,999\t7000\tBach.\t0\t6-8\tHandler\t2\t1\t3\n101898\tF\tMabsent\t1956\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t9+\tExec.\t5\t0\t4\n102955\tM\tMarried\t1921\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tCrafts\t8\t0\t4\n103065\tM\tNeverM\t1963\tI: 170,000 - 189,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4\n101724\tM\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tMachine\t4\t1\t3\n102815\tM\tMarried\t1970\tL: 300,000 and above\t7000\tHS-grad\t1\t3\tSales\t3\t0\t5\n100275\tM\tNeverM\t1963\tI: 170,000 - 189,999\t5000\tBach.\t0\t2\tCleric.\t4\t0\t4\n101956\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tProf.\t1\t1\t3\n100313\tM\tDivorc.\t1950\tK: 250,000 - 299,999\t15000\t< Bach.\t1\t2\tSales\t7\t0\t5\n103778\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tProf.\t3\t0\t5\n101170\tM\tMarried\t1970\tL: 300,000 and above\t7000\t< Bach.\t1\t3\tProf.\t3\t0\t5\n101519\tF\tDivorc.\t1957\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t9+\tSales\t5\t0\t4\n103706\tM\tMarried\t1949\tF: 110,000 - 129,999\t5000\tBach.\t1\t3\tExec.\t5\t0\t5\n101509\tM\tMarried\t1951\tK: 250,000 - 299,999\t11000\tBach.\t0\t3\tOther\t5\t0\t4\n100139\tM\tMarried\t1945\tJ: 190,000 - 249,999\t11000\t1st-4th\t0\t3\tOther\t6\t0\t4\n101113\tM\tMarried\t1969\tJ: 190,000 - 249,999\t7000\tBach.\t1\t3\tProf.\t3\t0\t5\n103583\tM\tMarried\t1957\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tMachine\t5\t0\t5\n101538\tM\tMarried\t1964\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tCrafts\t6\t0\t5\n103746\tF\tMarried\t1955\tD: 70,000 - 89,999\t9000\tHS-grad\t1\t4-5\tCleric.\t5\t0\t5\n101126\tF\tMarried\t1955\tD: 70,000 - 89,999\t10000\tHS-grad\t1\t4-5\tCleric.\t5\t0\t5\n101858\tM\tMarried\t1954\tH: 150,000 - 169,999\t1500\tAssoc-V\t1\t3\tProf.\t5\t0\t5\n102241\tF\tMarried\t1981\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t4-5\tSales\t2\t1\t3\n102708\tF\tMarried\t1967\tL: 300,000 and above\t9000\tBach.\t1\t4-5\tCleric.\t4\t0\t5\n104307\tM\tMarried\t1943\tH: 150,000 - 169,999\t7000\tProfsc\t1\t3\tProf.\t11\t0\t5\n101213\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tProtec.\t5\t0\t4\n100577\tM\tMarried\t1957\tH: 150,000 - 169,999\t7000\tBach.\t1\t3\tMachine\t5\t0\t5\n101641\tM\tMarried\t1946\tG: 130,000 - 149,999\t11000\tPhD\t1\t3\tTechSup\t6\t0\t5\n101739\tM\tMarried\t1974\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tSales\t3\t1\t3\n103878\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t15000\t< Bach.\t0\t9+\tProtec.\t5\t0\t4\n101780\tM\tMarried\t1972\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tExec.\t4\t0\t5\n100962\tM\tMarried\t1943\tH: 150,000 - 169,999\t5000\tProfsc\t1\t3\tProf.\t11\t0\t5\n102453\tF\tDivorc.\t1960\tJ: 190,000 - 249,999\t15000\tBach.\t0\t9+\tCleric.\t4\t0\t4\n103391\tM\tNeverM\t1970\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tSales\t2\t0\t4\n100111\tM\tNeverM\t1970\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t2\tSales\t2\t0\t4\n102644\tM\tNeverM\t1967\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4\n103146\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4\n103890\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tTechSup\t2\t1\t3\n102866\tF\tSepar.\t1964\tL: 300,000 and above\t15000\tHS-grad\t0\t9+\tMachine\t2\t0\t4\n101647\tM\tMarried\t1952\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t3\tProf.\t5\t0\t5\n103000\tF\tDivorc.\t1963\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tCleric.\t3\t0\t4\n103704\tF\tNeverM\t1982\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t9+\tSales\t2\t1\t3\n103767\tM\tMarried\t1947\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4\n100737\tF\tNeverM\t1983\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tSales\t2\t1\t3\n103446\tM\tMarried\t1959\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t3\tExec.\t4\t0\t4\n102256\tM\tNeverM\t1980\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t2\tCleric.\t1\t1\t3\n102180\tF\tMarried\t1940\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t4-5\tSales\t6\t0\t4\n104364\tF\tMarried\t1964\tF: 110,000 - 129,999\t5000\tBach.\t0\t4-5\tProf.\t4\t0\t4\n104253\tM\tMarried\t1973\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tHandler\t5\t0\t4\n103069\tM\tMarried\t1965\tH: 150,000 - 169,999\t11000\t< Bach.\t0\t3\tTechSup\t5\t0\t4\n103168\tF\tNeverM\t1978\tK: 250,000 - 299,999\t7000\tAssoc-A\t0\t9+\tCleric.\t3\t1\t3\n100524\tM\tMarried\t1970\tL: 300,000 and above\t11000\t< Bach.\t0\t3\tMachine\t5\t0\t4\n102127\tM\tMarried\t1954\tI: 170,000 - 189,999\t9000\t< Bach.\t1\t3\tSales\t10\t0\t5\n103840\tM\tNeverM\t1984\tL: 300,000 and above\t9000\t11th\t0\t1\tOther\t1\t1\t3\n100021\tM\tMarried\t1964\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t3\tExec.\t4\t0\t4\n101679\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\t< Bach.\t1\t3\tCrafts\t7\t0\t5\n102075\tM\tMarried\t1936\tD: 70,000 - 89,999\t3000\tHS-grad\t1\t3\tExec.\t7\t0\t5\n100560\tM\tMarried\t1940\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tSales\t5\t0\t4\n101925\tF\tNeverM\t1980\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t2\tOther\t2\t1\t3\n103012\tF\tDivorc.\t1956\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t9+\tCleric.\t5\t0\t4\n103155\tM\tNeverM\t1983\tL: 300,000 and above\t11000\t< Bach.\t0\t1\tOther\t2\t1\t3\n103491\tM\tMarried\t1971\tF: 110,000 - 129,999\t1500\tProfsc\t1\t3\tProf.\t3\t0\t5\n102688\tM\tMarried\t1976\tB: 30,000 - 49,999\t1500\tBach.\t0\t3\tTechSup\t2\t1\t3\n102274\tF\tWidowed\t1939\tJ: 190,000 - 249,999\t9000\t11th\t0\t2\t?\t6\t0\t4\n103743\tM\tMarried\t1955\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tSales\t7\t0\t4\n103732\tF\tNeverM\t1954\tB: 30,000 - 49,999\t3000\tProfsc\t1\t2\tProf.\t7\t0\t5\n102996\tM\tNeverM\t1986\tC: 50,000 - 69,999\t1500\t10th\t0\t1\tOther\t1\t1\t3\n100923\tM\tMarried\t1968\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n102130\tM\tMarried\t1977\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t3\tOther\t3\t1\t3\n101640\tM\tNeverM\t1974\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tExec.\t4\t1\t3\n102373\tF\tSepar.\t1952\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tSales\t5\t0\t4\n102932\tM\tMarried\t1949\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t3\tSales\t5\t0\t4\n100468\tM\tNeverM\t1978\tH: 150,000 - 169,999\t1500\tBach.\t0\t2\tExec.\t3\t1\t3\n104278\tM\tMarried\t1957\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tSales\t7\t0\t5\n103489\tM\tMarried\t1926\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t3\tSales\t2\t0\t4\n100045\tM\tMarried\t1970\tL: 300,000 and above\t15000\tAssoc-A\t0\t3\tSales\t5\t0\t4\n100838\tM\tMarried\t1973\tD: 70,000 - 89,999\t5000\tBach.\t1\t3\tExec.\t4\t0\t5\n100984\tM\tMarried\t1970\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t0\t4\n101530\tM\tMarried\t1969\tH: 150,000 - 169,999\t1500\tBach.\t1\t3\tProf.\t3\t0\t5\n101255\tF\tDivorc.\t1960\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t9+\tCleric.\t5\t0\t5\n100986\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t5\t0\t4\n103314\tM\tNeverM\t1973\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t2\tSales\t4\t0\t5\n102345\tM\tMarried\t1959\tL: 300,000 and above\t11000\tBach.\t1\t3\tSales\t7\t0\t5\n103143\tF\tNeverM\t1971\tE: 90,000 - 109,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4\n102901\tM\tMarried\t1948\tC: 50,000 - 69,999\t1500\t9th\t0\t3\tFarming\t4\t0\t4\n104010\tM\tMarried\t1953\tA: Below 30,000\t1500\t< Bach.\t1\t3\tProtec.\t5\t0\t5\n100955\tM\tMarried\t1952\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t3\tCrafts\t3\t0\t4\n101907\tM\tNeverM\t1947\tK: 250,000 - 299,999\t9000\tBach.\t1\t2\tExec.\t7\t0\t5\n103315\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tTransp.\t4\t0\t4\n102801\tM\tMarried\t1947\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t3\tExec.\t7\t0\t4\n104171\tM\tMarried\t1975\tJ: 190,000 - 249,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t1\t3\n103085\tM\tDivorc.\t1954\tH: 150,000 - 169,999\t7000\tAssoc-V\t1\t2\tExec.\t6\t0\t5\n101584\tF\tNeverM\t1976\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tExec.\t3\t1\t3\n101947\tM\tMarried\t1955\tF: 110,000 - 129,999\t5000\t9th\t0\t3\tCrafts\t5\t0\t4\n100176\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tProtec.\t4\t0\t5\n102978\tM\tMarried\t1943\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tExec.\t6\t0\t5\n101285\tM\tMabsent\t1924\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tProf.\t2\t0\t4\n103870\tF\tMarried\t1969\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t4-5\tOther\t3\t0\t4\n104218\tM\tNeverM\t1982\tE: 90,000 - 109,999\t9000\tAssoc-V\t0\t2\tOther\t2\t1\t3\n100290\tM\tMarried\t1925\tC: 50,000 - 69,999\t5000\t7th-8th\t0\t3\tFarming\t6\t0\t4\n103855\tM\tMarried\t1970\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\tCrafts\t3\t0\t4\n100711\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4\n104160\tM\tNeverM\t1961\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tFarming\t9\t0\t4\n101772\tM\tNeverM\t1980\tI: 170,000 - 189,999\t3000\tAssoc-V\t0\t1\tSales\t2\t1\t3\n103770\tM\tNeverM\t1985\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tHandler\t1\t1\t3\n102289\tM\tMarried\t1942\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCleric.\t6\t0\t5\n100249\tF\tNeverM\t1966\tJ: 190,000 - 249,999\t15000\tMasters\t0\t1\tExec.\t4\t0\t4\n103841\tF\tNeverM\t1980\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t1\tMachine\t2\t1\t3\n104123\tM\tMarried\t1975\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tHandler\t3\t1\t3\n103431\tM\tDivorc.\t1963\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tHandler\t4\t0\t4\n101036\tM\tMarried\t1945\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t3\tTechSup\t6\t0\t4\n100827\tM\tMarried\t1945\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tCleric.\t6\t0\t5\n104257\tF\tMar-AF\t1968\tL: 300,000 and above\t11000\tAssoc-A\t0\t4-5\tCleric.\t4\t0\t4\n102213\tM\tNeverM\t1975\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t6-8\tMachine\t2\t1\t3\n102590\tF\tWidowed\t1962\tA: Below 30,000\t1500\t< Bach.\t0\t2\t?\t2\t0\t4\n101034\tM\tNeverM\t1966\tH: 150,000 - 169,999\t10000\tMasters\t0\t9+\tProf.\t4\t0\t4\n103460\tM\tMarried\t1945\tG: 130,000 - 149,999\t5000\tBach.\t0\t3\tOther\t6\t0\t4\n101617\tF\tNeverM\t1981\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t1\t?\t0\t1\t3\n101968\tM\tMarried\t1973\tI: 170,000 - 189,999\t1500\t< Bach.\t1\t3\tExec.\t3\t0\t5\n100031\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4\n100665\tM\tMarried\t1945\tG: 130,000 - 149,999\t7000\tBach.\t0\t3\tOther\t6\t0\t4\n102742\tF\tMarried\t1950\tG: 130,000 - 149,999\t5000\tBach.\t0\t4-5\tCleric.\t7\t0\t4\n102034\tM\tMarried\t1954\tG: 130,000 - 149,999\t7000\tBach.\t1\t3\tSales\t6\t0\t5\n104139\tM\tNeverM\t1966\tH: 150,000 - 169,999\t3000\tMasters\t0\t9+\tProf.\t4\t0\t4\n102997\tM\tMarried\t1962\tL: 300,000 and above\t9000\tBach.\t0\t3\tExec.\t4\t0\t4\n104313\tM\tDivorc.\t1958\tE: 90,000 - 109,999\t1500\tBach.\t0\t2\tProf.\t6\t0\t4\n100968\tM\tDivorc.\t1958\tE: 90,000 - 109,999\t9000\tBach.\t0\t2\tProf.\t6\t0\t4\n100343\tM\tMarried\t1966\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t3\tExec.\t4\t0\t5\n103645\tM\tMarried\t1966\tJ: 190,000 - 249,999\t10000\tAssoc-A\t1\t3\tExec.\t4\t0\t5\n102495\tF\tNeverM\t1973\tB: 30,000 - 49,999\t5000\tMasters\t0\t2\tCleric.\t3\t0\t4\n101624\tM\tNeverM\t1966\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t1\tOther\t4\t0\t4\n102351\tM\tMarried\t1964\tL: 300,000 and above\t9000\tBach.\t1\t3\tProf.\t5\t0\t5\n100579\tF\tMarried\t1947\tE: 90,000 - 109,999\t7000\t10th\t1\t4-5\tSales\t4\t0\t5\n103585\tF\tMarried\t1947\tE: 90,000 - 109,999\t5000\t10th\t1\t4-5\tSales\t4\t0\t5\n103505\tF\tDivorc.\t1942\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t2\tCleric.\t6\t0\t4\n100771\tF\tDivorc.\t1942\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tCleric.\t6\t0\t4\n101349\tF\tDivorc.\t1947\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t9+\tOther\t6\t0\t4\n102324\tM\tMarried\t1960\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tTechSup\t4\t0\t5\n101921\tF\tNeverM\t1978\tL: 300,000 and above\t11000\tBach.\t0\t2\tOther\t1\t1\t3\n101551\tM\tMarried\t1937\tI: 170,000 - 189,999\t9000\tPhD\t1\t3\tProf.\t7\t0\t5\n100465\tM\tMarried\t1978\tF: 110,000 - 129,999\t9000\tAssoc-A\t0\t3\tHandler\t3\t1\t3\n100374\tM\tNeverM\t1979\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t2\tSales\t2\t1\t3\n103783\tF\tMabsent\t1964\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t9+\tSales\t3\t0\t4\n104437\tF\tDivorc.\t1947\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t9+\tOther\t6\t0\t4\n100551\tF\tMabsent\t1964\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tSales\t3\t0\t4\n103676\tM\tNeverM\t1979\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t2\tSales\t2\t1\t3\n103245\tM\tMarried\t1978\tF: 110,000 - 129,999\t1500\tAssoc-A\t0\t3\tHandler\t3\t1\t3\n103865\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tMasters\t0\t3\tTransp.\t4\t0\t4\n102902\tF\tDivorc.\t1958\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t2\tTechSup\t5\t0\t4\n102012\tF\tNeverM\t1977\tL: 300,000 and above\t9000\tBach.\t0\t2\tExec.\t3\t1\t3\n101868\tF\tNeverM\t1960\tC: 50,000 - 69,999\t3000\t9th\t0\t1\tSales\t4\t0\t4\n100893\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tOther\t4\t0\t4\n103628\tF\tNeverM\t1974\tF: 110,000 - 129,999\t5000\tBach.\t0\t1\tCleric.\t3\t1\t3\n103702\tM\tDivorc.\t1944\tC: 50,000 - 69,999\t1500\t12th\t0\t6-8\tTransp.\t6\t0\t4\n101063\tM\tMarried\t1951\tE: 90,000 - 109,999\t10000\tHS-grad\t1\t3\tProf.\t5\t0\t5\n101678\tM\tMarried\t1967\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t3\tMachine\t4\t0\t5\n100309\tM\tMarried\t1951\tI: 170,000 - 189,999\t11000\tAssoc-A\t1\t3\tExec.\t8\t0\t5\n101983\tM\tMarried\t1960\tI: 170,000 - 189,999\t3000\tBach.\t1\t3\tSales\t4\t0\t5\n100594\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t6-8\tSales\t1\t1\t3\n103224\tF\tNeverM\t1962\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n100774\tF\tNeverM\t1983\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n101665\tM\tNeverM\t1985\tH: 150,000 - 169,999\t5000\t11th\t0\t1\tProtec.\t0\t1\t3\n101852\tF\tNeverM\t1972\tJ: 190,000 - 249,999\t11000\tBach.\t0\t1\tCleric.\t3\t0\t4\n100499\tM\tMarried\t1945\tG: 130,000 - 149,999\t5000\tAssoc-A\t0\t3\tCrafts\t6\t0\t4\n101663\tF\tDivorc.\t1965\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t2\tSales\t4\t0\t4\n103713\tM\tDivorc.\t1967\tL: 300,000 and above\t7000\tAssoc-V\t0\t2\tCrafts\t4\t0\t4\n104295\tM\tMarried\t1958\tG: 130,000 - 149,999\t11000\tHS-grad\t1\t3\tSales\t6\t0\t5\n100463\tF\tNeverM\t1974\tG: 130,000 - 149,999\t10000\t< Bach.\t0\t1\tSales\t3\t1\t3\n100574\tF\tNeverM\t1961\tL: 300,000 and above\t11000\tMasters\t1\t2\tProf.\t5\t0\t5\n101766\tF\tNeverM\t1969\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t2\tCleric.\t3\t0\t4\n103823\tF\tSepar.\t1974\tI: 170,000 - 189,999\t3000\t< Bach.\t0\t9+\tCleric.\t3\t1\t3\n102064\tM\tNeverM\t1962\tC: 50,000 - 69,999\t3000\tBach.\t0\t2\tHandler\t4\t0\t4\n103414\tF\tDivorc.\t1965\tL: 300,000 and above\t11000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4\n101672\tF\tNeverM\t1977\tH: 150,000 - 169,999\t5000\tBach.\t0\t2\tSales\t4\t1\t3\n104342\tM\tNeverM\t1979\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tExec.\t3\t1\t3\n103015\tM\tNeverM\t1979\tK: 250,000 - 299,999\t9000\tBach.\t0\t1\t?\t2\t1\t3\n101804\tF\tDivorc.\t1971\tK: 250,000 - 299,999\t15000\tAssoc-A\t0\t2\tMachine\t4\t0\t4\n100246\tM\tNeverM\t1978\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t2\tSales\t2\t1\t3\n100588\tM\tMarried\t1969\tE: 90,000 - 109,999\t5000\tBach.\t0\t3\tProf.\t3\t0\t4\n101723\tF\tDivorc.\t1950\tA: Below 30,000\t1500\t< Bach.\t0\t2\tProf.\t5\t0\t4\n100247\tF\tMarried\t1966\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t4-5\tCleric.\t4\t0\t4\n101114\tM\tMarried\t1967\tC: 50,000 - 69,999\t9000\tBach.\t1\t3\tSales\t4\t0\t5\n101274\tM\tMarried\t1969\tK: 250,000 - 299,999\t7000\t11th\t0\t3\tMachine\t3\t0\t4\n100793\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tSales\t5\t0\t5\n100217\tM\tMabsent\t1957\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t2\tFarming\t8\t0\t4\n103358\tM\tMarried\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tTransp.\t3\t1\t3\n102199\tM\tNeverM\t1984\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101413\tF\tNeverM\t1955\tH: 150,000 - 169,999\t5000\t< Bach.\t1\t2\tExec.\t5\t0\t5\n101132\tF\tNeverM\t1968\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t1\tCleric.\t4\t0\t4\n100553\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tOther\t3\t0\t5\n100279\tM\tMarried\t1965\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t3\tTechSup\t5\t0\t4\n101705\tF\tNeverM\t1982\tJ: 190,000 - 249,999\t9000\tAssoc-V\t0\t1\tTechSup\t2\t1\t3\n100126\tM\tMarried\t1968\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n102486\tM\tMarried\t1956\tL: 300,000 and above\t9000\tProfsc\t1\t3\tProf.\t7\t0\t5\n100673\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\tAssoc-A\t0\t3\tProf.\t6\t0\t4\n103820\tM\tNeverM\t1977\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tCrafts\t3\t1\t3\n101225\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tTechSup\t2\t1\t3\n100457\tM\tNeverM\t1976\tL: 300,000 and above\t9000\tAssoc-V\t0\t6-8\tProf.\t2\t1\t3\n102961\tM\tMarried\t1965\tK: 250,000 - 299,999\t9000\tBach.\t1\t3\tSales\t4\t0\t5\n103163\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t9000\tAssoc-A\t0\t9+\tProf.\t3\t0\t4\n103323\tM\tMarried\t1946\tL: 300,000 and above\t15000\t< Bach.\t1\t3\tTechSup\t6\t0\t5\n103325\tF\tNeverM\t1954\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t9+\tTransp.\t5\t0\t4\n102329\tF\tWidowed\t1929\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tTransp.\t4\t0\t4\n100742\tF\tNeverM\t1985\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t1\t1\t3\n101846\tM\tMarried\t1952\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tCleric.\t5\t0\t5\n103240\tM\tNeverM\t1978\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t1\tCrafts\t4\t1\t3\n103223\tM\tMarried\t1948\tG: 130,000 - 149,999\t3000\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n100230\tM\tMarried\t1956\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t6\t0\t4\n101917\tM\tMarried\t1954\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n101032\tM\tDivorc.\t1964\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tCrafts\t4\t0\t4\n103349\tF\tDivorc.\t1958\tG: 130,000 - 149,999\t7000\tProfsc\t0\t9+\tProf.\t5\t0\t4\n104003\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tTransp.\t4\t0\t4\n103685\tF\tMarried\t1974\tG: 130,000 - 149,999\t5000\t7th-8th\t0\t4-5\tOther\t3\t1\t3\n103698\tF\tDivorc.\t1956\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t2\tCleric.\t7\t0\t4\n102226\tM\tMarried\t1969\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tFarming\t6\t0\t4\n101847\tF\tSepar.\t1958\tH: 150,000 - 169,999\t7000\t11th\t0\t9+\tCleric.\t3\t0\t4\n100715\tF\tNeverM\t1976\tL: 300,000 and above\t15000\t< Bach.\t0\t2\tCleric.\t3\t1\t3\n102149\tM\tMabsent\t1975\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t1\tMachine\t3\t1\t3\n103083\tM\tMarried\t1965\tL: 300,000 and above\t7000\tBach.\t1\t3\tExec.\t5\t0\t5\n102631\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tExec.\t3\t0\t4\n101047\tM\tMarried\t1941\tL: 300,000 and above\t11000\tBach.\t1\t3\tSales\t3\t0\t5\n100383\tF\tMarried\t1974\tG: 130,000 - 149,999\t7000\t7th-8th\t0\t4-5\tOther\t3\t1\t3\n101636\tM\tNeverM\t1986\tL: 300,000 and above\t15000\t12th\t0\t1\tOther\t1\t1\t3\n100154\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t9+\tExec.\t5\t0\t4\n104405\tM\tDivorc.\t1975\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tTechSup\t1\t1\t3\n104008\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t2\tMachine\t2\t1\t3\n101752\tF\tNeverM\t1983\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\tProf.\t1\t1\t3\n102478\tF\tNeverM\t1984\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t1\t1\t3\n104312\tM\tMarried\t1970\tJ: 190,000 - 249,999\t15000\t10th\t0\t3\tMachine\t3\t0\t4\n102697\tM\tNeverM\t1982\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101302\tF\tNeverM\t1965\tF: 110,000 - 129,999\t10000\tBach.\t0\t2\tCrafts\t2\t0\t4\n102002\tM\tMarried\t1943\tF: 110,000 - 129,999\t7000\t7th-8th\t0\t3\tMachine\t6\t0\t4\n103953\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t9000\t12th\t0\t2\tOther\t4\t0\t4\n100622\tF\tNeverM\t1974\tF: 110,000 - 129,999\t7000\tBach.\t0\t1\tCleric.\t3\t1\t3\n100844\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tMasters\t0\t3\tTransp.\t4\t0\t4\n101583\tM\tDivorc.\t1946\tL: 300,000 and above\t11000\t1st-4th\t0\t9+\tCrafts\t6\t0\t4\n101844\tM\tMarried\t1947\tD: 70,000 - 89,999\t1500\t7th-8th\t0\t3\tCrafts\t6\t0\t4\n102513\tM\tNeverM\t1962\tG: 130,000 - 149,999\t15000\tHS-grad\t0\t2\tTransp.\t4\t0\t4\n103571\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tAssoc-A\t0\t6-8\tOther\t3\t0\t4\n101478\tF\tMarried\t1979\tC: 50,000 - 69,999\t3000\t1st-4th\t0\t1\tOther\t1\t1\t3\n102723\tM\tMarried\t1962\tD: 70,000 - 89,999\t3000\tBach.\t0\t3\tOther\t3\t0\t4\n101613\tM\tNeverM\t1970\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t9+\tOther\t3\t0\t4\n103845\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t15000\tBach.\t0\t9+\tTechSup\t3\t1\t3\n100824\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t9+\tTechSup\t3\t1\t3\n102218\tM\tNeverM\t1973\tG: 130,000 - 149,999\t1500\tAssoc-V\t0\t6-8\tCleric.\t3\t0\t4\n104403\tF\tMarried\t1979\tC: 50,000 - 69,999\t7000\t1st-4th\t0\t1\tOther\t1\t1\t3\n102178\tF\tNeverM\t1976\tF: 110,000 - 129,999\t7000\t5th-6th\t0\t1\tSales\t1\t1\t3\n102129\tM\tMarried\t1973\tH: 150,000 - 169,999\t5000\tBach.\t1\t3\tCrafts\t3\t0\t5\n100761\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tAssoc-A\t0\t6-8\tOther\t3\t0\t4\n100823\tM\tMabsent\t1947\tE: 90,000 - 109,999\t9000\tAssoc-A\t0\t2\tOther\t4\t0\t4\n103844\tM\tMabsent\t1947\tE: 90,000 - 109,999\t10000\tAssoc-A\t0\t2\tOther\t4\t0\t4\n101481\tF\tNeverM\t1979\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n101304\tF\tDivorc.\t1960\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t9+\tExec.\t5\t0\t4\n102933\tM\tDivorc.\t1965\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tCrafts\t4\t0\t4\n104229\tF\tDivorc.\t1960\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t9+\tExec.\t5\t0\t4\n104406\tF\tNeverM\t1979\tF: 110,000 - 129,999\t3000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n101799\tM\tDivorc.\t1944\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tProf.\t3\t0\t4\n103296\tF\tWidowed\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tExec.\t6\t0\t4\n102639\tF\tNeverM\t1979\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tHouse-s\t3\t1\t3\n100015\tM\tSepar.\t1959\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tExec.\t6\t0\t4\n100546\tF\tWidowed\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tExec.\t6\t0\t4\n101756\tF\tNeverM\t1973\tI: 170,000 - 189,999\t15000\t< Bach.\t0\t2\tExec.\t3\t0\t4\n100887\tM\tMarried\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n104022\tM\tMarried\t1959\tF: 110,000 - 129,999\t5000\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n103130\tM\tSepar.\t1959\tL: 300,000 and above\t15000\t< Bach.\t0\t2\tExec.\t6\t0\t4\n103913\tF\tDivorc.\t1948\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tSales\t6\t0\t4\n101248\tF\tDivorc.\t1948\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tSales\t6\t0\t4\n102824\tM\tMarried\t1960\tK: 250,000 - 299,999\t15000\tBach.\t1\t3\tExec.\t4\t0\t5\n101906\tF\tMarried\t1974\tE: 90,000 - 109,999\t9000\t< Bach.\t1\t4-5\tCleric.\t3\t1\t3\n100934\tM\tMabsent\t1974\tB: 30,000 - 49,999\t5000\tBach.\t0\t2\t?\t4\t1\t3\n103294\tM\tMarried\t1952\tF: 110,000 - 129,999\t5000\tMasters\t1\t3\tExec.\t5\t0\t5\n103408\tF\tMarried\t1968\tE: 90,000 - 109,999\t1500\tBach.\t1\t4-5\tExec.\t3\t0\t5\n100508\tM\tMarried\t1957\tL: 300,000 and above\t15000\tBach.\t0\t3\tTechSup\t5\t0\t4\n101383\tF\tNeverM\t1980\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101722\tM\tMarried\t1946\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tExec.\t6\t0\t4\n101560\tM\tMarried\t1957\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5\n104294\tM\tMarried\t1977\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tTransp.\t5\t1\t3\n101205\tM\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tHandler\t6\t0\t4\n102271\tM\tMarried\t1972\tF: 110,000 - 129,999\t5000\t< Bach.\t1\t3\tFarming\t4\t0\t5\n104213\tM\tMarried\t1967\tI: 170,000 - 189,999\t5000\t9th\t0\t3\tTransp.\t5\t0\t4\n103758\tM\tMarried\t1966\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n103434\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t1\tOther\t3\t0\t4\n103547\tF\tNeverM\t1983\tI: 170,000 - 189,999\t3000\tHS-grad\t0\t2\tSales\t2\t1\t3\n104182\tM\tMarried\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tProtec.\t3\t1\t3\n101533\tF\tMabsent\t1955\tG: 130,000 - 149,999\t7000\tBach.\t0\t9+\tCleric.\t5\t0\t4\n103569\tM\tDivorc.\t1939\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tExec.\t10\t0\t5\n102684\tF\tMabsent\t1981\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t9+\t?\t2\t1\t3\n101283\tF\tWidowed\t1959\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t9+\tCleric.\t3\t0\t4\n104267\tM\tNeverM\t1969\tL: 300,000 and above\t7000\t< Bach.\t1\t2\tProf.\t4\t0\t5\n103202\tM\tDivorc.\t1955\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t2\tCrafts\t5\t0\t4\n102605\tM\tMarried\t1970\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tExec.\t3\t0\t5\n101219\tF\tMarried\t1952\tA: Below 30,000\t1500\t< Bach.\t1\t4-5\tExec.\t1\t0\t5\n101078\tM\tMarried\t1948\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tExec.\t6\t0\t5\n102741\tM\tMarried\t1970\tL: 300,000 and above\t9000\tMasters\t1\t3\tProf.\t2\t0\t5\n103018\tF\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t4-5\tProf.\t3\t0\t5\n101469\tF\tMarried\t1957\tI: 170,000 - 189,999\t9000\tBach.\t1\t4-5\tProf.\t5\t0\t5\n103484\tM\tNeverM\t1976\tB: 30,000 - 49,999\t1500\tAssoc-A\t0\t2\tOther\t3\t1\t3\n100256\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tProf.\t9\t0\t5\n101652\tM\tMarried\t1961\tD: 70,000 - 89,999\t10000\tBach.\t0\t3\tFarming\t7\t0\t4\n103113\tM\tDivorc.\t1954\tH: 150,000 - 169,999\t15000\t< Bach.\t1\t2\tProf.\t5\t0\t5\n103222\tM\tMarried\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t3\t0\t4\n103868\tM\tDivorc.\t1976\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t2\tCleric.\t3\t1\t3\n102770\tF\tWidowed\t1967\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t9+\tOther\t2\t0\t4\n101520\tM\tMarried\t1964\tB: 30,000 - 49,999\t3000\tHS-grad\t1\t3\tTransp.\t5\t0\t5\n103885\tM\tNeverM\t1984\tI: 170,000 - 189,999\t3000\t11th\t0\t1\tMachine\t3\t1\t3\n104073\tF\tNeverM\t1980\tL: 300,000 and above\t7000\t< Bach.\t0\t2\tProf.\t3\t1\t3\n103189\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\t11th\t1\t3\tFarming\t6\t0\t5\n103270\tM\tMarried\t1964\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t3\tHandler\t5\t0\t4\n100527\tM\tMarried\t1966\tB: 30,000 - 49,999\t1500\tHS-grad\t1\t3\tProf.\t5\t0\t5\n100614\tM\tNeverM\t1986\tE: 90,000 - 109,999\t1500\t11th\t0\t1\tHandler\t0\t1\t3\n100766\tF\tDivorc.\t1958\tL: 300,000 and above\t9000\tProfsc\t0\t9+\tProf.\t5\t0\t4\n101108\tF\tMarried\t1967\tL: 300,000 and above\t9000\tAssoc-A\t1\t4-5\tExec.\t5\t0\t5\n103386\tF\tMarried\t1963\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t4-5\tExec.\t4\t0\t4\n102409\tF\tNeverM\t1981\tF: 110,000 - 129,999\t3000\tBach.\t0\t1\tProf.\t2\t1\t3\n100651\tM\tMarried\t1959\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t3\tExec.\t4\t0\t4\n100105\tM\tNeverM\t1976\tJ: 190,000 - 249,999\t10000\tBach.\t0\t1\tCleric.\t3\t1\t3\n103578\tF\tSepar.\t1959\tJ: 190,000 - 249,999\t9000\tBach.\t0\t9+\tMachine\t1\t0\t4\n103378\tM\tSepar.\t1978\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tCrafts\t3\t1\t3\n102295\tM\tMarried\t1943\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t3\tSales\t8\t0\t4\n104256\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCrafts\t5\t0\t4\n103593\tF\tDivorc.\t1952\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t9+\tCleric.\t5\t0\t4\n103227\tF\tDivorc.\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tTechSup\t3\t1\t3\n103750\tF\tDivorc.\t1960\tC: 50,000 - 69,999\t1500\tHS-grad\t1\t9+\tExec.\t4\t0\t5\n100739\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t4\t0\t5\n101467\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t3\tSales\t8\t0\t4\n104159\tM\tMarried\t1967\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tSales\t5\t0\t4\n100493\tM\tNeverM\t1968\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t2\tCleric.\t4\t0\t5\n101988\tM\tMarried\t1970\tG: 130,000 - 149,999\t15000\tProfsc\t1\t3\tProf.\t3\t0\t5\n100891\tM\tMarried\t1948\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tCrafts\t7\t0\t4\n100646\tF\tWidowed\t1941\tG: 130,000 - 149,999\t1500\tBach.\t0\t9+\tTechSup\t2\t0\t4\n103984\tF\tNeverM\t1967\tC: 50,000 - 69,999\t1500\tBach.\t0\t2\tCleric.\t5\t0\t4\n101800\tM\tMarried\t1958\tG: 130,000 - 149,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5\n100285\tF\tDivorc.\t1965\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t9+\tExec.\t4\t0\t4\n103282\tM\tMarried\t1968\tC: 50,000 - 69,999\t1500\tAssoc-V\t0\t3\tCrafts\t4\t0\t4\n100686\tM\tMarried\t1957\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tMachine\t5\t0\t4\n100526\tM\tNeverM\t1968\tL: 300,000 and above\t7000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n102527\tF\tDivorc.\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tOther\t4\t0\t4\n104206\tM\tMarried\t1947\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5\n102222\tM\tMarried\t1956\tI: 170,000 - 189,999\t3000\tBach.\t1\t3\tSales\t7\t0\t5\n103668\tF\tDivorc.\t1957\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tTechSup\t3\t0\t4\n104329\tM\tMarried\t1965\tK: 250,000 - 299,999\t7000\tBach.\t0\t3\tCrafts\t5\t0\t4\n103700\tM\tMarried\t1968\tD: 70,000 - 89,999\t15000\tBach.\t0\t3\tOther\t4\t0\t4\n101659\tF\tNeverM\t1983\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t1\tSales\t2\t1\t3\n103797\tF\tDivorc.\t1967\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t4\n102698\tM\tNeverM\t1981\tI: 170,000 - 189,999\t11000\tAssoc-A\t0\t1\tHandler\t2\t1\t3\n101117\tM\tMarried\t1973\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tMachine\t3\t0\t5\n103291\tM\tMarried\t1961\tK: 250,000 - 299,999\t7000\tHS-grad\t1\t3\tMachine\t5\t0\t5\n102927\tM\tNeverM\t1963\tI: 170,000 - 189,999\t11000\t< Bach.\t1\t2\tExec.\t5\t0\t5\n102091\tM\tMarried\t1969\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tCrafts\t3\t0\t4\n102366\tF\tDivorc.\t1975\tL: 300,000 and above\t11000\tBach.\t1\t9+\tOther\t4\t1\t3\n101713\tM\tMabsent\t1952\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t2\t?\t3\t0\t5\n101253\tM\tNeverM\t1978\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t2\tProf.\t3\t1\t3\n102681\tM\tMarried\t1955\tK: 250,000 - 299,999\t7000\tAssoc-A\t0\t3\tProf.\t5\t0\t4\n102344\tF\tDivorc.\t1979\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t2\tCleric.\t2\t1\t3\n101010\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tMasters\t1\t3\tExec.\t6\t0\t5\n102683\tM\tSepar.\t1969\tL: 300,000 and above\t7000\tHS-grad\t1\t2\tCleric.\t4\t0\t5\n100205\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tFarming\t2\t1\t3\n101862\tF\tMarried\t1947\tE: 90,000 - 109,999\t3000\tHS-grad\t0\t4-5\tSales\t7\t0\t4\n102249\tM\tMarried\t1963\tG: 130,000 - 149,999\t3000\tHS-grad\t1\t3\tSales\t6\t0\t5\n103365\tM\tMarried\t1944\tH: 150,000 - 169,999\t3000\tHS-grad\t1\t3\tMachine\t6\t0\t5\n104386\tM\tMarried\t1937\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t3\t?\t8\t0\t4\n102108\tM\tNeverM\t1981\tL: 300,000 and above\t15000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101598\tF\tNeverM\t1971\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t2\tCleric.\t4\t0\t4\n100974\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4\n103384\tM\tSepar.\t1982\tI: 170,000 - 189,999\t11000\t10th\t0\t1\tMachine\t2\t1\t3\n103452\tF\tNeverM\t1985\tD: 70,000 - 89,999\t5000\tHS-grad\t0\t1\tTechSup\t0\t1\t3\n101104\tM\tNeverM\t1982\tH: 150,000 - 169,999\t11000\tHS-grad\t0\t6-8\tMachine\t2\t1\t3\n101651\tM\tMarried\t1930\tG: 130,000 - 149,999\t10000\tBach.\t0\t3\t?\t2\t0\t4\n103278\tM\tNeverM\t1973\tL: 300,000 and above\t11000\t11th\t1\t2\tCrafts\t4\t0\t5\n104387\tM\tNeverM\t1980\tF: 110,000 - 129,999\t9000\tAssoc-A\t0\t1\tCleric.\t2\t1\t3\n103815\tF\tNeverM\t1976\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t1\tOther\t2\t1\t3\n100159\tM\tNeverM\t1982\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t6-8\t?\t3\t1\t3\n100886\tM\tNeverM\t1983\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101290\tM\tNeverM\t1967\tB: 30,000 - 49,999\t3000\tAssoc-V\t1\t2\tCleric.\t4\t0\t5\n100765\tM\tDivorc.\t1964\tL: 300,000 and above\t11000\t10th\t0\t1\tHandler\t4\t0\t4\n101261\tF\tNeverM\t1980\tL: 300,000 and above\t9000\t10th\t0\t2\tOther\t2\t1\t3\n100102\tM\tNeverM\t1966\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4\n100492\tF\tNeverM\t1983\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tCleric.\t2\t1\t3\n101106\tM\tMarried\t1968\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n100088\tM\tNeverM\t1967\tL: 300,000 and above\t11000\t7th-8th\t0\t9+\tCrafts\t4\t0\t4\n104415\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\t7th-8th\t0\t1\tMachine\t2\t1\t3\n103888\tM\tNeverM\t1981\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t2\tSales\t2\t1\t3\n101148\tM\tMarried\t1967\tH: 150,000 - 169,999\t15000\t< Bach.\t0\t3\tExec.\t6\t0\t4\n101257\tM\tMarried\t1972\tJ: 190,000 - 249,999\t15000\tHS-grad\t1\t3\tProtec.\t3\t0\t5\n100658\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t9+\tCrafts\t2\t1\t3\n100510\tM\tMarried\t1962\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n101816\tM\tMarried\t1959\tB: 30,000 - 49,999\t7000\tBach.\t1\t3\tExec.\t4\t0\t5\n100282\tM\tMarried\t1971\tB: 30,000 - 49,999\t3000\tBach.\t1\t3\tExec.\t4\t0\t5\n101329\tF\tNeverM\t1985\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n101974\tM\tMarried\t1969\tA: Below 30,000\t1500\tHS-grad\t0\t3\tFarming\t7\t0\t4\n103842\tM\tNeverM\t1980\tL: 300,000 and above\t7000\tBach.\t0\t2\tOther\t2\t1\t3\n103614\tM\tNeverM\t1982\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n104000\tF\tDivorc.\t1968\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tCleric.\t4\t0\t4\n101664\tM\tMarried\t1956\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t3\tExec.\t9\t0\t5\n101881\tF\tNeverM\t1976\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tOther\t3\t1\t3\n103055\tM\tMarried\t1970\tL: 300,000 and above\t11000\tAssoc-A\t0\t3\tSales\t5\t0\t4\n103213\tM\tMarried\t1959\tH: 150,000 - 169,999\t10000\tAssoc-A\t1\t3\tProf.\t4\t0\t5\n101013\tF\tNeverM\t1975\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t1\tExec.\t3\t1\t3\n101528\tM\tSepar.\t1951\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t2\tCrafts\t5\t0\t4\n102135\tM\tNeverM\t1976\tL: 300,000 and above\t7000\tHS-grad\t0\t1\tMachine\t3\t1\t3\n102107\tM\tMarried\t1942\tJ: 190,000 - 249,999\t9000\t12th\t0\t3\tCrafts\t6\t0\t4\n101294\tM\tDivorc.\t1962\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tHandler\t6\t0\t4\n104488\tM\tMarried\t1953\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t3\tCleric.\t5\t0\t5\n104149\tM\tMarried\t1966\tL: 300,000 and above\t9000\tMasters\t1\t3\tProf.\t5\t0\t5\n101788\tM\tNeverM\t1985\tC: 50,000 - 69,999\t9000\t10th\t0\t1\tOther\t1\t1\t3\n101181\tM\tMarried\t1972\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tCleric.\t3\t0\t4\n103290\tM\tNeverM\t1954\tB: 30,000 - 49,999\t1500\tMasters\t1\t2\tProf.\t5\t0\t5\n101855\tM\tMarried\t1980\tA: Below 30,000\t1500\t< Bach.\t0\t3\tMachine\t2\t1\t3\n102870\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t3\t0\t4\n100591\tF\tWidowed\t1962\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tSales\t4\t0\t4\n103827\tM\tMarried\t1961\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tHandler\t4\t0\t4\n100695\tM\tNeverM\t1971\tL: 300,000 and above\t15000\tBach.\t0\t1\tProf.\t3\t0\t4\n104020\tM\tNeverM\t1984\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\t?\t1\t1\t3\n102038\tF\tNeverM\t1981\tL: 300,000 and above\t15000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n102444\tM\tMarried\t1970\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tFarming\t6\t0\t4\n103946\tM\tNeverM\t1983\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n100150\tM\tMarried\t1946\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t3\tSales\t7\t0\t4\n102068\tF\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t4-5\tProf.\t5\t0\t5\n104324\tM\tMabsent\t1960\tJ: 190,000 - 249,999\t15000\tProfsc\t1\t2\tProf.\t4\t0\t5\n101741\tM\tMarried\t1969\tL: 300,000 and above\t9000\t< Bach.\t1\t3\tProf.\t4\t0\t5\n100264\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t3\n100523\tF\tMarried\t1962\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t4-5\tTransp.\t4\t0\t5\n101182\tM\tMarried\t1971\tC: 50,000 - 69,999\t5000\tAssoc-V\t0\t3\tTransp.\t3\t0\t4\n101432\tM\tMarried\t1976\tF: 110,000 - 129,999\t9000\t9th\t0\t3\tCrafts\t3\t1\t3\n102522\tF\tNeverM\t1981\tL: 300,000 and above\t7000\tHS-grad\t0\t2\t?\t3\t1\t3\n103330\tM\tNeverM\t1982\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t1\t1\t3\n102797\tF\tDivorc.\t1941\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tOther\t6\t0\t4\n100012\tM\tMarried\t1968\tH: 150,000 - 169,999\t15000\tPhD\t1\t3\tProf.\t4\t0\t5\n103611\tM\tMarried\t1974\tL: 300,000 and above\t9000\tMasters\t0\t3\tProf.\t1\t1\t3\n103149\tM\tMarried\t1963\tL: 300,000 and above\t9000\tPhD\t1\t3\tProf.\t4\t0\t5\n103127\tM\tMarried\t1968\tH: 150,000 - 169,999\t5000\tPhD\t1\t3\tProf.\t4\t0\t5\n101878\tM\tMarried\t1961\tG: 130,000 - 149,999\t3000\tPhD\t1\t3\tProf.\t4\t0\t5\n100605\tM\tMarried\t1974\tL: 300,000 and above\t11000\tMasters\t0\t3\tProf.\t1\t1\t3\n102189\tM\tMarried\t1959\tG: 130,000 - 149,999\t5000\tProfsc\t1\t3\tProf.\t7\t0\t5\n102535\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t1\tProf.\t3\t1\t3\n100034\tM\tMarried\t1963\tL: 300,000 and above\t9000\tPhD\t1\t3\tProf.\t4\t0\t5\n104456\tM\tNeverM\t1969\tC: 50,000 - 69,999\t7000\tBach.\t0\t9+\tExec.\t3\t0\t4\n102959\tM\tMarried\t1962\tF: 110,000 - 129,999\t10000\tMasters\t1\t3\tProf.\t6\t0\t5\n101368\tM\tNeverM\t1969\tC: 50,000 - 69,999\t9000\tBach.\t0\t9+\tExec.\t3\t0\t4\n100344\tM\tMarried\t1967\tH: 150,000 - 169,999\t10000\tBach.\t0\t3\tProf.\t5\t0\t4\n101100\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tAssoc-V\t0\t2\tOther\t4\t0\t4\n102845\tM\tMarried\t1944\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tHandler\t6\t0\t5\n103193\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\t?\t3\t1\t3\n101998\tM\tMarried\t1977\tL: 300,000 and above\t11000\t< Bach.\t0\t3\tSales\t3\t1\t3\n101869\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t1\t1\t3\n104126\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t7000\tAssoc-V\t0\t9+\tOther\t3\t0\t4\n100206\tM\tNeverM\t1977\tH: 150,000 - 169,999\t5000\tHS-grad\t1\t1\tCleric.\t5\t1\t3\n101957\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t6-8\tTransp.\t3\t1\t3\n100733\tM\tMarried\t1935\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tProf.\t7\t0\t5\n101021\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tOther\t3\t0\t4\n103958\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4\n102515\tM\tMarried\t1958\tL: 300,000 and above\t9000\t12th\t0\t3\tMachine\t5\t0\t4\n103455\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tSales\t5\t0\t4\n104220\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t7000\tAssoc-V\t0\t2\tOther\t4\t0\t4\n101835\tF\tNeverM\t1978\tF: 110,000 - 129,999\t1500\tProfsc\t0\t2\tProf.\t1\t1\t3\n100667\tF\tNeverM\t1961\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4\n101542\tF\tNeverM\t1944\tB: 30,000 - 49,999\t1500\tMasters\t1\t2\tProf.\t6\t0\t5\n100899\tM\tSepar.\t1947\tJ: 190,000 - 249,999\t15000\t1st-4th\t0\t2\tExec.\t4\t0\t4\n101555\tM\tMarried\t1962\tB: 30,000 - 49,999\t3000\t7th-8th\t0\t3\tCrafts\t4\t0\t4\n104462\tM\tMarried\t1940\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n101445\tF\tMarried\t1958\tI: 170,000 - 189,999\t1500\tBach.\t0\t4-5\tExec.\t8\t0\t4\n100918\tM\tNeverM\t1973\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCleric.\t3\t0\t4\n103026\tM\tWidowed\t1929\tJ: 190,000 - 249,999\t15000\t9th\t0\t2\tCrafts\t2\t0\t4\n101306\tM\tMarried\t1962\tC: 50,000 - 69,999\t3000\tBach.\t0\t3\tMachine\t4\t0\t4\n102272\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t6-8\tCrafts\t2\t1\t3\n102184\tM\tMarried\t1952\tF: 110,000 - 129,999\t3000\tMasters\t1\t3\tSales\t5\t0\t5\n103932\tM\tNeverM\t1983\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t1\tTransp.\t2\t1\t3\n102759\tF\tDivorc.\t1967\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t2\tTransp.\t4\t0\t4\n100860\tF\tMarried\t1970\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t4-5\tCrafts\t5\t0\t4\n103128\tM\tMarried\t1961\tD: 70,000 - 89,999\t5000\tHS-grad\t0\t3\tTransp.\t5\t0\t4\n100701\tM\tMarried\t1956\tB: 30,000 - 49,999\t3000\tBach.\t1\t3\tExec.\t7\t0\t5\n101504\tM\tMarried\t1958\tB: 30,000 - 49,999\t1500\tBach.\t1\t3\tExec.\t5\t0\t5\n103449\tM\tMarried\t1975\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t3\tMachine\t3\t1\t3\n101320\tM\tNeverM\t1978\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t2\tExec.\t3\t1\t3\n104248\tF\tNeverM\t1973\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t1\tCleric.\t3\t0\t4\n104048\tM\tNeverM\t1968\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tSales\t3\t0\t4\n103135\tF\tDivorc.\t1946\tJ: 190,000 - 249,999\t9000\tMasters\t0\t9+\tOther\t6\t0\t4\n102182\tM\tMarried\t1952\tG: 130,000 - 149,999\t10000\t< Bach.\t1\t3\tCleric.\t5\t0\t5\n104319\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4\n103889\tM\tMarried\t1971\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tProtec.\t4\t0\t5\n102082\tM\tMarried\t1951\tA: Below 30,000\t1500\t10th\t1\t3\tCrafts\t7\t0\t5\n103050\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t11000\t11th\t0\t1\tSales\t0\t1\t3\n102776\tF\tDivorc.\t1949\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tCleric.\t5\t0\t4\n100278\tM\tMarried\t1963\tD: 70,000 - 89,999\t3000\tAssoc-V\t1\t3\tMachine\t4\t0\t5\n101709\tM\tNeverM\t1974\tK: 250,000 - 299,999\t9000\tBach.\t0\t9+\tSales\t3\t1\t3\n100323\tM\tDivorc.\t1954\tH: 150,000 - 169,999\t10000\t< Bach.\t1\t2\tProf.\t5\t0\t5\n102511\tM\tMarried\t1975\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t3\tCrafts\t3\t1\t3\n102984\tF\tSepar.\t1973\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t9+\tOther\t3\t0\t4\n104196\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t9+\tExec.\t4\t0\t4\n104005\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t3\n104181\tF\tDivorc.\t1963\tI: 170,000 - 189,999\t1500\tAssoc-V\t0\t2\tProf.\t2\t0\t4\n103284\tF\tNeverM\t1984\tA: Below 30,000\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n103766\tF\tDivorc.\t1960\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t9+\tCleric.\t4\t0\t4\n101301\tM\tMarried\t1949\tA: Below 30,000\t1500\tHS-grad\t0\t3\tSales\t5\t0\t4\n102171\tF\tNeverM\t1978\tC: 50,000 - 69,999\t11000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n102514\tF\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tMachine\t4\t0\t4\n102315\tF\tNeverM\t1980\tJ: 190,000 - 249,999\t15000\tBach.\t0\t1\tSales\t3\t1\t3\n100709\tM\tMarried\t1959\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t4\t0\t5\n102168\tM\tNeverM\t1976\tL: 300,000 and above\t9000\tHS-grad\t0\t1\tTransp.\t3\t1\t3\n103039\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t3\n103494\tF\tWidowed\t1941\tA: Below 30,000\t1500\tHS-grad\t0\t2\tSales\t3\t0\t4\n103345\tM\tDivorc.\t1949\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t2\tTransp.\t5\t0\t4\n100433\tF\tWidowed\t1938\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tCleric.\t7\t0\t4\n100864\tF\tNeverM\t1986\tG: 130,000 - 149,999\t11000\t10th\t0\t1\tOther\t0\t1\t3\n102503\tM\tNeverM\t1969\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t1\tCleric.\t3\t0\t4\n102071\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t0\t3\tExec.\t6\t0\t4\n101747\tM\tMarried\t1950\tJ: 190,000 - 249,999\t10000\t< Bach.\t1\t3\tProtec.\t5\t0\t5\n101763\tM\tMarried\t1953\tG: 130,000 - 149,999\t10000\tMasters\t1\t3\tProf.\t5\t0\t5\n103144\tM\tMarried\t1962\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tTechSup\t5\t0\t5\n101748\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tProtec.\t4\t0\t4\n104019\tM\tMarried\t1959\tB: 30,000 - 49,999\t3000\t< Bach.\t1\t3\tTechSup\t2\t0\t5\n102008\tM\tNeverM\t1980\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t2\tProf.\t3\t1\t3\n104136\tM\tMarried\t1968\tI: 170,000 - 189,999\t3000\tMasters\t1\t3\tProf.\t4\t0\t5\n104228\tF\tDivorc.\t1977\tE: 90,000 - 109,999\t10000\tAssoc-V\t0\t2\tCleric.\t4\t1\t3\n102823\tM\tMarried\t1965\tF: 110,000 - 129,999\t5000\t< Bach.\t1\t3\tTransp.\t4\t0\t5\n102210\tF\tMarried\t1950\tK: 250,000 - 299,999\t11000\tMasters\t1\t4-5\tCleric.\t5\t0\t5\n102255\tF\tNeverM\t1974\tA: Below 30,000\t1500\tHS-grad\t0\t2\tOther\t3\t1\t3\n101331\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tCleric.\t3\t1\t3\n104276\tM\tMarried\t1955\tK: 250,000 - 299,999\t11000\t< Bach.\t1\t3\tCrafts\t6\t0\t5\n104087\tM\tMarried\t1938\tG: 130,000 - 149,999\t5000\tBach.\t1\t3\tSales\t10\t0\t5\n101259\tF\tNeverM\t1962\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tOther\t4\t0\t4\n103190\tM\tMarried\t1946\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t3\tSales\t7\t0\t4\n100170\tF\tWidowed\t1943\tF: 110,000 - 129,999\t3000\t7th-8th\t0\t9+\t?\t3\t0\t4\n101548\tF\tNeverM\t1977\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t2\tCleric.\t3\t1\t3\n101576\tF\tNeverM\t1982\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t1\tOther\t2\t1\t3\n102857\tF\tSepar.\t1962\tD: 70,000 - 89,999\t3000\tBach.\t0\t9+\tProf.\t4\t0\t4\n103553\tF\tNeverM\t1982\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t2\tCleric.\t1\t1\t3\n100857\tM\tMarried\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t3\t1\t3\n102545\tF\tNeverM\t1982\tL: 300,000 and above\t9000\tAssoc-V\t0\t2\tCleric.\t2\t1\t3\n101499\tM\tMarried\t1947\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t10\t0\t5\n103796\tF\tNeverM\t1936\tJ: 190,000 - 249,999\t11000\tPhD\t1\t2\tProf.\t8\t0\t5\n100964\tF\tNeverM\t1978\tL: 300,000 and above\t9000\tBach.\t0\t2\tProf.\t2\t1\t3\n102048\tF\tDivorc.\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tMachine\t3\t0\t4\n103838\tM\tMarried\t1932\tG: 130,000 - 149,999\t3000\tMasters\t1\t3\tSales\t7\t0\t5\n104150\tM\tMarried\t1964\tB: 30,000 - 49,999\t5000\tAssoc-A\t0\t3\tMachine\t4\t0\t4\n101809\tM\tDivorc.\t1962\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t2\tCrafts\t4\t0\t4\n101407\tM\tDivorc.\t1971\tI: 170,000 - 189,999\t1500\tBach.\t1\t6-8\tProf.\t3\t0\t5\n101642\tF\tMarried\t1971\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t4-5\tTechSup\t3\t0\t4\n102257\tM\tMarried\t1956\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tSales\t5\t0\t5\n102379\tF\tMabsent\t1958\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tCleric.\t3\t0\t4\n103010\tM\tMarried\t1932\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t3\tTransp.\t7\t0\t4\n101745\tM\tMarried\t1970\tE: 90,000 - 109,999\t3000\t12th\t0\t3\tProtec.\t3\t0\t4\n101637\tM\tMarried\t1971\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tTechSup\t3\t0\t4\n103045\tM\tMarried\t1954\tC: 50,000 - 69,999\t9000\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n102014\tM\tMarried\t1968\tE: 90,000 - 109,999\t10000\t7th-8th\t1\t3\tMachine\t4\t0\t5\n104263\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t2\tCleric.\t3\t0\t4\n101539\tF\tWidowed\t1934\tI: 170,000 - 189,999\t5000\tAssoc-A\t0\t2\t?\t2\t0\t4\n100758\tM\tMarried\t1963\tF: 110,000 - 129,999\t7000\tAssoc-V\t1\t3\tCrafts\t4\t0\t5\n100443\tM\tMarried\t1950\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCrafts\t7\t0\t5\n103642\tM\tNeverM\t1974\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t2\tFarming\t4\t1\t3\n101673\tF\tMarried\t1956\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t4-5\tOther\t9\t0\t4\n100554\tM\tMarried\t1958\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tExec.\t6\t0\t4\n101686\tM\tMarried\t1956\tJ: 190,000 - 249,999\t11000\tMasters\t1\t3\tProf.\t5\t0\t5\n100185\tM\tMarried\t1953\tJ: 190,000 - 249,999\t7000\tBach.\t1\t3\tSales\t8\t0\t5\n102492\tM\tMarried\t1966\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tCrafts\t6\t0\t4\n101487\tM\tMarried\t1975\tL: 300,000 and above\t7000\tHS-grad\t0\t3\tCrafts\t3\t1\t3\n100340\tM\tNeverM\t1974\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t2\tFarming\t4\t1\t3\n104412\tM\tMarried\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tCrafts\t3\t1\t3\n101887\tF\tWidowed\t1935\tK: 250,000 - 299,999\t15000\t7th-8th\t0\t2\t?\t7\t0\t4\n100736\tM\tNeverM\t1973\tI: 170,000 - 189,999\t9000\tBach.\t0\t1\tProf.\t3\t0\t4\n103684\tM\tMabsent\t1926\tD: 70,000 - 89,999\t5000\t7th-8th\t1\t2\tCleric.\t4\t0\t5\n104165\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tSales\t2\t1\t3\n100081\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\tBach.\t1\t3\tExec.\t7\t0\t5\n103940\tM\tMarried\t1943\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n103462\tF\tNeverM\t1961\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4\n104484\tM\tMarried\t1966\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4\n103225\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t8\t0\t5\n104446\tM\tNeverM\t1985\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101689\tM\tMarried\t1959\tF: 110,000 - 129,999\t5000\tBach.\t1\t3\tSales\t6\t0\t5\n101795\tM\tMabsent\t1970\tI: 170,000 - 189,999\t9000\t< Bach.\t0\t2\tCrafts\t3\t0\t4\n101668\tM\tNeverM\t1969\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tHandler\t4\t0\t4\n102203\tM\tMarried\t1942\tF: 110,000 - 129,999\t5000\tMasters\t0\t3\tCrafts\t0\t0\t4\n103650\tM\tNeverM\t1977\tG: 130,000 - 149,999\t7000\tBach.\t0\t2\tProf.\t3\t1\t3\n101396\tM\tMarried\t1966\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4\n103543\tM\tMarried\t1935\tJ: 190,000 - 249,999\t9000\tMasters\t1\t3\tProf.\t7\t0\t5\n102325\tM\tMarried\t1973\tI: 170,000 - 189,999\t9000\tBach.\t0\t3\tSales\t5\t0\t4\n100994\tM\tDivorc.\t1961\tI: 170,000 - 189,999\t10000\tBach.\t0\t2\tProf.\t5\t0\t4\n104370\tF\tMarried\t1958\tI: 170,000 - 189,999\t3000\tBach.\t0\t4-5\tExec.\t8\t0\t4\n102906\tM\tMarried\t1965\tL: 300,000 and above\t15000\tHS-grad\t0\t3\tMachine\t7\t0\t4\n104135\tM\tDivorc.\t1943\tG: 130,000 - 149,999\t10000\tHS-grad\t0\t2\tCrafts\t8\t0\t4\n101867\tM\tNeverM\t1973\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t9+\tCrafts\t3\t0\t4\n103546\tM\tNeverM\t1973\tI: 170,000 - 189,999\t3000\tBach.\t0\t1\tProf.\t3\t0\t4\n102342\tF\tDivorc.\t1957\tI: 170,000 - 189,999\t3000\tMasters\t0\t2\tProf.\t7\t0\t4\n101112\tM\tMarried\t1951\tI: 170,000 - 189,999\t11000\t10th\t0\t3\tMachine\t5\t0\t4\n102438\tM\tMarried\t1961\tL: 300,000 and above\t7000\tBach.\t1\t3\tProf.\t4\t0\t5\n100432\tM\tNeverM\t1978\tI: 170,000 - 189,999\t10000\tBach.\t0\t1\tProf.\t3\t1\t3\n100003\tM\tNeverM\t1969\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t2\tSales\t6\t0\t4\n103793\tF\tDivorc.\t1968\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n102822\tM\tNeverM\t1984\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tCrafts\t2\t1\t3\n103329\tM\tDivorc.\t1949\tH: 150,000 - 169,999\t7000\tBach.\t0\t2\tExec.\t7\t0\t4\n101621\tM\tMarried\t1957\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tProtec.\t5\t0\t5\n102031\tM\tMarried\t1969\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t3\tTransp.\t4\t0\t4\n102200\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n102725\tM\tMarried\t1974\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t3\tMachine\t3\t1\t3\n104270\tM\tNeverM\t1983\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n100925\tM\tNeverM\t1983\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101658\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tSales\t3\t1\t3\n101375\tM\tMarried\t1961\tB: 30,000 - 49,999\t3000\tBach.\t0\t3\tSales\t6\t0\t4\n100848\tF\tDivorc.\t1945\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t2\tCleric.\t9\t0\t5\n102164\tF\tNeverM\t1969\tL: 300,000 and above\t9000\tHS-grad\t0\t9+\tExec.\t3\t0\t4\n101595\tM\tMarried\t1977\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tOther\t3\t1\t5\n100691\tM\tMarried\t1967\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t3\tHandler\t4\t0\t4\n100355\tM\tMarried\t1961\tE: 90,000 - 109,999\t9000\tBach.\t1\t3\tProf.\t6\t0\t5\n101628\tM\tNeverM\t1983\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n101262\tF\tNeverM\t1981\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t2\t?\t2\t1\t3\n101447\tF\tDivorc.\t1956\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t2\tSales\t5\t0\t4\n101398\tM\tNeverM\t1944\tL: 300,000 and above\t11000\tBach.\t0\t2\tCrafts\t7\t0\t4\n103848\tM\tMarried\t1945\tI: 170,000 - 189,999\t11000\t< Bach.\t1\t3\tCleric.\t6\t0\t5\n101381\tF\tNeverM\t1983\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t3\n100507\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4\n100171\tF\tMarried\t1966\tC: 50,000 - 69,999\t7000\tHS-grad\t1\t4-5\tCleric.\t4\t0\t5\n100922\tM\tNeverM\t1969\tL: 300,000 and above\t15000\t< Bach.\t1\t2\tProf.\t4\t0\t5\n104041\tM\tMarried\t1956\tL: 300,000 and above\t9000\tBach.\t0\t3\tCrafts\t5\t0\t4\n100396\tF\tDivorc.\t1956\tG: 130,000 - 149,999\t15000\t< Bach.\t0\t2\tCleric.\t7\t0\t4\n103875\tM\tSepar.\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n102141\tF\tDivorc.\t1955\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t2\t?\t5\t0\t5\n103022\tF\tMarried\t1966\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t4-5\tCleric.\t4\t0\t4\n100200\tM\tNeverM\t1983\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101783\tM\tMarried\t1980\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tMachine\t3\t1\t3\n101980\tF\tDivorc.\t1941\tE: 90,000 - 109,999\t10000\t10th\t0\t9+\tProf.\t6\t0\t4\n100472\tM\tMarried\t1973\tB: 30,000 - 49,999\t3000\tBach.\t0\t3\tProf.\t6\t0\t4\n100410\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t10th\t0\t2\tTransp.\t4\t1\t3\n100182\tM\tMarried\t1972\tL: 300,000 and above\t15000\tHS-grad\t0\t3\tMachine\t3\t0\t4\n101268\tF\tNeverM\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tOther\t2\t1\t3\n103453\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t9+\tCrafts\t2\t1\t3\n102880\tM\tMarried\t1969\tI: 170,000 - 189,999\t1500\t< Bach.\t1\t3\tMachine\t4\t0\t5\n100385\tM\tMarried\t1980\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t6-8\tCleric.\t2\t1\t3\n103850\tF\tWidowed\t1961\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tProf.\t4\t0\t4\n101123\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t0\t3\tSales\t7\t0\t4\n103011\tM\tMarried\t1958\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t3\tSales\t7\t0\t4\n100979\tM\tMarried\t1979\tL: 300,000 and above\t9000\t< Bach.\t0\t3\tProtec.\t2\t1\t3\n103109\tM\tNeverM\t1982\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t2\tCleric.\t3\t1\t3\n103833\tM\tMarried\t1963\tE: 90,000 - 109,999\t9000\t< Bach.\t1\t3\tTechSup\t5\t0\t5\n101909\tF\tNeverM\t1959\tC: 50,000 - 69,999\t1500\tMasters\t0\t2\tProf.\t7\t0\t4\n103565\tM\tNeverM\t1977\tK: 250,000 - 299,999\t15000\tBach.\t0\t2\tProf.\t3\t1\t3\n104400\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t10000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4\n103864\tF\tSepar.\t1971\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tProf.\t4\t0\t5\n103396\tF\tMarried\t1963\tL: 300,000 and above\t15000\tAssoc-V\t0\t4-5\tProf.\t4\t0\t4\n102625\tM\tMarried\t1968\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tMachine\t4\t0\t4\n104071\tM\tMarried\t1961\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tCleric.\t4\t0\t4\n101743\tM\tMarried\t1957\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t3\tExec.\t6\t0\t5\n101454\tM\tMarried\t1934\tB: 30,000 - 49,999\t3000\t< Bach.\t1\t3\tExec.\t9\t0\t5\n100807\tF\tDivorc.\t1965\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tProf.\t4\t0\t4\n104272\tF\tNeverM\t1956\tA: Below 30,000\t1500\tAssoc-V\t0\t2\tOther\t7\t0\t4\n100108\tM\tMarried\t1955\tL: 300,000 and above\t15000\tMasters\t0\t3\tOther\t5\t0\t4\n101731\tM\tMarried\t1948\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t3\tSales\t7\t0\t4\n104240\tF\tNeverM\t1977\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\t?\t3\t1\t3\n102553\tM\tMarried\t1953\tI: 170,000 - 189,999\t10000\tAssoc-V\t1\t3\tTechSup\t5\t0\t5\n103712\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t15000\t10th\t0\t2\tTransp.\t4\t1\t3\n103311\tM\tMarried\t1966\tE: 90,000 - 109,999\t10000\t10th\t0\t3\tTransp.\t6\t0\t4\n100840\tM\tMarried\t1955\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t3\tCrafts\t5\t0\t5\n104422\tF\tDivorc.\t1969\tI: 170,000 - 189,999\t1500\tAssoc-A\t0\t9+\tSales\t4\t0\t4\n100084\tF\tWidowed\t1967\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t9+\tHandler\t3\t0\t4\n100520\tM\tMarried\t1949\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t3\tTransp.\t4\t0\t4\n103331\tF\tDivorc.\t1959\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tHandler\t6\t0\t4\n103945\tM\tMarried\t1966\tB: 30,000 - 49,999\t5000\tHS-grad\t0\t3\tFarming\t6\t0\t4\n102541\tM\tMarried\t1968\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n103933\tF\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tOther\t2\t1\t3\n102518\tM\tMarried\t1958\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t3\tExec.\t5\t0\t4\n104301\tM\tMarried\t1953\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t3\tTransp.\t6\t0\t5\n102432\tF\tDivorc.\t1970\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t9+\tCleric.\t3\t0\t4\n101351\tM\tMarried\t1929\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4\n100251\tM\tWidowed\t1929\tJ: 190,000 - 249,999\t15000\t9th\t0\t2\tCrafts\t2\t0\t4\n101374\tM\tMarried\t1940\tD: 70,000 - 89,999\t3000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n100660\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tSales\t5\t0\t4\n103361\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\tBach.\t1\t3\tExec.\t7\t0\t5\n102309\tM\tMarried\t1961\tI: 170,000 - 189,999\t9000\tMasters\t1\t3\tSales\t5\t0\t5\n101209\tF\tSepar.\t1957\tF: 110,000 - 129,999\t5000\tHS-grad\t0\t9+\tCrafts\t5\t0\t4\n100713\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t5\n102292\tM\tMabsent\t1973\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tCrafts\t3\t0\t4\n103805\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t3\n102550\tF\tSepar.\t1962\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4\n100898\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4\n104099\tM\tDivorc.\t1961\tI: 170,000 - 189,999\t5000\tBach.\t0\t2\tProf.\t5\t0\t4\n100662\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4\n102726\tF\tNeverM\t1982\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t1\tOther\t2\t1\t3\n103760\tM\tMarried\t1950\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCrafts\t7\t0\t5\n103297\tF\tMarried\t1983\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tProf.\t2\t1\t3\n102179\tM\tMarried\t1959\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t3\tHandler\t4\t0\t4\n104433\tM\tMarried\t1955\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tCleric.\t6\t0\t5\n102302\tF\tWidowed\t1951\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\tOther\t5\t0\t4\n103646\tM\tMarried\t1967\tH: 150,000 - 169,999\t3000\tBach.\t0\t3\tProf.\t5\t0\t4\n102385\tM\tMarried\t1960\tL: 300,000 and above\t9000\tBach.\t1\t3\tProf.\t4\t0\t5\n101345\tM\tMarried\t1955\tH: 150,000 - 169,999\t1500\tBach.\t1\t3\tCleric.\t6\t0\t5\n103457\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4\n100784\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t3\n103161\tM\tNeverM\t1977\tH: 150,000 - 169,999\t15000\tHS-grad\t1\t1\tCleric.\t5\t1\t3\n101806\tF\tDivorc.\t1966\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t2\t?\t4\t0\t4\n101358\tM\tNeverM\t1985\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101960\tM\tSepar.\t1971\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tExec.\t3\t0\t4\n100653\tM\tMarried\t1962\tI: 170,000 - 189,999\t1500\tHS-grad\t1\t3\tTechSup\t5\t0\t5\n103523\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t5\n102524\tM\tNeverM\t1974\tB: 30,000 - 49,999\t3000\t10th\t0\t2\tCrafts\t3\t1\t3\n101060\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tSales\t2\t1\t3\n104231\tM\tMarried\t1962\tC: 50,000 - 69,999\t3000\tBach.\t0\t3\tMachine\t4\t0\t4\n103959\tM\tSepar.\t1947\tJ: 190,000 - 249,999\t9000\t1st-4th\t0\t2\tExec.\t4\t0\t4\n102175\tM\tDivorc.\t1957\tI: 170,000 - 189,999\t11000\tBach.\t0\t2\tMachine\t5\t0\t4\n103915\tM\tMarried\t1971\tJ: 190,000 - 249,999\t7000\tProfsc\t0\t3\tSales\t3\t0\t4\n102397\tM\tMarried\t1965\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tExec.\t4\t0\t5\n100382\tM\tMabsent\t1926\tD: 70,000 - 89,999\t1500\t7th-8th\t1\t2\tCleric.\t4\t0\t5\n102591\tF\tNeverM\t1982\tL: 300,000 and above\t11000\tHS-grad\t0\t1\t?\t1\t1\t3\n100488\tM\tNeverM\t1957\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tTransp.\t6\t0\t4\n100874\tF\tMarried\t1950\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t4-5\tExec.\t5\t0\t5\n103897\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101334\tF\tNeverM\t1976\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t2\tExec.\t3\t1\t3\n103667\tF\tDivorc.\t1967\tJ: 190,000 - 249,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4\n101908\tM\tNeverM\t1984\tL: 300,000 and above\t15000\tHS-grad\t0\t1\tCrafts\t2\t1\t3\n103153\tF\tNeverM\t1986\tG: 130,000 - 149,999\t3000\t11th\t0\t1\t?\t1\t1\t3\n103640\tF\tWidowed\t1945\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t2\tSales\t6\t0\t5\n101536\tM\tMarried\t1944\tE: 90,000 - 109,999\t7000\t10th\t1\t3\tCrafts\t6\t0\t5\n102898\tM\tMarried\t1962\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tExec.\t5\t0\t4\n103798\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t3\tTransp.\t5\t0\t5\n101350\tM\tDivorc.\t1973\tA: Below 30,000\t1500\tBach.\t0\t2\tOther\t3\t0\t4\n100132\tF\tWidowed\t1926\tI: 170,000 - 189,999\t3000\t< Bach.\t0\t2\tHouse-s\t4\t0\t4\n100516\tM\tMarried\t1966\tE: 90,000 - 109,999\t10000\t10th\t0\t3\tTransp.\t6\t0\t4\n103626\tM\tMarried\t1951\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tExec.\t5\t0\t4\n101601\tM\tMarried\t1947\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t3\tCrafts\t6\t0\t4\n103076\tM\tMarried\t1963\tI: 170,000 - 189,999\t5000\tHS-grad\t0\t3\tOther\t4\t0\t4\n103474\tM\tMarried\t1924\tH: 150,000 - 169,999\t5000\tHS-grad\t1\t3\t?\t8\t0\t5\n101803\tM\tMarried\t1970\tB: 30,000 - 49,999\t1500\t11th\t0\t3\tExec.\t6\t0\t4\n101484\tM\tNeverM\t1972\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t1\tCrafts\t2\t0\t4\n100788\tF\tNeverM\t1974\tL: 300,000 and above\t9000\tBach.\t0\t1\tSales\t3\t1\t3\n101039\tM\tMarried\t1934\tA: Below 30,000\t1500\tHS-grad\t1\t3\t?\t10\t0\t5\n101697\tM\tMarried\t1959\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5\n102416\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tProtec.\t4\t0\t5\n101939\tM\tDivorc.\t1965\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t2\tMachine\t5\t0\t4\n104155\tM\tNeverM\t1986\tL: 300,000 and above\t9000\t10th\t0\t1\tOther\t0\t1\t3\n102195\tM\tMarried\t1962\tG: 130,000 - 149,999\t15000\tHS-grad\t0\t3\tMachine\t3\t0\t4\n101494\tM\tMarried\t1965\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tExec.\t5\t0\t5\n101165\tM\tMarried\t1966\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n101781\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\tMasters\t1\t3\tExec.\t5\t0\t5\n101629\tM\tMarried\t1963\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tSales\t6\t0\t5\n103910\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t3\n102750\tM\tMarried\t1971\tB: 30,000 - 49,999\t1500\t7th-8th\t0\t3\tOther\t3\t0\t4\n101703\tF\tDivorc.\t1976\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tCleric.\t3\t1\t3\n102626\tF\tMarried\t1977\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t4-5\tMachine\t3\t1\t3\n103101\tF\tNeverM\t1973\tG: 130,000 - 149,999\t3000\tBach.\t0\t2\tSales\t4\t0\t4\n101959\tM\tNeverM\t1941\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4\n103701\tF\tDivorc.\t1958\tF: 110,000 - 129,999\t9000\tMasters\t0\t9+\tProf.\t6\t0\t4\n101807\tF\tMarried\t1968\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t4-5\tCleric.\t3\t0\t4\n103380\tF\tMarried\t1959\tJ: 190,000 - 249,999\t15000\tMasters\t1\t4-5\tProf.\t4\t0\t5\n100147\tM\tMarried\t1925\tA: Below 30,000\t1500\tHS-grad\t0\t3\t?\t6\t0\t4\n102018\tM\tDivorc.\t1970\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tSales\t3\t0\t4\n101094\tF\tDivorc.\t1974\tA: Below 30,000\t1500\t< Bach.\t0\t9+\t?\t1\t1\t3\n101682\tM\tMarried\t1969\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tHandler\t3\t0\t4\n102972\tM\tMarried\t1963\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tHandler\t4\t0\t4\n102566\tF\tNeverM\t1976\tJ: 190,000 - 249,999\t7000\tBach.\t0\t1\tTechSup\t3\t1\t3\n101227\tF\tNeverM\t1955\tD: 70,000 - 89,999\t10000\t11th\t0\t2\tOther\t4\t0\t4\n104268\tM\tMarried\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n104097\tM\tMabsent\t1981\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tSales\t3\t1\t3\n100082\tM\tNeverM\t1975\tL: 300,000 and above\t15000\tBach.\t0\t2\tCleric.\t3\t1\t3\n102775\tM\tNeverM\t1978\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t1\tMachine\t3\t1\t3\n103618\tM\tMarried\t1974\tH: 150,000 - 169,999\t1500\tAssoc-A\t1\t3\tSales\t4\t1\t5\n103485\tF\tNeverM\t1986\tG: 130,000 - 149,999\t15000\t11th\t0\t1\tCleric.\t0\t1\t3\n100330\tF\tMarried\t1951\tE: 90,000 - 109,999\t5000\tMasters\t1\t4-5\t?\t5\t0\t5\n100631\tF\tDivorc.\t1955\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t9+\t?\t4\t0\t4\n102297\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tCrafts\t2\t1\t3\n100808\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t9+\tMachine\t3\t0\t4\n103537\tF\tMarried\t1969\tH: 150,000 - 169,999\t3000\t< Bach.\t1\t4-5\t?\t1\t0\t5\n100677\tM\tMarried\t1965\tE: 90,000 - 109,999\t9000\tBach.\t1\t3\tSales\t4\t0\t5\n103178\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t2\tOther\t3\t1\t3\n101894\tM\tMarried\t1961\tA: Below 30,000\t1500\tBach.\t0\t3\tSales\t5\t0\t4\n101762\tF\tNeverM\t1986\tI: 170,000 - 189,999\t5000\t10th\t0\t1\tProtec.\t2\t1\t3\n100727\tF\tMarried\t1969\tH: 150,000 - 169,999\t7000\t< Bach.\t1\t4-5\t?\t1\t0\t5\n104402\tM\tDivorc.\t1963\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tCrafts\t4\t0\t4\n101405\tM\tNeverM\t1976\tG: 130,000 - 149,999\t10000\tBach.\t0\t1\tTechSup\t3\t1\t3\n103067\tF\tDivorc.\t1946\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tCleric.\t6\t0\t4\n103426\tF\tDivorc.\t1955\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\t?\t4\t0\t4\n100269\tF\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tCleric.\t5\t0\t4\n102232\tM\tMarried\t1955\tF: 110,000 - 129,999\t7000\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n102151\tF\tNeverM\t1935\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t2\tSales\t7\t0\t4\n102482\tM\tMarried\t1950\tE: 90,000 - 109,999\t3000\t11th\t0\t3\tCrafts\t5\t0\t4\n100549\tM\tMarried\t1977\tG: 130,000 - 149,999\t10000\tBach.\t0\t3\tExec.\t1\t1\t3\n104183\tM\tMarried\t1948\tJ: 190,000 - 249,999\t15000\tBach.\t1\t3\tExec.\t6\t0\t5\n104082\tM\tNeverM\t1979\tI: 170,000 - 189,999\t10000\tBach.\t0\t2\tProf.\t1\t1\t3\n103681\tF\tWidowed\t1961\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tTransp.\t4\t0\t4\n100906\tM\tMarried\t1961\tI: 170,000 - 189,999\t5000\tMasters\t0\t3\tProf.\t4\t0\t4\n100624\tF\tDivorc.\t1971\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t9+\tOther\t3\t0\t4\n100429\tM\tNeverM\t1963\tF: 110,000 - 129,999\t3000\tAssoc-V\t0\t2\tProf.\t4\t0\t4\n103114\tF\tMarried\t1964\tH: 150,000 - 169,999\t1500\tMasters\t0\t4-5\t?\t4\t0\t4\n103916\tM\tMarried\t1939\tH: 150,000 - 169,999\t5000\t1st-4th\t0\t3\tTransp.\t8\t0\t4\n103874\tF\tSepar.\t1957\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t9+\tCrafts\t5\t0\t4\n103234\tF\tNeverM\t1981\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n101251\tM\tMarried\t1939\tH: 150,000 - 169,999\t3000\t1st-4th\t0\t3\tTransp.\t8\t0\t4\n101250\tM\tMarried\t1971\tJ: 190,000 - 249,999\t11000\tProfsc\t0\t3\tSales\t3\t0\t4\n103568\tM\tMarried\t1963\tF: 110,000 - 129,999\t10000\tAssoc-V\t1\t3\tCrafts\t4\t0\t5\n100194\tF\tNeverM\t1981\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n101030\tM\tDivorc.\t1943\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t2\tCrafts\t8\t0\t4\n100348\tM\tNeverM\t1977\tG: 130,000 - 149,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t3\n103786\tM\tMarried\t1958\tJ: 190,000 - 249,999\t10000\tBach.\t0\t3\tExec.\t6\t0\t4\n100153\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t1\t?\t3\t1\t3\n101275\tM\tMarried\t1943\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n100324\tF\tMarried\t1964\tH: 150,000 - 169,999\t7000\tMasters\t0\t4-5\t?\t4\t0\t4\n102582\tM\tNeverM\t1977\tL: 300,000 and above\t11000\t5th-6th\t0\t2\tTransp.\t3\t1\t3\n102670\tM\tMarried\t1956\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tTransp.\t6\t0\t5\n103219\tM\tMarried\t1951\tE: 90,000 - 109,999\t7000\tMasters\t1\t3\tExec.\t7\t0\t5\n100179\tM\tMarried\t1951\tE: 90,000 - 109,999\t5000\tMasters\t1\t3\tExec.\t7\t0\t5\n102729\tF\tMarried\t1956\tI: 170,000 - 189,999\t1500\tAssoc-A\t1\t4-5\tCleric.\t5\t0\t5\n100547\tF\tMarried\t1983\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tProf.\t2\t1\t3\n103448\tM\tMarried\t1962\tI: 170,000 - 189,999\t1500\tHS-grad\t1\t3\tTechSup\t5\t0\t5\n103476\tM\tMarried\t1933\tG: 130,000 - 149,999\t7000\tBach.\t0\t3\t?\t7\t0\t4\n102624\tM\tMarried\t1971\tL: 300,000 and above\t11000\tBach.\t1\t3\tExec.\t4\t0\t5\n103693\tM\tNeverM\t1976\tL: 300,000 and above\t15000\tMasters\t0\t2\tProf.\t1\t1\t3\n101639\tF\tDivorc.\t1970\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t2\t?\t3\t0\t4\n102847\tM\tMarried\t1962\tI: 170,000 - 189,999\t9000\t7th-8th\t0\t3\tCrafts\t4\t0\t4\n100945\tM\tNeverM\t1977\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t3\n100281\tM\tMarried\t1958\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tExec.\t6\t0\t5\n104290\tM\tNeverM\t1977\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t3\n102105\tM\tMarried\t1941\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t3\t?\t3\t0\t4\n100681\tM\tMarried\t1933\tG: 130,000 - 149,999\t5000\tBach.\t0\t3\t?\t7\t0\t4\n103071\tM\tMarried\t1958\tH: 150,000 - 169,999\t15000\tBach.\t1\t3\tExec.\t6\t0\t5\n100391\tM\tNeverM\t1976\tL: 300,000 and above\t7000\tMasters\t0\t2\tProf.\t1\t1\t3\n103533\tF\tDivorc.\t1938\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tCleric.\t10\t0\t4\n102278\tF\tMarried\t1972\tI: 170,000 - 189,999\t1500\tBach.\t0\t4-5\t?\t2\t0\t4\n103316\tM\tNeverM\t1963\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n101738\tF\tDivorc.\t1962\tD: 70,000 - 89,999\t5000\t12th\t0\t2\t?\t4\t0\t4\n101951\tM\tNeverM\t1965\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n101805\tM\tMarried\t1967\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t3\tExec.\t4\t0\t4\n100600\tM\tMarried\t1978\tK: 250,000 - 299,999\t9000\t11th\t0\t3\tTransp.\t3\t1\t3\n101822\tM\tMarried\t1956\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tExec.\t5\t0\t5\n102245\tF\tDivorc.\t1966\tE: 90,000 - 109,999\t1500\tAssoc-A\t0\t9+\tProf.\t4\t0\t4\n101367\tM\tMarried\t1973\tH: 150,000 - 169,999\t7000\tAssoc-V\t1\t3\tProf.\t5\t0\t5\n104401\tF\tNeverM\t1980\tB: 30,000 - 49,999\t7000\t< Bach.\t0\t2\tSales\t2\t1\t3\n100884\tM\tMarried\t1959\tB: 30,000 - 49,999\t1500\t< Bach.\t1\t3\tTechSup\t2\t0\t5\n102165\tF\tMarried\t1958\tD: 70,000 - 89,999\t15000\t< Bach.\t1\t4-5\tCleric.\t5\t0\t5\n102567\tM\tNeverM\t1980\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n102348\tF\tMarried\t1953\tB: 30,000 - 49,999\t7000\tBach.\t1\t4-5\tExec.\t5\t0\t5\n102354\tF\tNeverM\t1978\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t3\n103134\tM\tMarried\t1971\tE: 90,000 - 109,999\t1500\tAssoc-V\t1\t3\tTransp.\t4\t0\t5\n103179\tM\tMarried\t1951\tA: Below 30,000\t1500\tBach.\t1\t3\tProtec.\t8\t0\t5\n100989\tM\tMarried\t1970\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tTransp.\t3\t0\t5\n102451\tM\tWidowed\t1925\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t2\tSales\t10\t0\t5\n100803\tM\tMarried\t1946\tK: 250,000 - 299,999\t11000\t11th\t0\t3\tOther\t7\t0\t4\n104453\tF\tDivorc.\t1954\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t2\tExec.\t5\t0\t4\n101073\tM\tMarried\t1966\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t3\tOther\t4\t0\t4\n101167\tM\tMarried\t1968\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n102748\tM\tMarried\t1975\tJ: 190,000 - 249,999\t15000\tBach.\t1\t3\tProf.\t4\t1\t5\n104367\tM\tMarried\t1959\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tExec.\t7\t0\t5\n102114\tF\tDivorc.\t1961\tF: 110,000 - 129,999\t7000\tBach.\t0\t9+\tProf.\t2\t0\t4\n104151\tF\tNeverM\t1973\tK: 250,000 - 299,999\t7000\tBach.\t0\t2\tCleric.\t3\t0\t4\n100762\tM\tMarried\t1954\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n100505\tF\tNeverM\t1983\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t2\tOther\t2\t1\t3\n101228\tF\tNeverM\t1984\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tSales\t2\t1\t3\n102474\tM\tMarried\t1951\tJ: 190,000 - 249,999\t9000\t11th\t0\t3\tOther\t5\t0\t4\n100181\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tOther\t1\t1\t3\n103549\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t4\t0\t5\n102629\tF\tMarried\t1957\tI: 170,000 - 189,999\t5000\tHS-grad\t1\t1\tSales\t5\t0\t5\n100878\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5\n102333\tM\tMarried\t1957\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tTechSup\t5\t0\t5\n101004\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101341\tM\tMarried\t1953\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tSales\t8\t0\t5\n104060\tF\tDivorc.\t1949\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t2\t?\t4\t0\t4\n100972\tM\tMarried\t1948\tJ: 190,000 - 249,999\t11000\tMasters\t1\t3\tProf.\t6\t0\t5\n102950\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tAssoc-A\t1\t3\tCrafts\t5\t0\t5\n100634\tF\tNeverM\t1984\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t2\tHandler\t2\t1\t3\n100180\tM\tNeverM\t1981\tL: 300,000 and above\t7000\t< Bach.\t0\t1\tProf.\t3\t1\t3\n100458\tM\tNeverM\t1982\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n103763\tM\tMarried\t1954\tE: 90,000 - 109,999\t5000\t< Bach.\t1\t3\tProf.\t5\t0\t5\n103881\tF\tNeverM\t1983\tL: 300,000 and above\t11000\t< Bach.\t0\t1\tOther\t1\t1\t3\n100079\tF\tNeverM\t1978\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t3\n103107\tM\tNeverM\t1959\tG: 130,000 - 149,999\t15000\tHS-grad\t0\t6-8\tCrafts\t7\t0\t4\n101444\tM\tMarried\t1958\tD: 70,000 - 89,999\t10000\tBach.\t1\t3\tExec.\t6\t0\t5\n103137\tM\tMarried\t1965\tI: 170,000 - 189,999\t11000\tAssoc-V\t1\t3\tExec.\t5\t0\t5\n103749\tM\tMarried\t1976\tI: 170,000 - 189,999\t11000\tBach.\t0\t3\tProf.\t3\t1\t3\n101352\tM\tMarried\t1936\tJ: 190,000 - 249,999\t7000\tBach.\t0\t3\tProf.\t0\t0\t4\n104351\tM\tMarried\t1964\tJ: 190,000 - 249,999\t11000\tProfsc\t1\t3\tProf.\t5\t0\t5\n100978\tM\tMarried\t1964\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4\n101574\tM\tMarried\t1951\tG: 130,000 - 149,999\t15000\t< Bach.\t0\t3\tSales\t9\t0\t4\n102236\tF\tMarried\t1979\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t4-5\t?\t2\t1\t3\n102533\tM\tMarried\t1972\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tCrafts\t3\t0\t4\n101436\tF\tNeverM\t1978\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t1\tCleric.\t3\t1\t3\n103595\tM\tNeverM\t1980\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t1\tSales\t2\t1\t3\n102656\tF\tNeverM\t1964\tF: 110,000 - 129,999\t3000\tBach.\t0\t1\tExec.\t4\t0\t4\n100528\tM\tMarried\t1946\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5\n102969\tM\tNeverM\t1961\tJ: 190,000 - 249,999\t11000\tMasters\t1\t2\tExec.\t5\t0\t5\n100731\tM\tDivorc.\t1944\tL: 300,000 and above\t9000\tPhD\t1\t9+\tProf.\t7\t0\t5\n102703\tM\tNeverM\t1983\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n103132\tF\tMabsent\t1935\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tFarming\t5\t0\t4\n103258\tM\tMarried\t1949\tB: 30,000 - 49,999\t5000\tHS-grad\t1\t3\tSales\t7\t0\t5\n100259\tM\tMarried\t1969\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tTechSup\t3\t0\t5\n103334\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tExec.\t4\t0\t4\n100843\tF\tSepar.\t1971\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tProf.\t4\t0\t5\n100724\tM\tNeverM\t1972\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n100529\tF\tSepar.\t1954\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tMachine\t5\t0\t4\n102407\tM\tMarried\t1963\tJ: 190,000 - 249,999\t9000\t9th\t0\t3\tHandler\t4\t0\t4\n102619\tM\tMarried\t1935\tJ: 190,000 - 249,999\t15000\tPhD\t1\t3\tProf.\t10\t0\t5\n100639\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t1\tOther\t3\t0\t4\n101979\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t3\n103779\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tBach.\t1\t3\tSales\t4\t0\t5\n101348\tM\tMarried\t1960\tL: 300,000 and above\t15000\tBach.\t0\t3\tExec.\t4\t0\t4\n102542\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tTransp.\t4\t0\t4\n103637\tF\tNeverM\t1986\tK: 250,000 - 299,999\t11000\t10th\t0\t1\tCleric.\t1\t1\t3\n100903\tF\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t1\tCleric.\t3\t0\t4\n101616\tF\tNeverM\t1980\tE: 90,000 - 109,999\t7000\tBach.\t0\t1\tTechSup\t2\t1\t3\n101409\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n100466\tM\tMarried\t1959\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n101892\tM\tMarried\t1955\tL: 300,000 and above\t9000\tHS-grad\t1\t3\tCleric.\t6\t0\t5\n103424\tM\tMarried\t1958\tE: 90,000 - 109,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5\n102224\tM\tMarried\t1923\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\t?\t2\t0\t4\n102124\tM\tMarried\t1971\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tHandler\t4\t0\t5\n102194\tF\tDivorc.\t1931\tB: 30,000 - 49,999\t7000\t11th\t0\t2\tCleric.\t2\t0\t4\n100521\tM\tNeverM\t1963\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n100723\tF\tDivorc.\t1938\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t9+\tCleric.\t10\t0\t4\n102677\tF\tDivorc.\t1971\tE: 90,000 - 109,999\t7000\tBach.\t0\t9+\tExec.\t3\t0\t4\n100629\tM\tMarried\t1958\tE: 90,000 - 109,999\t9000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5\n101790\tF\tMarried\t1965\tE: 90,000 - 109,999\t7000\t7th-8th\t1\t4-5\tMachine\t5\t0\t5\n102676\tM\tMarried\t1948\tE: 90,000 - 109,999\t1500\t< Bach.\t1\t3\tTechSup\t7\t0\t5\n102773\tM\tMarried\t1953\tB: 30,000 - 49,999\t5000\tHS-grad\t1\t3\tSales\t8\t0\t5\n102858\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tPresch.\t0\t2\tFarming\t2\t1\t3\n100832\tM\tNeverM\t1974\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t2\tCrafts\t3\t1\t3\n100238\tM\tMarried\t1973\tL: 300,000 and above\t15000\tAssoc-V\t0\t3\tHandler\t3\t0\t4\n103206\tF\tMarried\t1961\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t4-5\tExec.\t4\t0\t5\n101518\tM\tNeverM\t1981\tL: 300,000 and above\t15000\t5th-6th\t0\t6-8\tFarming\t2\t1\t3\n100969\tF\tMabsent\t1957\tJ: 190,000 - 249,999\t9000\t7th-8th\t0\t9+\tHouse-s\t2\t0\t4\n101976\tM\tNeverM\t1968\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t2\tCrafts\t4\t0\t4\n103662\tM\tNeverM\t1981\tH: 150,000 - 169,999\t10000\t9th\t0\t9+\tMachine\t2\t1\t3\n100337\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t7000\t7th-8th\t0\t2\t?\t2\t1\t3\n101177\tM\tSepar.\t1957\tL: 300,000 and above\t9000\t5th-6th\t0\t2\tHandler\t6\t0\t4\n101099\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t15000\t9th\t0\t6-8\tSales\t1\t1\t3\n102945\tM\tMarried\t1965\tJ: 190,000 - 249,999\t15000\t7th-8th\t0\t3\tCrafts\t4\t0\t4\n103879\tM\tMarried\t1955\tJ: 190,000 - 249,999\t15000\tHS-grad\t1\t3\tOther\t5\t0\t5\n102443\tM\tNeverM\t1986\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t6-8\tOther\t2\t1\t3\n101850\tF\tSepar.\t1952\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t9+\tMachine\t5\t0\t4\n102636\tF\tWidowed\t1946\tL: 300,000 and above\t7000\t< Bach.\t0\t9+\tCleric.\t6\t0\t4\n102691\tF\tSepar.\t1971\tL: 300,000 and above\t11000\t9th\t0\t9+\tOther\t3\t0\t4\n102104\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tProf.\t3\t0\t4\n102412\tF\tNeverM\t1966\tJ: 190,000 - 249,999\t11000\t9th\t0\t2\tHouse-s\t3\t0\t4\n101105\tM\tMarried\t1978\tJ: 190,000 - 249,999\t11000\t5th-6th\t0\t3\tMachine\t3\t1\t3\n103808\tM\tMarried\t1980\tE: 90,000 - 109,999\t1500\t5th-6th\t0\t3\tHandler\t2\t1\t3\n102558\tM\tMarried\t1975\tL: 300,000 and above\t15000\t7th-8th\t0\t3\tFarming\t3\t1\t3\n101305\tM\tMarried\t1971\tL: 300,000 and above\t7000\t5th-6th\t0\t3\tCrafts\t5\t0\t4\n103882\tM\tNeverM\t1975\tH: 150,000 - 169,999\t5000\t5th-6th\t0\t2\tCrafts\t3\t1\t3\n100130\tM\tMarried\t1957\tJ: 190,000 - 249,999\t11000\t5th-6th\t0\t3\tMachine\t5\t0\t4\n102642\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tTransp.\t3\t1\t3\n100199\tF\tWidowed\t1922\tF: 110,000 - 129,999\t1500\t9th\t0\t2\tHouse-s\t2\t0\t4\n104334\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n102073\tM\tNeverM\t1984\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\tOther\t1\t1\t3\n104105\tM\tMarried\t1936\tG: 130,000 - 149,999\t9000\t7th-8th\t0\t3\tCrafts\t7\t0\t4\n100451\tM\tMarried\t1983\tL: 300,000 and above\t7000\tHS-grad\t0\t3\tCrafts\t2\t1\t3\n102293\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\t11th\t0\t2\tOther\t3\t1\t3\n102143\tF\tNeverM\t1973\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n103362\tM\tNeverM\t1975\tL: 300,000 and above\t7000\tBach.\t0\t2\tCleric.\t3\t1\t3\n101386\tM\tMarried\t1971\tI: 170,000 - 189,999\t1500\tBach.\t1\t3\tExec.\t3\t0\t5\n103110\tF\tNeverM\t1979\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t2\tTechSup\t2\t1\t3\n100048\tM\tNeverM\t1980\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n104065\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tAssoc-V\t0\t2\tCleric.\t2\t1\t3\n104237\tF\tWidowed\t1935\tH: 150,000 - 169,999\t10000\t10th\t0\t9+\tOther\t3\t0\t4\n103819\tM\tMarried\t1968\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tProtec.\t4\t0\t4\n100753\tM\tMarried\t1969\tH: 150,000 - 169,999\t5000\t< Bach.\t1\t3\tCrafts\t3\t0\t5\n104066\tM\tMarried\t1956\tE: 90,000 - 109,999\t7000\tBach.\t0\t3\tExec.\t6\t0\t4\n101899\tM\tMarried\t1943\tE: 90,000 - 109,999\t10000\t7th-8th\t0\t3\tSales\t9\t0\t4\n100837\tF\tNeverM\t1983\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t1\tCleric.\t1\t1\t3\n103745\tF\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t1\t4-5\tProf.\t3\t0\t5\n104090\tM\tMarried\t1953\tG: 130,000 - 149,999\t7000\tMasters\t1\t3\tProf.\t6\t0\t5\n102634\tM\tMarried\t1971\tA: Below 30,000\t1500\t< Bach.\t1\t3\tMachine\t6\t0\t5\n102442\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tHandler\t2\t1\t3\n100769\tF\tMarried\t1970\tB: 30,000 - 49,999\t1500\tBach.\t1\t4-5\tExec.\t3\t0\t5\n102993\tM\tMarried\t1934\tF: 110,000 - 129,999\t9000\t9th\t0\t3\t?\t3\t0\t4\n102312\tM\tNeverM\t1984\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n100335\tF\tNeverM\t1986\tK: 250,000 - 299,999\t9000\t10th\t0\t1\tCleric.\t1\t1\t3\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_698467501","id":"20210125-170341_1145347851","dateCreated":"2021-01-16T00:42:44+0000","dateStarted":"2021-02-06T19:26:09+0000","dateFinished":"2021-02-06T19:26:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:77"},{"text":"%md\n\n.\nFinally, view the cluster results using a matplotlib scatterplot. We've selected two predictors to show cluster relationships in two dimensions: YRS_RESIDENCE and CUST_YEAR_OF_BIRTH. \n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Finally, view the cluster results using a matplotlib scatterplot. We've selected two predictors to show cluster relationships in two dimensions: YRS_RESIDENCE and CUST_YEAR_OF_BIRTH.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-203277385","id":"20210125-170341_119565062","dateCreated":"2021-01-12T22:43:05+0000","dateStarted":"2021-02-06T19:26:10+0000","dateFinished":"2021-02-06T19:26:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:78"},{"text":"%python\n\npred_df = pred[['CUST_ID', 'CLUSTER_ID', 'CUST_YEAR_OF_BIRTH', 'YRS_RESIDENCE', 'CUST_CREDIT_LIMIT']].pull()\n\nfig = plt.figure()\nax=fig.add_axes([0.1,0.1,0.8,0.8])\n\nids = pred_df['CLUSTER_ID']\nclusters = ids.drop_duplicates().values\nhandles = []\nlabs = []\ncolors = ['r', 'b', 'g']\nfor i, c in enumerate(clusters):\n xc = pred_df[pred_df['CLUSTER_ID'] == c]['YRS_RESIDENCE'].values\n yc = pred_df[pred_df['CLUSTER_ID'] == c]['CUST_YEAR_OF_BIRTH'].values\n \n h = ax.scatter(xc, yc, color= colors[i])\n handles.append(h)\n labs.append('CLUSTER' + str(c))\nax.legend(handles, labs)\nplt.title('K-Means Clustering')\n\nplt.grid(True)\n\nplt.xlabel('YRS_RESIDENCE')\nplt.ylabel('CUST_YEAR_OF_BIRTH')\nplt.show()\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1504657978","id":"20210125-170341_372854821","dateCreated":"2021-01-12T22:44:56+0000","dateStarted":"2021-02-06T19:26:11+0000","dateFinished":"2021-02-06T19:26:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:79"},{"title":"Step 4: Partitioned Models","text":"%md\n\nOML4Py enables automatically building an ensemble model comprised of multiple sub-models, one for each data partition. Sub-models exist and are used as one model, which results in simplified scoring using the top-level model only. The proper sub-model is chosen by the system based on partition value(s) in the row of data to be scored. Partitioned models achieve potentially better accuracy through multiple targeted models.\n\nIn this lab, we build an *SVM* model to predict the number of years a customer resides at their residence but partitioned on customer gender. The model is then used to predict the target, then predict the target with prediction details.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py enables automatically building an ensemble model comprised of multiple sub-models, one for each data partition. Sub-models exist and are used as one model, which results in simplified scoring using the top-level model only. The proper sub-model is chosen by the system based on partition value(s) in the row of data to be scored. Partitioned models achieve potentially better accuracy through multiple targeted models.

\n

In this lab, we build an SVM model to predict the number of years a customer resides at their residence but partitioned on customer gender. The model is then used to predict the target, then predict the target with prediction details.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1530518706","id":"20210125-170341_702035530","dateCreated":"2021-01-12T22:09:32+0000","dateStarted":"2021-02-06T19:26:14+0000","dateFinished":"2021-02-06T19:26:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:80"},{"text":"%md\n\n.\nCreate test and train data sets and drop missing values.","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create test and train data sets and drop missing values.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1145812467","id":"20210125-170341_1225021629","dateCreated":"2021-01-13T00:43:17+0000","dateStarted":"2021-02-06T19:26:14+0000","dateFinished":"2021-02-06T19:26:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:81"},{"text":"%python\n\ndat = CUST_DF.split(ratio=(0.8, 0.2), seed = 6218945)\n\ndat[0] = dat[0].dropna()\n\ntrain_x = dat[0].drop('YRS_RESIDENCE')\ntrain_y = dat[0]['YRS_RESIDENCE']\ntest_dat = dat[1]\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_-447342729","id":"20210125-170341_1308123840","dateCreated":"2021-01-13T00:43:29+0000","dateStarted":"2021-02-06T19:26:15+0000","dateFinished":"2021-02-06T19:26:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:82"},{"text":"%md\n\n.\nBuild Partitioned Model using the *SVM* algorithm to predict *YRS_RESIDENCE*, partitioned by *CUST_GENDER*.","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Build Partitioned Model using the SVM algorithm to predict YRS_RESIDENCE, partitioned by CUST_GENDER.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_321260930","id":"20210125-170341_287091490","dateCreated":"2021-01-13T00:35:26+0000","dateStarted":"2021-02-06T19:26:16+0000","dateFinished":"2021-02-06T19:26:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:83"},{"text":"%python\n\ntry:\n oml.drop(model = 'SVM_PARTITIONED_REGRESSION_MODEL') \nexcept:\n print(\"No such model\")\n \n\nsetting = {'svms_kernel_function' :'dbms_data_mining.svms_linear', 'odms_partition_columns':'CUST_GENDER'}\nsvm_mod = oml.svm(\"regression\", **setting)\n \nsvm_mod.fit(train_x, train_y , model_name = 'SVM_PARTITIONED_REGRESSION_MODEL')\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nModel Name: SVM_PARTITIONED_REGRESSION_MODEL\n\nModel Owner: OMLUSER03\n\nAlgorithm Name: Support Vector Machine\n\nMining Function: REGRESSION\n\nTarget: YRS_RESIDENCE\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_SUPPORT_VECTOR_MACHINES\n1 ODMS_DETAILS ODMS_ENABLE\n2 ODMS_MAX_PARTITIONS 1000\n3 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n4 ODMS_PARTITION_COLUMNS CUST_GENDER\n5 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n6 PREP_AUTO ON\n7 SVMS_CONV_TOLERANCE .0001\n8 SVMS_EPSILON .1\n9 SVMS_KERNEL_FUNCTION SVMS_LINEAR\n\nComputed Settings: \n partition name setting name setting value\n0 F SVMS_COMPLEXITY_FACTOR 3\n1 F SVMS_NUM_ITERATIONS 30\n2 F SVMS_SOLVER SVMS_SOLVER_IPM\n3 M SVMS_COMPLEXITY_FACTOR 3\n4 M SVMS_NUM_ITERATIONS 30\n5 M SVMS_SOLVER SVMS_SOLVER_IPM\n\nGlobal Statistics: \n partition name attribute name attribute value\n0 F CONVERGED YES\n1 F ITERATIONS 15\n2 F NUM_ROWS 1213\n3 M CONVERGED YES\n4 M ITERATIONS 16\n5 M NUM_ROWS 2381\n\nAttributes: \nAFFINITY_CARD\nCUST_CREDIT_LIMIT\nCUST_GENDER\nCUST_ID\nCUST_INCOME_LEVEL\nCUST_MARITAL_STATUS\nCUST_YEAR_OF_BIRTH\nEDUCATION\nHOUSEHOLD_SIZE\nOCCUPATION\nY_BOX_GAMES\n\nPartition: YES\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-676097515","id":"20210125-170341_2032051501","dateCreated":"2021-01-13T00:36:05+0000","dateStarted":"2021-02-06T19:26:16+0000","dateFinished":"2021-02-06T19:26:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:84"},{"text":"%md\n\n.\nPredict on the test set and display prediction result - note the use of the top level model only.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Predict on the test set and display prediction result - note the use of the top level model only.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1226535397","id":"20210125-170341_305453827","dateCreated":"2021-01-13T00:40:09+0000","dateStarted":"2021-02-06T19:26:20+0000","dateFinished":"2021-02-06T19:26:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:85"},{"text":"%python\n\ny_pred_part = svm_mod.predict(test_dat, test_dat)\n\nz.show(y_pred_part[['PARTITION_NAME', 'PREDICTION'] + y_pred_part.columns].round(4).head())\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PARTITION_NAME":"string","PREDICTION":"string","CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","YRS_RESIDENCE":"string","Y_BOX_GAMES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"PARTITION_NAME\tPREDICTION\tCUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\tPREDICTION\tPARTITION_NAME\nF\t4.3611\t100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4.3611\tF\nF\t3.4255\t102828\tF\tNeverM\t1967\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t1\tMachine\t4\t0\t3.4255\tF\nM\t3.1581\t103401\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tCrafts\t4\t1\t3.1581\tM\nM\t3.6503\t104077\tM\tNeverM\t1975\tL: 300,000 and above\t9000\tProfsc\t0\t2\tProf.\t3\t1\t3.6503\tM\nM\t1.9144\t101940\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t1\t?\t2\t1\t1.9144\tM\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1644214550","id":"20210125-170341_475284967","dateCreated":"2021-01-13T00:40:47+0000","dateStarted":"2021-02-06T19:26:21+0000","dateFinished":"2021-02-06T19:26:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:86"},{"text":"%md\n\n.\nShow model global statistics for each partitioned sub-model. The partition name column contains the values from the partition column. If multiple columns were specified, there would be one column for each with corresponding value. \n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Show model global statistics for each partitioned sub-model. The partition name column contains the values from the partition column. If multiple columns were specified, there would be one column for each with corresponding value.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-368035402","id":"20210125-170341_1759885556","dateCreated":"2021-01-13T00:57:38+0000","dateStarted":"2021-02-06T19:26:22+0000","dateFinished":"2021-02-06T19:26:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:87"},{"text":"%python\n\nz.show(svm_mod.global_stats)\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"partition name":"string","attribute name":"string","attribute value":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"partition name\tattribute name\tattribute value\nF\tCONVERGED\tYES\nF\tITERATIONS\t15.0\nF\tNUM_ROWS\t1213.0\nM\tCONVERGED\tYES\nM\tITERATIONS\t16.0\nM\tNUM_ROWS\t2381.0\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-636634345","id":"20210125-170341_1683906312","dateCreated":"2021-01-13T00:59:10+0000","dateStarted":"2021-02-06T19:26:22+0000","dateFinished":"2021-02-06T19:26:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:88"},{"title":"Materialize the test data","text":"%md\nMaterialize the data to table *TEST_DATA* so it can be queried from SQL.\n\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Materialize the data to table TEST_DATA so it can be queried from SQL.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_779144562","id":"20210125-170341_1350990915","dateCreated":"2021-01-13T00:58:14+0000","dateStarted":"2021-02-06T19:26:23+0000","dateFinished":"2021-02-06T19:26:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:89"},{"text":"%python\n\ntry:\n oml.drop(table = 'TEST_DATA')\nexcept:\n print(\"Table not exist\")\n_ = test_dat.materialize(table = 'TEST_DATA')\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_-282402079","id":"20210125-170341_1849913545","dateCreated":"2021-01-13T00:58:45+0000","dateStarted":"2021-02-06T19:26:24+0000","dateFinished":"2021-02-06T19:26:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:90"},{"text":"%md\n\n.\nUse SQL to score data and display prediction details.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use SQL to score data and display prediction details.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-781819779","id":"20210125-170341_732190701","dateCreated":"2021-01-13T01:00:27+0000","dateStarted":"2021-02-06T19:26:25+0000","dateFinished":"2021-02-06T19:26:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:91"},{"text":"%sql\n\nSELECT CUST_ID,\n round(PREDICTION_YRS_RES,3) PRED_YRS_RES,\n RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute1\",17,100)),'rank=\"1\"/>') FIRST_ATTRIBUTE,\n RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute2\",17,100)),'rank=\"2\"/>') SECOND_ATTRIBUTE,\n RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute3\",17,100)),'rank=\"3\"/>') THIRD_ATTRIBUTE\nFROM (SELECT CUST_ID,\n PREDICTION(SVM_PARTITIONED_REGRESSION_MODEL USING *) PREDICTION_YRS_RES,\n PREDICTION_DETAILS(SVM_PARTITIONED_REGRESSION_MODEL USING *) PD\n FROM TEST_DATA\n WHERE CUST_ID < 100015\n ORDER BY CUST_ID) OUT,\n XMLTABLE('/Details'\n PASSING OUT.PD\n COLUMNS \n \"Attribute1\" XMLType PATH 'Attribute[1]',\n \"Attribute2\" XMLType PATH 'Attribute[2]',\n \"Attribute3\" XMLType PATH 'Attribute[3]') \n OUTPRED\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CUST_ID":"string","PRED_YRS_RES":"string","FIRST_ATTRIBUTE":"string","SECOND_ATTRIBUTE":"string","THIRD_ATTRIBUTE":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CUST_ID\tPRED_YRS_RES\tFIRST_ATTRIBUTE\tSECOND_ATTRIBUTE\tTHIRD_ATTRIBUTE\n100007\t4.092\t\"CUST_YEAR_OF_BIRTH\" actualValue=\"1963\" weight=\".319\" \t\"CUST_INCOME_LEVEL\" actualValue=\"L: 300,000 and above\" weight=\".128\" \t\"CUST_MARITAL_STATUS\" actualValue=\"Divorc.\" weight=\".126\" \n100010\t2.978\t\"CUST_CREDIT_LIMIT\" actualValue=\"9000\" weight=\".004\" \t\"CUST_ID\" actualValue=\"100010\" weight=\"-.001\" \t\"CUST_INCOME_LEVEL\" actualValue=\"L: 300,000 and above\" weight=\"-.033\" \n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1316703417","id":"20210125-170341_1033169806","dateCreated":"2021-01-13T01:00:56+0000","dateStarted":"2021-02-06T19:26:25+0000","dateFinished":"2021-02-06T19:26:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:92"},{"title":" Step 5: Rank attribute importance using Model Explainability","text":"%md\n\nMachine Learning Explainability, *MLX*, supports explaining and interpreting machine learning models. The ***oml.mlx*** module enables understanding a model's behavior and how it ranks predictors when making predictions in an algorithm-agnostic way. MLX currently provides these model-agnostic explanations for classification and regression models where explanations treat the ML model as a black-box, instead of using properties from the model to guide the explanation.\n\nThe Global Feature Importance explainer object is the interface to the MLX permutation importance explainer. It identifies the most important features for a given model and data set. The explainer is model-agnostic and currently supports tabular classification and regression data with both numerical and categorical features.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Machine Learning Explainability, MLX, supports explaining and interpreting machine learning models. The oml.mlx module enables understanding a model's behavior and how it ranks predictors when making predictions in an algorithm-agnostic way. MLX currently provides these model-agnostic explanations for classification and regression models where explanations treat the ML model as a black-box, instead of using properties from the model to guide the explanation.

\n

The Global Feature Importance explainer object is the interface to the MLX permutation importance explainer. It identifies the most important features for a given model and data set. The explainer is model-agnostic and currently supports tabular classification and regression data with both numerical and categorical features.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_530692173","id":"20210125-170341_1586756635","dateCreated":"2021-01-12T22:22:53+0000","dateStarted":"2021-02-06T19:26:41+0000","dateFinished":"2021-02-06T19:26:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:93"},{"text":"%md\n\n.\n\nImport the *GlobalFeatureImportance* explainer, and load the iris data set into the database. The script also adds a unique Case ID column.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Import the GlobalFeatureImportance explainer, and load the iris data set into the database. The script also adds a unique Case ID column.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-2098110145","id":"20210125-170341_732109368","dateCreated":"2021-01-12T22:23:56+0000","dateStarted":"2021-02-06T19:26:42+0000","dateFinished":"2021-02-06T19:26:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:94"},{"text":"%python\n\nfrom oml.mlx import GlobalFeatureImportance\nfrom sklearn import datasets\n\niris_ds = datasets.load_iris()\niris_data = iris_ds.data.astype(float)\nX = pd.DataFrame(iris_data, columns=iris_ds.feature_names)\ny = pd.DataFrame(iris_ds.target, columns=['TARGET'])\nrow_id = pd.DataFrame(np.arange(iris_data.shape[0]), \ncolumns=['CASE_ID'])\n\n\ntry:\n oml.drop(table=\"IRIS_ID\")\nexcept:\n pass\ndf = oml.create(pd.concat([X, y, row_id], axis=1), table='IRIS_ID')\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:42+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_243763378","id":"20210125-170341_582040478","dateCreated":"2021-01-13T01:09:25+0000","dateStarted":"2021-02-06T19:26:42+0000","dateFinished":"2021-02-06T19:26:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:95"},{"text":"%md\n\n.\nSplit the data set into train and test sets.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split the data set into train and test sets.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-306423493","id":"20210125-170341_946040029","dateCreated":"2021-01-13T01:10:52+0000","dateStarted":"2021-02-06T19:26:43+0000","dateFinished":"2021-02-06T19:26:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:96"},{"text":"%python\n\ntrain, test = df.split(ratio=(0.8, 0.2), hash_cols='CASE_ID', seed=32)\nX, y = train.drop('TARGET'), train['TARGET']\nX_test, y_test = test.drop('TARGET'), test['TARGET']\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_-1406877473","id":"20210125-170341_2035367150","dateCreated":"2021-01-13T01:19:25+0000","dateStarted":"2021-02-06T19:26:44+0000","dateFinished":"2021-02-06T19:26:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:97"},{"text":"%md\n\n.\nTrain an *SVM* model.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Train an SVM model.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-293342170","id":"20210125-170341_1242602278","dateCreated":"2021-01-13T01:19:51+0000","dateStarted":"2021-02-06T19:26:45+0000","dateFinished":"2021-02-06T19:26:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:98"},{"text":"%python\n\nmodel = oml.algo.svm(ODMS_RANDOM_SEED=32).fit(X, y, case_id='CASE_ID')\n\"SVM accuracy score = {:.2f}\".format(model.score(X_test, y_test))\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"'SVM accuracy score = 0.94'\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_1152754505","id":"20210125-170341_1641428017","dateCreated":"2021-01-13T01:21:36+0000","dateStarted":"2021-02-06T19:26:45+0000","dateFinished":"2021-02-06T19:26:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:99"},{"text":"%md\n\n.\nCreate the MLX Global Feature Importance explainer *gfi*, using the *f1_weighted metric*.\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the MLX Global Feature Importance explainer gfi, using the f1_weighted metric.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-881718038","id":"20210125-170341_1123068242","dateCreated":"2021-01-13T01:21:53+0000","dateStarted":"2021-02-06T19:26:48+0000","dateFinished":"2021-02-06T19:26:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:100"},{"text":"%python\n\ngfi = GlobalFeatureImportance(mining_function='classification', score_metric='f1_weighted', random_state=32, parallel=4)\n\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_-649765958","id":"20210125-170341_850807726","dateCreated":"2021-01-13T01:22:22+0000","dateStarted":"2021-02-06T19:26:48+0000","dateFinished":"2021-02-06T19:26:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:101"},{"text":"%md\n\n.\n\nInvoke ***gfi.explain*** to generate the global feature importance for the provided data. The explainer returns an ordered list of features along with their importance values. Features located at higher ranks have more impact on the model predictions. Importance values also represent relative feature importance. Here we see that petal length is the most important feature. \n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Invoke gfi.explain to generate the global feature importance for the provided data. The explainer returns an ordered list of features along with their importance values. Features located at higher ranks have more impact on the model predictions. Importance values also represent relative feature importance. Here we see that petal length is the most important feature.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-623339802","id":"20210125-170341_2091986805","dateCreated":"2021-01-13T01:22:40+0000","dateStarted":"2021-02-06T19:26:49+0000","dateFinished":"2021-02-06T19:26:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:102"},{"text":"%python\n\nexplanation = gfi.explain(model, X, y,\ncase_id='CASE_ID', n_iter=10)\nexplanation\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Global Feature Importance: \n\t[0] petal length (cm): Value: 0.3496, Error: 0.0236\n\t[1] petal width (cm): Value: 0.2440, Error: 0.0332\n\t[2] sepal width (cm): Value: 0.0861, Error: 0.0197\n\t[3] sepal length (cm): Value: 0.0108, Error: 0.0124\n\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_2138158495","id":"20210125-170341_748092270","dateCreated":"2021-01-13T01:22:58+0000","dateStarted":"2021-02-06T19:26:50+0000","dateFinished":"2021-02-06T19:26:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:103"},{"title":"Try it yourself","text":"%md\nBuild an in-database RandomForest model and compare the model's attribute importance ranking with that from *MLX*.","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Build an in-database RandomForest model and compare the model's attribute importance ranking with that from MLX.

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-736684108","id":"20210125-170341_1802202519","dateCreated":"2021-01-20T05:10:19+0000","dateStarted":"2021-02-06T19:26:54+0000","dateFinished":"2021-02-06T19:26:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:104"},{"text":"%python\n\n# Insert code here\n\n\n\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1611594221794_1919367248","id":"20210125-170341_1795203183","dateCreated":"2021-01-20T05:11:32+0000","dateStarted":"2021-02-06T19:26:54+0000","dateFinished":"2021-02-06T19:26:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:105"},{"text":"%md\n\n# End of Script\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1611594221794_-1804759172","id":"20210125-170341_515891453","dateCreated":"2021-01-13T01:21:25+0000","dateStarted":"2021-02-06T19:26:55+0000","dateFinished":"2021-02-06T19:26:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:106"},{"text":"%md\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:26:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594221794_1997999442","id":"20210125-170341_99165647","dateCreated":"2021-01-15T20:24:02+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:107"}],"name":"Lab 3: OML4Py Algorithms","id":"32100","noteParams":{},"noteForms":{},"angularObjects":{},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 3_ OML4Py Algorithms.json b/machine-learning/labs/oml4py-live-labs/Lab 3_ OML4Py Algorithms.json new file mode 100755 index 00000000..948aeec6 --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/Lab 3_ OML4Py Algorithms.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nThis lab highlights a few of the machine learning algorithms and features available in OML4Py: generalized linear models, K-Means Clustering, partitioned models, and model explainability.\n\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

This lab highlights a few of the machine learning algorithms and features available in OML4Py: generalized linear models, K-Means Clustering, partitioned models, and model explainability.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_773509796","id":"20210302-002652_1526357390","dateCreated":"2021-01-12T21:14:01+0000","dateStarted":"2021-03-02T21:13:21+0000","dateFinished":"2021-03-02T21:13:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Step 1: Import libraries","text":"%python\n\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport oml\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_-1126484764","id":"20210302-002652_457831883","dateCreated":"2021-01-15T20:10:00+0000","dateStarted":"2021-03-02T21:13:22+0000","dateFinished":"2021-03-02T21:13:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"title":"Step 2: Regression using GLM","text":"%md\n\nThis example shows how to predict numerical values using multiple regression. Given demographic, purchase, and affinity card data for a set of customers, predict the number of years a customer remains at the same residence, as found in column *YRS_RESIDENCE* - a continuous variable. We will use the Generalized Linear Model algorithm. All processing occurs inside Oracle Autonomous Database.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This example shows how to predict numerical values using multiple regression. Given demographic, purchase, and affinity card data for a set of customers, predict the number of years a customer remains at the same residence, as found in column YRS_RESIDENCE - a continuous variable. We will use the Generalized Linear Model algorithm. All processing occurs inside Oracle Autonomous Database.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_697098812","id":"20210302-002652_496445347","dateCreated":"2021-01-12T21:16:55+0000","dateStarted":"2021-03-02T21:13:31+0000","dateFinished":"2021-03-02T21:13:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"text":"%md\n. \n\nPrepare the dataset combining the *CUSTOMERS* table from the SH schema with the *SUPPLEMENTARY_DEMOGRAPHICS* table. Note that we're illustrating how to use the query specification with ***oml.sync*** and selecting the columns we want to include. However, we could also have used ***oml.sync*** on the *CUSTOMERS* and *SUPPLEMENTARY_DEMOGRAPHICS* tables themselves, and perform column filtering in Python prior to the merge.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Prepare the dataset combining the CUSTOMERS table from the SH schema with the SUPPLEMENTARY_DEMOGRAPHICS table. Note that we're illustrating how to use the query specification with oml.sync and selecting the columns we want to include. However, we could also have used oml.sync on the CUSTOMERS and SUPPLEMENTARY_DEMOGRAPHICS tables themselves, and perform column filtering in Python prior to the merge.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-2026101568","id":"20210302-002652_750275638","dateCreated":"2021-01-12T21:18:26+0000","dateStarted":"2021-03-02T21:13:32+0000","dateFinished":"2021-03-02T21:13:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%python\n\nCUSTOMERS = oml.sync(query = 'SELECT CUST_ID, CUST_GENDER, CUST_MARITAL_STATUS, CUST_YEAR_OF_BIRTH, CUST_INCOME_LEVEL, CUST_CREDIT_LIMIT FROM SH.CUSTOMERS')\nDEMO_DF = oml.sync(query = \"\"\"SELECT CUST_ID, EDUCATION, AFFINITY_CARD, HOUSEHOLD_SIZE, OCCUPATION, YRS_RESIDENCE, Y_BOX_GAMES FROM SH.SUPPLEMENTARY_DEMOGRAPHICS\"\"\")\nCUST_DF = CUSTOMERS.merge(DEMO_DF, how = \"inner\", on = 'CUST_ID',suffixes = [\"\",\"\"])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_1079853580","id":"20210302-002652_606499330","dateCreated":"2021-01-12T21:18:53+0000","dateStarted":"2021-03-02T21:13:32+0000","dateFinished":"2021-03-02T21:13:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%md\n.\nDisplay the first few rows of table *CUST_DF*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display the first few rows of table CUST_DF.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-717419135","id":"20210302-002652_1880435936","dateCreated":"2021-01-12T21:19:09+0000","dateStarted":"2021-03-02T21:13:33+0000","dateFinished":"2021-03-02T21:13:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%python\n\nz.show(CUST_DF.head())\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","YRS_RESIDENCE":"string","Y_BOX_GAMES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\n100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\n102828\tF\tNeverM\t1967\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t1\tMachine\t4\t0\n101232\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\n100696\tM\tMarried\t1971\tF: 110,000 - 129,999\t7000\tProfsc\t1\t3\tProf.\t3\t0\n103948\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tCleric.\t4\t0\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_557343106","id":"20210302-002652_1419491198","dateCreated":"2021-01-12T21:19:59+0000","dateStarted":"2021-03-02T21:13:34+0000","dateFinished":"2021-03-02T21:13:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%md\n\n.\nSplit data into randomly selected 60% sample for train and 40% test.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split data into randomly selected 60% sample for train and 40% test.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_68088441","id":"20210302-002652_984389671","dateCreated":"2021-01-12T21:20:13+0000","dateStarted":"2021-03-02T21:13:35+0000","dateFinished":"2021-03-02T21:13:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%python\n\nTRAIN, TEST = CUST_DF.split(ratio = (0.6,0.4))\nTRAIN_X = TRAIN.drop('YRS_RESIDENCE')\nTRAIN_Y = TRAIN['YRS_RESIDENCE']\nTEST_X = TEST.drop('YRS_RESIDENCE')\nTEST_Y = TEST['YRS_RESIDENCE']\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_-1828892397","id":"20210302-002652_764238610","dateCreated":"2021-01-12T21:20:35+0000","dateStarted":"2021-03-02T21:13:35+0000","dateFinished":"2021-03-02T21:13:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%md\n\n.\nBuild a *GLM* regression model for predicting *YRS_RESIDENCE* using the function ***oml.glm***. \n\nThis method runs the in-database ***oml.glm*** algorithm in-database using the provided settings. The settings are supplied as key-value pairs. In this example we specify feature generation and feature selection. For more information, refer to the ***oml.glm*** help file.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Build a GLM regression model for predicting YRS_RESIDENCE using the function oml.glm.

\n

This method runs the in-database oml.glm algorithm in-database using the provided settings. The settings are supplied as key-value pairs. In this example we specify feature generation and feature selection. For more information, refer to the oml.glm help file.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-635905665","id":"20210302-002652_1948647535","dateCreated":"2021-01-12T21:20:52+0000","dateStarted":"2021-03-02T21:13:36+0000","dateFinished":"2021-03-02T21:13:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"text":"%python\n\nhelp(oml.glm)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Help on class glm in module oml.algo.glm:\n\nclass glm(oml.algo.model.odmModel)\n | glm(mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | \n | In-database `Generalized Linear Models `_\n | \n | Builds Generalized Linear Models (GLM), which include and extend the class of \n | linear models (linear regression), to be used for classification or regression. \n | This function exposes the corresponding Oracle Advanced Analytics in-database algorithm.\n | Generalized linear models relax the restrictions on linear models, which are often \n | violated in practice. For example, binary (yes/no or 0/1) responses do not have same \n | variance across classes. This model uses a parametric modeling technique. Parametric \n | models make assumptions about the distribution of the data. When the assumptions are \n | met, parametric models can be more efficient than non-parametric models.\n | \n | :Attributes:\n | \n | **coef** : oml.DataFrame\n | \n | The coefficients of the GLM model, one for each predictor variable.\n | It includes the following components:\n | \n | - nonreference: The target value used as nonreference\n | - name: The attribute name\n | - level: The attribute value\n | - estimate: The estimated coefficient\n | \n | **fit_details**: oml.DataFrame\n | \n | The model fit details such as adjusted_r_square, error_mean_square and so on.\n | It includes the following components:\n | \n | - name: The fit detail name\n | - value: The fit detail value\n | \n | **deviance**: float\n | \n | Minus twice the maximized log-likelihood, up to a constant.\n | \n | **null_deviance**: float\n | \n | The deviance for the null (intercept only) model.\n | \n | **aic**: float\n | \n | Akaike information criterion.\n | \n | **rank**: integer\n | \n | The numeric rank of the fitted model.\n | \n | **df_residual**: float\n | \n | The residual degrees of freedom.\n | \n | **df_null**: float\n | \n | The residual degrees of freedom for the null model.\n | \n | **converged**: bool\n | \n | The indicator for whether the model converged.\n | \n | **nonreference**: int or str\n | \n | For logistic regression, the response values that represents success.\n | \n | Method resolution order:\n | glm\n | oml.algo.model.odmModel\n | builtins.object\n | \n | Methods defined here:\n | \n | __init__(self, mining_function='CLASSIFICATION', model_name=None, model_owner=None, **params)\n | Initializes an instance of glm object.\n | \n | Parameters\n | ----------\n | mining_function : 'CLASSIFICATION' or 'REGRESSION', 'CLASSIFICATION' (default)\n | Type of model mining functionality\n | model_name : string or None (default)\n | The name of an existing database Generalized Linear Model to create an oml.glm object from.\n | The specified database model is not dropped when the oml.glm object is deleted.\n | model_owner: string or None (default)\n | The owner name of the existing Generalized Linear Model\n | The current database user by default\n | params : key-value pairs or dict\n | Oracle Advanced Analytics parameter settings. Each list element's name and\n | value refer to the parameter setting name and value, respectively.\n | The setting value must be numeric or string. Refer to `Oracle Data Mining\n | Model Settings `_\n | for applicable parameters and valid values. Global and Automatic Data\n | Preparation Settings in Table 5-5 apply generally to the model.\n | Mining Function Settings for Classification and `Algorithm-specific\n | Settings `_\n | are applicable to Generalized Linear Model model.\n | \n | __repr__(self)\n | \n | fit(self, x, y, model_name=None, case_id=None, ctx_settings=None)\n | Fits a GLM Model according to the training data and parameter settings.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | model_name : string or None (default)\n | User-specified model name.\n | The user-specified database model is not dropped when oml.glm object is deleted.\n | If None, a system-generated model name will be used.\n | The system-generated model is dropped when oml.glm object is deleted\n | unless oml.glm object is saved into a datastore.\n | case_id : string or None (default)\n | The name of a column that contains unique case identifiers.\n | ctx_settings : dict or None (default)\n | A list to specify Oracle Text attribute-specific settings.\n | This argument is applicable to building models in Oracle Database 12.2 or later.\n | The name of each list element refers to the text column while the list value\n | is a scalar string specifying the attribute-specific text transformation.\n | The valid entries in the string include TEXT, POLICY_NAME, TOKEN_TYPE, and\n | MAX_FEATURES.\n | \n | predict(self, x, supplemental_cols=None, confint=None, level=None, proba=False, topN_attrs=False)\n | Makes predictions on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | confint : bool, False (default)\n | A logical indicator for whether to produce confidence intervals.\n | for the predicted values.\n | level : float between 0 and 1 or None (default)\n | A numeric value within [0, 1] to use for the confidence level.\n | proba : boolean, False (default)\n | Returns prediction probability if ``proba`` is True for classification.\n | topN_attrs : boolean, positive integer, False (default)\n | Returns the top N most influence attributes of the predicted target value\n | for regression if topN_attrs is not False.\n | Returns the top N most influence attributes of the highest probability class\n | for classification if topN_attrs is not False.\n | N is equal to the specified positive integer or 5 if topN_attrs is True.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. For a classification model, the results include the most\n | likely target class and optionally its probability and confidence\n | intervals. For a linear regression model, the results consist of a column\n | for the prediction and optionally its confidence intervals.\n | \n | predict_proba(self, x, supplemental_cols=None, topN=None)\n | Makes predictions and returns probability for each class on new data.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values used by the model to generate scores.\n | supplemental_cols : oml.DataFrame, oml.Float, oml.String, or None (default)\n | Data set presented with the prediction result.\n | It must be concatenatable with ``x``.\n | topN : positive integer or None (default)\n | A positive integer that restricts the returned target classes to\n | the specified number of those that have the highest probability.\n | \n | Returns\n | -------\n | pred : oml.DataFrame\n | Contains the features specified by ``supplemental_cols`` and the\n | results. The results include for each target class, the probability\n | belonging to that class.\n | \n | residuals(self, x, y)\n | Return the deviance residuals, which includes the following components:\n | - deviance: The deviance residual\n | - pearson: The Pearson residual\n | - response: The residual of the working response.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object, or string\n | Target values.\n | If y is a single column OML object, target values specified by y must be combinable with x.\n | If y is a string, y is the name of the column in x that specifies the target values.\n | \n | Return: oml.DataFrame\n | \n | score(self, x, y)\n | Makes predictions on new data, returns the mean accuracy for classifications\n | or the coefficient of determination R^2 of the prediction for regressions.\n | \n | Parameters\n | ----------\n | x : an OML object\n | Attribute values for building the model.\n | y : a single column OML object\n | Target values.\n | \n | Returns\n | -------\n | score : float\n | Mean accuracy for classifications or the coefficient of\n | determination R^2 of the prediction for regressions.\n | \n | ----------------------------------------------------------------------\n | Methods inherited from oml.algo.model.odmModel:\n | \n | export_sermodel(self, table=None, partition=None)\n | Export model.\n | \n | Parameters\n | ----------\n | table : string or None (default)\n | A name for the new table where the serialized model is saved.\n | If None, the serialized model will be saved to a temporary table.\n | partition : string or None (default)\n | Name of the partition that needs to be exported.\n | If partition is None, all partitions are exported\n | \n | Returns\n | -------\n | oml_bytes : an oml.Bytes object\n | Contains the BLOB content from the model export\n | \n | get_params(self, params=None, deep=False)\n | Fetches parameters of the model.\n | \n | Parameters\n | ----------\n | params : iterable of strings, None (default)\n | Names of parameters to fetch. If ``params`` is None,\n | fetches all settings.\n | deep : boolean, False (default)\n | Includes the computed and default parameters or not.\n | \n | Returns\n | -------\n | settings : dict mapping str to str\n | \n | set_params(self, **params)\n | Changes parameters of the model.\n | \n | Parameters\n | ----------\n | params : dict object mapping str to str\n | The key should be the name of the setting, and the value should be\n | the new setting.\n | \n | Returns\n | -------\n | model : the model itself.\n | \n | ----------------------------------------------------------------------\n | Readonly properties inherited from oml.algo.model.odmModel:\n | \n | model_owner\n | The owner name of database mining model\n | \n | ----------------------------------------------------------------------\n | Data descriptors inherited from oml.algo.model.odmModel:\n | \n | __dict__\n | dictionary for instance variables (if defined)\n | \n | __weakref__\n | list of weak references to the object (if defined)\n | \n | model_name\n | The given name of database mining model\n | \n | pivot_limit\n | The maximum number of classes, clusters, or features for which the predicted probabilities are presented after pivoted\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1860034598","id":"20210302-002652_2106554834","dateCreated":"2021-01-15T20:35:20+0000","dateStarted":"2021-03-02T21:13:37+0000","dateFinished":"2021-03-02T21:13:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%python\n\nsettings = {'GLMS_FTR_GENERATION': 'dbms_data_mining.GLMS_FTR_GENERATION_ENABLE', \n 'GLMS_FTR_SELECTION':'dbms_data_mining.GLMS_FTR_SELECTION_ENABLE'}\n\ntry:\n oml.drop(model = 'GLM_REGRESSION_MODEL')\nexcept:\n print('No such model')\n \nglm_mod = oml.glm(\"regression\", **settings)\nglm_mod.fit(TRAIN_X, TRAIN_Y, model_name = 'GLM_REGRESSION_MODEL', case_id = 'CUST_ID')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nModel Name: GLM_REGRESSION_MODEL\n\nModel Owner: OMLUSER02\n\nAlgorithm Name: Generalized Linear Model\n\nMining Function: REGRESSION\n\nTarget: YRS_RESIDENCE\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_GENERALIZED_LINEAR_MODEL\n1 GLMS_CONF_LEVEL .95\n2 GLMS_FTR_GENERATION GLMS_FTR_GENERATION_ENABLE\n3 GLMS_FTR_SELECTION GLMS_FTR_SELECTION_ENABLE\n4 GLMS_FTR_SEL_CRIT GLMS_FTR_SEL_ALPHA_INV\n5 GLMS_MAX_FEATURES 1000\n6 GLMS_PRUNE_MODEL GLMS_PRUNE_MODEL_ENABLE\n7 GLMS_SELECT_BLOCK GLMS_SELECT_BLOCK_DISABLE\n8 ODMS_DETAILS ODMS_ENABLE\n9 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n10 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n11 PREP_AUTO ON\n\nComputed Settings: \n setting name setting value\n0 GLMS_CONV_TOLERANCE .0000050000000000000004\n1 GLMS_NUM_ITERATIONS 30\n2 GLMS_RIDGE_REGRESSION GLMS_RIDGE_REG_DISABLE\n\nGlobal Statistics: \n attribute name attribute value\n0 ADJUSTED_R_SQUARE 0.509374\n1 AIC 1502.8\n2 COEFF_VAR 32.7766\n3 CONVERGED YES\n4 CORRECTED_TOTAL_DF 2708\n5 CORRECTED_TOT_SS 9534.73\n6 DEPENDENT_MEAN 4.00997\n7 ERROR_DF 2687\n8 ERROR_MEAN_SQUARE 1.72747\n9 ERROR_SUM_SQUARES 4641.71\n10 F_VALUE 134.88\n11 GMSEP 1.74162\n12 HOCKING_SP 0.000643\n13 J_P 1.7415\n14 MODEL_DF 21\n15 MODEL_F_P_VALUE 0\n16 MODEL_MEAN_SQUARE 233.001\n17 MODEL_SUM_SQUARES 4893.02\n18 NUM_PARAMS 22\n19 NUM_ROWS 2709\n20 ROOT_MEAN_SQ 1.31433\n21 R_SQ 0.513179\n22 SBIC 1632.7\n23 VALID_COVARIANCE_MATRIX YES\n\nAttributes: \nAFFINITY_CARD\nCUST_GENDER\nCUST_INCOME_LEVEL\nCUST_MARITAL_STATUS\nCUST_YEAR_OF_BIRTH\nEDUCATION\nHOUSEHOLD_SIZE\nOCCUPATION\nY_BOX_GAMES\n\nPartition: NO\n\nCoefficients: \n\n name level estimate\n0 (Intercept) None 4.620710\n1 AFFINITY_CARD None 127.971869\n2 CUST_GENDER_F None -0.402099\n3 CUST_INCOME_LEVEL_A: Below 30,000 None 0.555277\n4 CUST_INCOME_LEVEL_F: 110,000 - 129,999 None -0.267428\n5 CUST_MARITAL_STATUS_Divorc. None 124.413914\n6 CUST_MARITAL_STATUS_Widowed None 0.342010\n7 CUST_YEAR_OF_BIRTH*AFFINITY_CARD None -0.065059\n8 CUST_YEAR_OF_BIRTH*CUST_MARITAL_STATUS_Divorc. None -0.063288\n9 CUST_YEAR_OF_BIRTH*CUST_YEAR_OF_BIRTH*OCCUPATI... None 0.001535\n10 CUST_YEAR_OF_BIRTH*OCCUPATION_Exec. None -6.056116\n11 EDUCATION_< Bach. None -0.228723\n12 EDUCATION_PhD None 0.729161\n13 EDUCATION_Profsc None 0.528395\n14 HOUSEHOLD_SIZE_4-5 None -0.355725\n15 OCCUPATION_Crafts*EDUCATION_Masters None -4.353282\n16 OCCUPATION_Exec. None 5974.114331\n17 OCCUPATION_Handler None -0.506399\n18 OCCUPATION_House-s None -1.028326\n19 OCCUPATION_Other None -0.360957\n20 OCCUPATION_Transp. None 0.373321\n21 Y_BOX_GAMES None -1.946874\n\nFit Details: \n\n name value\n0 ADJUSTED_R_SQUARE 0.509374\n1 AIC 1502.803345\n2 COEFF_VAR 32.776625\n3 CORRECTED_TOTAL_DF 2708.000000\n4 CORRECTED_TOT_SS 9534.730897\n5 DEPENDENT_MEAN 4.009967\n6 ERROR_DF 2687.000000\n7 ERROR_MEAN_SQUARE 1.727468\n8 ERROR_SUM_SQUARES 4641.706551\n9 F_VALUE 134.880158\n10 GMSEP 1.741617\n11 HOCKING_SP 0.000643\n12 J_P 1.741497\n13 MODEL_CONVERGED 1.000000\n14 MODEL_DF 21.000000\n15 MODEL_F_P_VALUE 0.000000\n16 MODEL_MEAN_SQUARE 233.001159\n17 MODEL_SUM_SQUARES 4893.024346\n18 NUM_PARAMS 22.000000\n19 NUM_ROWS 2709.000000\n20 ROOT_MEAN_SQ 1.314332\n21 R_SQ 0.513179\n22 SBIC 1632.698711\n23 VALID_COVARIANCE_MATRIX 1.000000\n\nRank: \n\n22\n\nDeviance: \n\n4641.706551\n\nAIC: \n\n1503\n\nNull Deviance: \n\n9534.730897\n\nDF Residual: \n\n2687.0\n\nDF Null: \n\n2708.0\n\nConverged: \n\nTrue\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1316697346","id":"20210302-002652_591182820","dateCreated":"2021-01-12T21:21:24+0000","dateStarted":"2021-03-02T21:13:38+0000","dateFinished":"2021-03-02T21:13:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%md\n.\n\nDisplay model fit details to understand the model's key statistics. Locate the values of Root Mean Square Error *ROOT_MEAN_SQ* and R-squared *R_SQ* from the output. RMSE and R-squared are used to evaluate baseline performance of the model.\n\nRMSE is a measure of the differences between values predicted by a model and the values observed. A good model should have a low RMSE. But at the same time, a model with very low RMSE has the potential to overfit.\n\nR-Squared is a statistical measure that represents the goodness of fit of a regression model. The ideal value for R-squared is 1. The closer the value of R-squared is to 1, the better the model fit. For example, if the R-squared of a model is 0.50, then only about half of the observed variation can be explained by the model's inputs.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Display model fit details to understand the model's key statistics. Locate the values of Root Mean Square Error ROOT_MEAN_SQ and R-squared R_SQ from the output. RMSE and R-squared are used to evaluate baseline performance of the model.

\n

RMSE is a measure of the differences between values predicted by a model and the values observed. A good model should have a low RMSE. But at the same time, a model with very low RMSE has the potential to overfit.

\n

R-Squared is a statistical measure that represents the goodness of fit of a regression model. The ideal value for R-squared is 1. The closer the value of R-squared is to 1, the better the model fit. For example, if the R-squared of a model is 0.50, then only about half of the observed variation can be explained by the model's inputs.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1557741349","id":"20210302-002652_1680748890","dateCreated":"2021-01-12T21:21:40+0000","dateStarted":"2021-03-02T21:13:46+0000","dateFinished":"2021-03-02T21:13:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"text":"%python\n\nz.show(glm_mod.fit_details)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"name":"string","value":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"name\tvalue\nADJUSTED_R_SQUARE\t0.5093743672999828\nAIC\t1502.8033446013962\nCOEFF_VAR\t32.77662502584026\nCORRECTED_TOTAL_DF\t2708.0\nCORRECTED_TOT_SS\t9534.730897009955\nDEPENDENT_MEAN\t4.009966777408638\nERROR_DF\t2687.0\nERROR_MEAN_SQUARE\t1.727468012913557\nERROR_SUM_SQUARES\t4641.706550698727\nF_VALUE\t134.8801584784037\nGMSEP\t1.7416165687323748\nHOCKING_SP\t0.0006431377561107807\nJ_P\t1.7414969151963544\nMODEL_CONVERGED\t1.0\nMODEL_DF\t21.0\nMODEL_F_P_VALUE\t0.0\nMODEL_MEAN_SQUARE\t233.0011593481537\nMODEL_SUM_SQUARES\t4893.024346311227\nNUM_PARAMS\t22.0\nNUM_ROWS\t2709.0\nROOT_MEAN_SQ\t1.314331774292\nR_SQ\t0.5131790712463271\nSBIC\t1632.6987111272683\nVALID_COVARIANCE_MATRIX\t1.0\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_650380583","id":"20210302-002652_550465736","dateCreated":"2021-01-12T21:22:07+0000","dateStarted":"2021-03-02T21:13:47+0000","dateFinished":"2021-03-02T21:13:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"text":"%md\n\n.\nDisplay model coefficients to estimate the relationship between the predictor and response variables.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display model coefficients to estimate the relationship between the predictor and response variables.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-483547797","id":"20210302-002652_646503658","dateCreated":"2021-01-12T21:22:24+0000","dateStarted":"2021-03-02T21:13:47+0000","dateFinished":"2021-03-02T21:13:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%python\n\nglm_mod.coef\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" name level estimate\n0 (Intercept) None 4.620710\n1 Y_BOX_GAMES None -1.946874\n2 AFFINITY_CARD None 127.971869\n3 CUST_GENDER_F None -0.402099\n4 EDUCATION_< Bach. None -0.228723\n5 OCCUPATION_Exec. None 5974.114331\n6 OCCUPATION_Other None -0.360957\n7 CUST_MARITAL_STATUS_Divorc. None 124.413914\n8 OCCUPATION_Handler None -0.506399\n9 EDUCATION_Profsc None 0.528395\n10 CUST_INCOME_LEVEL_F: 110,000 - 129,999 None -0.267428\n11 OCCUPATION_Transp. None 0.373321\n12 CUST_MARITAL_STATUS_Widowed None 0.342010\n13 CUST_INCOME_LEVEL_A: Below 30,000 None 0.555277\n14 HOUSEHOLD_SIZE_4-5 None -0.355725\n15 EDUCATION_PhD None 0.729161\n16 OCCUPATION_House-s None -1.028326\n17 CUST_YEAR_OF_BIRTH*AFFINITY_CARD None -0.065059\n18 CUST_YEAR_OF_BIRTH*OCCUPATION_Exec. None -6.056116\n19 CUST_YEAR_OF_BIRTH*CUST_MARITAL_STATUS_Divorc. None -0.063288\n20 OCCUPATION_Crafts*EDUCATION_Masters None -4.353282\n21 CUST_YEAR_OF_BIRTH*CUST_YEAR_OF_BIRTH*OCCUPATI... None 0.001535\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1580802230","id":"20210302-002652_1613602884","dateCreated":"2021-01-12T21:22:43+0000","dateStarted":"2021-03-02T21:13:48+0000","dateFinished":"2021-03-02T21:13:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%md\n\n.\nMake predictions using test data and display results.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Make predictions using test data and display results.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1913355873","id":"20210302-002652_1964829178","dateCreated":"2021-01-12T21:22:56+0000","dateStarted":"2021-03-02T21:13:49+0000","dateFinished":"2021-03-02T21:13:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"text":"%python\n\nRES_DF = glm_mod.predict(TEST_X, supplemental_cols = TEST)\n\nz.show(RES_DF[['PREDICTION', 'YRS_RESIDENCE'] + RES_DF.columns])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PREDICTION":"string","YRS_RESIDENCE":"string","CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","Y_BOX_GAMES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"PREDICTION\tYRS_RESIDENCE\tCUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\tPREDICTION\n4.27143563955029\t2\t100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4.27143563955029\n2.0841569384336807\t2\t101232\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n5.496280188854982\t5\t103791\tM\tDivorc.\t1952\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tProf.\t5\t0\t5.496280188854982\n2.4451138050702506\t2\t102308\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tProf.\t2\t1\t2.4451138050702506\n4.817396005119761\t4\t100558\tM\tMarried\t1964\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t3\tMachine\t4\t0\t4.817396005119761\n2.0937805299594032\t4\t103401\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tCrafts\t4\t1\t2.0937805299594032\n6.188849878882095\t0\t102740\tF\tDivorc.\t1929\tK: 250,000 - 299,999\t15000\t10th\t0\t2\tOther\t0\t0\t6.188849878882095\n4.167230377040099\t3\t103829\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t9+\tMachine\t3\t0\t4.167230377040099\n3.2022317747854605\t3\t104077\tM\tNeverM\t1975\tL: 300,000 and above\t9000\tProfsc\t0\t2\tProf.\t3\t1\t3.2022317747854605\n5.336590639783026\t5\t101798\tM\tMarried\t1960\tG: 130,000 - 149,999\t15000\tHS-grad\t1\t3\tExec.\t5\t0\t5.336590639783026\n4.39198747959714\t5\t101315\tM\tMarried\t1954\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t3\tCrafts\t5\t0\t4.39198747959714\n3.9898880518921436\t1\t101297\tF\tSepar.\t1960\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tSales\t1\t0\t3.9898880518921436\n4.735306248853703\t4\t100019\tM\tMarried\t1971\tE: 90,000 - 109,999\t7000\tAssoc-V\t1\t3\tTransp.\t4\t0\t4.735306248853703\n4.549017533704358\t5\t102893\tF\tDivorc.\t1957\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t9+\tCleric.\t5\t0\t4.549017533704358\n4.620710275658258\t4\t104459\tM\tMarried\t1963\tL: 300,000 and above\t11000\t7th-8th\t0\t3\tSales\t4\t0\t4.620710275658258\n4.523623312122254\t5\t102894\tM\tDivorc.\t1968\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t2\tExec.\t5\t0\t4.523623312122254\n3.590225709481263\t5\t102561\tF\tSepar.\t1954\tF: 110,000 - 129,999\t9000\t10th\t0\t9+\tOther\t5\t0\t3.590225709481263\n4.620710275658258\t3\t103302\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4.620710275658258\n4.687278710880975\t5\t101044\tM\tMarried\t1966\tL: 300,000 and above\t11000\tMasters\t1\t3\tProf.\t5\t0\t4.687278710880975\n4.620710275658258\t4\t103065\tM\tNeverM\t1963\tI: 170,000 - 189,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4.620710275658258\n2.6738366011313683\t4\t101724\tM\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tMachine\t4\t1\t2.6738366011313683\n4.42704412240343\t3\t102815\tM\tMarried\t1970\tL: 300,000 and above\t7000\tHS-grad\t1\t3\tSales\t3\t0\t4.42704412240343\n2.271737173426372\t1\t101956\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tProf.\t1\t1\t2.271737173426372\n4.492102769522802\t3\t103778\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tProf.\t3\t0\t4.492102769522802\n4.198321326342324\t3\t101170\tM\tMarried\t1970\tL: 300,000 and above\t7000\t< Bach.\t1\t3\tProf.\t3\t0\t4.198321326342324\n5.2728065349554925\t5\t103583\tM\tMarried\t1957\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tMachine\t5\t0\t5.2728065349554925\n4.6450993739992725\t5\t103746\tF\tMarried\t1955\tD: 70,000 - 89,999\t9000\tHS-grad\t1\t4-5\tCleric.\t5\t0\t4.6450993739992725\n1.6872893498752615\t2\t102241\tF\tMarried\t1981\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t4-5\tSales\t2\t1\t1.6872893498752615\n5.2728065349554925\t5\t100577\tM\tMarried\t1957\tH: 150,000 - 169,999\t7000\tBach.\t1\t3\tMachine\t5\t0\t5.2728065349554925\n2.6738366011313683\t3\t101739\tM\tMarried\t1974\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tSales\t3\t1\t2.6738366011313683\n4.381524184917254\t5\t103878\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t15000\t< Bach.\t0\t9+\tProtec.\t5\t0\t4.381524184917254\n4.39198747959714\t2\t103391\tM\tNeverM\t1970\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tSales\t2\t0\t4.39198747959714\n4.620710275658258\t6\t102644\tM\tNeverM\t1967\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4.620710275658258\n4.144859466996493\t4\t103146\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4.144859466996493\n4.398011812104102\t3\t103000\tF\tDivorc.\t1963\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tCleric.\t3\t0\t4.398011812104102\n1.7755861055298254\t2\t103704\tF\tNeverM\t1982\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t9+\tSales\t2\t1\t1.7755861055298254\n4.2597534090216875\t6\t103767\tM\tMarried\t1947\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4.2597534090216875\n4.114311595632834\t5\t104253\tM\tMarried\t1973\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tHandler\t5\t0\t4.114311595632834\n4.39198747959714\t5\t103069\tM\tMarried\t1965\tH: 150,000 - 169,999\t11000\t< Bach.\t0\t3\tTechSup\t5\t0\t4.39198747959714\n5.239259680252559\t10\t102127\tM\tMarried\t1954\tI: 170,000 - 189,999\t9000\t< Bach.\t1\t3\tSales\t10\t0\t5.239259680252559\n2.3128797344947984\t1\t103840\tM\tNeverM\t1984\tL: 300,000 and above\t9000\t11th\t0\t1\tOther\t1\t1\t2.3128797344947984\n4.9139664446556\t7\t101679\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\t< Bach.\t1\t3\tCrafts\t7\t0\t4.9139664446556\n8.733756193388217\t7\t102075\tM\tMarried\t1936\tD: 70,000 - 89,999\t3000\tHS-grad\t1\t3\tExec.\t7\t0\t8.733756193388217\n2.6738366011313683\t2\t102688\tM\tMarried\t1976\tB: 30,000 - 49,999\t1500\tBach.\t0\t3\tTechSup\t2\t1\t2.6738366011313683\n5.594278222262773\t7\t103732\tF\tNeverM\t1954\tB: 30,000 - 49,999\t3000\tProfsc\t1\t2\tProf.\t7\t0\t5.594278222262773\n2.449734835758136\t4\t101640\tM\tNeverM\t1974\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tExec.\t4\t1\t2.449734835758136\n3.9898880518921436\t5\t102373\tF\tSepar.\t1952\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tSales\t5\t0\t3.9898880518921436\n2.71629578498505\t3\t100468\tM\tNeverM\t1978\tH: 150,000 - 169,999\t1500\tBach.\t0\t2\tExec.\t3\t1\t2.71629578498505\n5.2728065349554925\t7\t104278\tM\tMarried\t1957\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tSales\t7\t0\t5.2728065349554925\n4.234703732005073\t4\t100838\tM\tMarried\t1973\tD: 70,000 - 89,999\t5000\tBach.\t1\t3\tExec.\t4\t0\t4.234703732005073\n4.620710275658258\t5\t100986\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.765308253166815\t4\t103315\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tTransp.\t4\t0\t4.765308253166815\n2.4451138050702506\t3\t104171\tM\tMarried\t1975\tJ: 190,000 - 249,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t1\t2.4451138050702506\n2.2891380338460294\t3\t101584\tF\tNeverM\t1976\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tExec.\t3\t1\t2.2891380338460294\n4.557161416642202\t4\t100176\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tProtec.\t4\t0\t4.557161416642202\n3.501928953826699\t3\t103870\tF\tMarried\t1969\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t4-5\tOther\t3\t0\t3.501928953826699\n2.3128797344947984\t2\t104218\tM\tNeverM\t1982\tE: 90,000 - 109,999\t9000\tAssoc-V\t0\t2\tOther\t2\t1\t2.3128797344947984\n4.620710275658258\t6\t100290\tM\tMarried\t1925\tC: 50,000 - 69,999\t5000\t7th-8th\t0\t3\tFarming\t6\t0\t4.620710275658258\n4.620710275658258\t9\t104160\tM\tNeverM\t1961\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tFarming\t9\t0\t4.620710275658258\n2.167437921105945\t1\t103770\tM\tNeverM\t1985\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tHandler\t1\t1\t2.167437921105945\n6.019963445685235\t6\t102289\tM\tMarried\t1942\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCleric.\t6\t0\t6.019963445685235\n4.294897496722115\t4\t100249\tF\tNeverM\t1966\tJ: 190,000 - 249,999\t15000\tMasters\t0\t1\tExec.\t4\t0\t4.294897496722115\n4.39198747959714\t6\t101036\tM\tMarried\t1945\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t3\tTechSup\t6\t0\t4.39198747959714\n5.8247875043270625\t6\t100827\tM\tMarried\t1945\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tCleric.\t6\t0\t5.8247875043270625\n2.6738366011313683\t2\t102213\tM\tNeverM\t1975\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t6-8\tMachine\t2\t1\t2.6738366011313683\n4.887175654444039\t2\t102590\tF\tWidowed\t1962\tA: Below 30,000\t1500\t< Bach.\t0\t2\t?\t2\t0\t4.887175654444039\n4.620710275658258\t4\t101034\tM\tNeverM\t1966\tH: 150,000 - 169,999\t10000\tMasters\t0\t9+\tProf.\t4\t0\t4.620710275658258\n4.2597534090216875\t6\t103460\tM\tMarried\t1945\tG: 130,000 - 149,999\t5000\tBach.\t0\t3\tOther\t6\t0\t4.2597534090216875\n2.043014377365254\t0\t101617\tF\tNeverM\t1981\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t1\t?\t0\t1\t2.043014377365254\n4.005980935943626\t3\t101968\tM\tMarried\t1973\tI: 170,000 - 189,999\t1500\t< Bach.\t1\t3\tExec.\t3\t0\t4.005980935943626\n4.144859466996493\t4\t100031\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4.144859466996493\n3.862885820463269\t7\t102742\tF\tMarried\t1950\tG: 130,000 - 149,999\t5000\tBach.\t0\t4-5\tCleric.\t7\t0\t3.862885820463269\n4.620710275658258\t4\t104139\tM\tNeverM\t1966\tH: 150,000 - 169,999\t3000\tMasters\t0\t9+\tProf.\t4\t0\t4.620710275658258\n5.116551671193591\t6\t104313\tM\tDivorc.\t1958\tE: 90,000 - 109,999\t1500\tBach.\t0\t2\tProf.\t6\t0\t5.116551671193591\n4.218610847953261\t3\t102495\tF\tNeverM\t1973\tB: 30,000 - 49,999\t5000\tMasters\t0\t2\tCleric.\t3\t0\t4.218610847953261\n4.03103061296057\t4\t101624\tM\tNeverM\t1966\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t1\tOther\t4\t0\t4.03103061296057\n5.727061623918985\t6\t100771\tF\tDivorc.\t1942\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tCleric.\t6\t0\t5.727061623918985\n1.9107803067898017\t1\t101921\tF\tNeverM\t1978\tL: 300,000 and above\t11000\tBach.\t0\t2\tOther\t1\t1\t1.9107803067898017\n4.218610847953261\t3\t100551\tF\tMabsent\t1964\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tSales\t3\t0\t4.218610847953261\n2.4451138050702506\t2\t103676\tM\tNeverM\t1979\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t2\tSales\t2\t1\t2.4451138050702506\n1.9000096492705163\t3\t103245\tM\tMarried\t1978\tF: 110,000 - 129,999\t1500\tAssoc-A\t0\t3\tHandler\t3\t1\t1.9000096492705163\n4.218610847953261\t4\t101868\tF\tNeverM\t1960\tC: 50,000 - 69,999\t3000\t9th\t0\t1\tSales\t4\t0\t4.218610847953261\n3.8576539813166915\t4\t100893\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tOther\t4\t0\t3.8576539813166915\n2.004308901590943\t3\t103628\tF\tNeverM\t1974\tF: 110,000 - 129,999\t5000\tBach.\t0\t1\tCleric.\t3\t1\t2.004308901590943\n5.663158417671838\t5\t101063\tM\tMarried\t1951\tE: 90,000 - 109,999\t10000\tHS-grad\t1\t3\tProf.\t5\t0\t5.663158417671838\n1.7755861055298254\t2\t100774\tF\tNeverM\t1983\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t1.7755861055298254\n2.6738366011313683\t0\t101665\tM\tNeverM\t1985\tH: 150,000 - 169,999\t5000\t11th\t0\t1\tProtec.\t0\t1\t2.6738366011313683\n2.6738366011313683\t2\t103015\tM\tNeverM\t1979\tK: 250,000 - 299,999\t9000\tBach.\t0\t1\t?\t2\t1\t2.6738366011313683\n4.620710275658258\t3\t100588\tM\tMarried\t1969\tE: 90,000 - 109,999\t5000\tBach.\t0\t3\tProf.\t3\t0\t4.620710275658258\n4.620710275658258\t3\t101274\tM\tMarried\t1969\tK: 250,000 - 299,999\t7000\t11th\t0\t3\tMachine\t3\t0\t4.620710275658258\n2.167437921105945\t2\t102199\tM\tNeverM\t1984\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.267704126988065\t5\t101413\tF\tNeverM\t1955\tH: 150,000 - 169,999\t5000\t< Bach.\t1\t2\tExec.\t5\t0\t5.267704126988065\n4.39198747959714\t5\t100279\tM\tMarried\t1965\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t3\tTechSup\t5\t0\t4.39198747959714\n2.6738366011313683\t3\t103820\tM\tNeverM\t1977\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tCrafts\t3\t1\t2.6738366011313683\n4.752337358000361\t4\t102961\tM\tMarried\t1965\tK: 250,000 - 299,999\t9000\tBach.\t1\t3\tSales\t4\t0\t4.752337358000361\n5.759728857207676\t6\t103323\tM\tMarried\t1946\tL: 300,000 and above\t15000\t< Bach.\t1\t3\tTechSup\t6\t0\t5.759728857207676\n4.70521916748571\t4\t102329\tF\tWidowed\t1929\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tTransp.\t4\t0\t4.70521916748571\n1.7653384934009486\t1\t100742\tF\tNeverM\t1985\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t1\t1\t1.7653384934009486\n5.598099770552437\t5\t101846\tM\tMarried\t1952\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tCleric.\t5\t0\t5.598099770552437\n1.5550552792998091\t3\t103685\tF\tMarried\t1974\tG: 130,000 - 149,999\t5000\t7th-8th\t0\t4-5\tOther\t3\t1\t1.5550552792998091\n4.39198747959714\t6\t102226\tM\tMarried\t1969\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tFarming\t6\t0\t4.39198747959714\n4.218610847953261\t3\t101847\tF\tSepar.\t1958\tH: 150,000 - 169,999\t7000\t11th\t0\t9+\tCleric.\t3\t0\t4.218610847953261\n4.851395514443539\t5\t103083\tM\tMarried\t1965\tL: 300,000 and above\t7000\tBach.\t1\t3\tExec.\t5\t0\t4.851395514443539\n4.647100141957708\t3\t102631\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tExec.\t3\t0\t4.647100141957708\n5.283163195678753\t5\t100154\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t9+\tExec.\t5\t0\t5.283163195678753\n2.4451138050702506\t2\t104008\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n1.682057510728684\t1\t102478\tF\tNeverM\t1984\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n3.9511825761178327\t2\t101302\tF\tNeverM\t1965\tF: 110,000 - 129,999\t10000\tBach.\t0\t2\tCrafts\t2\t0\t3.9511825761178327\n2.004308901590943\t3\t100622\tF\tNeverM\t1974\tF: 110,000 - 129,999\t7000\tBach.\t0\t1\tCleric.\t3\t1\t2.004308901590943\n4.9940310492279325\t4\t100844\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tMasters\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n4.620710275658258\t6\t101844\tM\tMarried\t1947\tD: 70,000 - 89,999\t1500\t7th-8th\t0\t3\tCrafts\t6\t0\t4.620710275658258\n1.9107803067898017\t1\t101478\tF\tMarried\t1979\tC: 50,000 - 69,999\t3000\t1st-4th\t0\t1\tOther\t1\t1\t1.9107803067898017\n2.004308901590943\t1\t102178\tF\tNeverM\t1976\tF: 110,000 - 129,999\t7000\t5th-6th\t0\t1\tSales\t1\t1\t2.004308901590943\n4.2597534090216875\t3\t100761\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tAssoc-A\t0\t6-8\tOther\t3\t0\t4.2597534090216875\n1.7755861055298254\t2\t101481\tF\tNeverM\t1979\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tCleric.\t2\t1\t1.7755861055298254\n4.618113321060264\t5\t101304\tF\tDivorc.\t1960\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t9+\tExec.\t5\t0\t4.618113321060264\n6.002584879070184\t3\t101799\tM\tDivorc.\t1944\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tProf.\t3\t0\t6.002584879070184\n4.6921367740078495\t6\t100015\tM\tSepar.\t1959\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tExec.\t6\t0\t4.6921367740078495\n6.263821706272211\t6\t100546\tF\tWidowed\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tExec.\t6\t0\t6.263821706272211\n4.875260968881278\t6\t100887\tM\tMarried\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t1\t3\tCrafts\t6\t0\t4.875260968881278\n5.3473331062575795\t6\t103913\tF\tDivorc.\t1948\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tSales\t6\t0\t5.3473331062575795\n1.2333886081428602\t3\t101906\tF\tMarried\t1974\tE: 90,000 - 109,999\t9000\t< Bach.\t1\t4-5\tCleric.\t3\t1\t1.2333886081428602\n2.6738366011313683\t4\t100934\tM\tMabsent\t1974\tB: 30,000 - 49,999\t5000\tBach.\t0\t2\t?\t4\t1\t2.6738366011313683\n6.00509498660449\t5\t103294\tM\tMarried\t1952\tF: 110,000 - 129,999\t5000\tMasters\t1\t3\tExec.\t5\t0\t6.00509498660449\n4.620710275658258\t5\t100508\tM\tMarried\t1957\tL: 300,000 and above\t15000\tBach.\t0\t3\tTechSup\t5\t0\t4.620710275658258\n1.682057510728684\t2\t101383\tF\tNeverM\t1980\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n5.735655528677853\t6\t101722\tM\tMarried\t1946\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tExec.\t6\t0\t5.735655528677853\n5.801201708609597\t7\t101560\tM\tMarried\t1957\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5.801201708609597\n4.444718281383928\t6\t101205\tM\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tHandler\t6\t0\t4.444718281383928\n4.9940310492279325\t5\t104213\tM\tMarried\t1967\tI: 170,000 - 189,999\t5000\t9th\t0\t3\tTransp.\t5\t0\t4.9940310492279325\n4.39198747959714\t4\t103758\tM\tMarried\t1966\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4.39198747959714\n5.2395285847286175\t3\t103434\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t1\tOther\t3\t0\t5.2395285847286175\n4.331898393916036\t3\t101283\tF\tWidowed\t1959\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t9+\tCleric.\t3\t0\t4.331898393916036\n4.263379973461696\t4\t104267\tM\tNeverM\t1969\tL: 300,000 and above\t7000\t< Bach.\t1\t2\tProf.\t4\t0\t4.263379973461696\n5.841253267713\t1\t101219\tF\tMarried\t1952\tA: Below 30,000\t1500\t< Bach.\t1\t4-5\tExec.\t1\t0\t5.841253267713\n3.7342783143278098\t3\t103018\tF\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t4-5\tProf.\t3\t0\t3.7342783143278098\n4.5149820797605\t5\t101469\tF\tMarried\t1957\tI: 170,000 - 189,999\t9000\tBach.\t1\t4-5\tProf.\t5\t0\t4.5149820797605\n2.3128797344947984\t3\t103484\tM\tNeverM\t1976\tB: 30,000 - 49,999\t1500\tAssoc-A\t0\t2\tOther\t3\t1\t2.3128797344947984\n4.620710275658258\t7\t101652\tM\tMarried\t1961\tD: 70,000 - 89,999\t10000\tBach.\t0\t3\tFarming\t7\t0\t4.620710275658258\n4.620710275658258\t3\t103222\tM\tMarried\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t3\t0\t4.620710275658258\n2.6738366011313683\t3\t103885\tM\tNeverM\t1984\tI: 170,000 - 189,999\t3000\t11th\t0\t1\tMachine\t3\t1\t2.6738366011313683\n2.043014377365254\t3\t104073\tF\tNeverM\t1980\tL: 300,000 and above\t7000\t< Bach.\t0\t2\tProf.\t3\t1\t2.043014377365254\n2.167437921105945\t0\t100614\tM\tNeverM\t1986\tE: 90,000 - 109,999\t1500\t11th\t0\t1\tHandler\t0\t1\t2.167437921105945\n4.016695862526831\t4\t103386\tF\tMarried\t1963\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t4-5\tExec.\t4\t0\t4.016695862526831\n2.004308901590943\t2\t102409\tF\tNeverM\t1981\tF: 110,000 - 129,999\t3000\tBach.\t0\t1\tProf.\t2\t1\t2.004308901590943\n4.6921367740078495\t4\t100651\tM\tMarried\t1959\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t3\tExec.\t4\t0\t4.6921367740078495\n1.2730940473625907\t3\t103227\tF\tDivorc.\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tTechSup\t3\t1\t1.2730940473625907\n5.303756435059768\t4\t103750\tF\tDivorc.\t1960\tC: 50,000 - 69,999\t1500\tHS-grad\t1\t9+\tExec.\t4\t0\t5.303756435059768\n4.620710275658258\t8\t101467\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t3\tSales\t8\t0\t4.620710275658258\n4.557161416642202\t4\t100493\tM\tNeverM\t1968\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t2\tCleric.\t4\t0\t4.557161416642202\n4.218610847953261\t5\t103984\tF\tNeverM\t1967\tC: 50,000 - 69,999\t1500\tBach.\t0\t2\tCleric.\t5\t0\t4.218610847953261\n5.207747887836106\t5\t101800\tM\tMarried\t1958\tG: 130,000 - 149,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5.207747887836106\n4.620710275658258\t4\t103282\tM\tMarried\t1968\tC: 50,000 - 69,999\t1500\tAssoc-V\t0\t3\tCrafts\t4\t0\t4.620710275658258\n5.175987536186261\t5\t100686\tM\tMarried\t1957\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tMachine\t5\t0\t5.175987536186261\n4.022779018739698\t4\t102527\tF\tDivorc.\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tOther\t4\t0\t4.022779018739698\n6.451788179803501\t7\t104206\tM\tMarried\t1947\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t6.451788179803501\n4.777740329765493\t3\t103668\tF\tDivorc.\t1957\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tTechSup\t3\t0\t4.777740329765493\n4.2597534090216875\t4\t103700\tM\tMarried\t1968\tD: 70,000 - 89,999\t15000\tBach.\t0\t3\tOther\t4\t0\t4.2597534090216875\n3.5551798042987883\t4\t103797\tF\tDivorc.\t1967\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t3.5551798042987883\n2.167437921105945\t2\t102698\tM\tNeverM\t1981\tI: 170,000 - 189,999\t11000\tAssoc-A\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.012571946477934\t5\t103291\tM\tMarried\t1961\tK: 250,000 - 299,999\t7000\tHS-grad\t1\t3\tMachine\t5\t0\t5.012571946477934\n4.807541898240743\t5\t102927\tM\tNeverM\t1963\tI: 170,000 - 189,999\t11000\t< Bach.\t1\t2\tExec.\t5\t0\t4.807541898240743\n0.8117648467660246\t4\t102366\tF\tDivorc.\t1975\tL: 300,000 and above\t11000\tBach.\t1\t9+\tOther\t4\t1\t0.8117648467660246\n5.598099770552437\t3\t101713\tM\tMabsent\t1952\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t2\t?\t3\t0\t5.598099770552437\n1.2098059610856922\t2\t102344\tF\tDivorc.\t1979\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t2\tCleric.\t2\t1\t1.2098059610856922\n2.6738366011313683\t2\t100205\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tFarming\t2\t1\t2.6738366011313683\n4.144859466996493\t4\t100974\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4.144859466996493\n2.271737173426372\t0\t103452\tF\tNeverM\t1985\tD: 70,000 - 89,999\t5000\tHS-grad\t0\t1\tTechSup\t0\t1\t2.271737173426372\n4.620710275658258\t2\t101651\tM\tMarried\t1930\tG: 130,000 - 149,999\t10000\tBach.\t0\t3\t?\t2\t0\t4.620710275658258\n4.231868181045257\t4\t103278\tM\tNeverM\t1973\tL: 300,000 and above\t11000\t11th\t1\t2\tCrafts\t4\t0\t4.231868181045257\n1.682057510728684\t2\t103815\tF\tNeverM\t1976\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n2.0841569384336807\t2\t100886\tM\tNeverM\t1983\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n4.6222200637615884\t4\t101290\tM\tNeverM\t1967\tB: 30,000 - 49,999\t3000\tAssoc-V\t1\t2\tCleric.\t4\t0\t4.6222200637615884\n1.9107803067898017\t2\t101261\tF\tNeverM\t1980\tL: 300,000 and above\t9000\t10th\t0\t2\tOther\t2\t1\t1.9107803067898017\n4.620710275658258\t4\t100102\tM\tNeverM\t1966\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.620710275658258\n2.271737173426372\t2\t100492\tF\tNeverM\t1983\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.271737173426372\n4.620710275658258\t4\t100088\tM\tNeverM\t1967\tL: 300,000 and above\t11000\t7th-8th\t0\t9+\tCrafts\t4\t0\t4.620710275658258\n1.8946426238020138\t2\t100658\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t9+\tCrafts\t2\t1\t1.8946426238020138\n1.7755861055298254\t2\t101329\tF\tNeverM\t1985\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t1.7755861055298254\n2.3128797344947984\t2\t103842\tM\tNeverM\t1980\tL: 300,000 and above\t7000\tBach.\t0\t2\tOther\t2\t1\t2.3128797344947984\n5.779999961710928\t9\t101664\tM\tMarried\t1956\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t3\tExec.\t9\t0\t5.779999961710928\n4.620710275658258\t5\t101528\tM\tSepar.\t1951\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.620710275658258\n4.35700064606057\t6\t101294\tM\tDivorc.\t1962\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tHandler\t6\t0\t4.35700064606057\n5.533041123433051\t5\t104488\tM\tMarried\t1953\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t3\tCleric.\t5\t0\t5.533041123433051\n4.687278710880975\t5\t104149\tM\tMarried\t1966\tL: 300,000 and above\t9000\tMasters\t1\t3\tProf.\t5\t0\t4.687278710880975\n4.39198747959714\t3\t101181\tM\tMarried\t1972\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tCleric.\t3\t0\t4.39198747959714\n3.0003910655982535\t2\t101855\tM\tMarried\t1980\tA: Below 30,000\t1500\t< Bach.\t0\t3\tMachine\t2\t1\t3.0003910655982535\n4.114311595632834\t3\t102870\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t3\t0\t4.114311595632834\n4.293192918141725\t4\t100591\tF\tWidowed\t1962\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tSales\t4\t0\t4.293192918141725\n2.6738366011313683\t1\t104020\tM\tNeverM\t1984\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\t?\t1\t1\t2.6738366011313683\n2.043014377365254\t2\t102038\tF\tNeverM\t1981\tL: 300,000 and above\t15000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n2.167437921105945\t2\t103946\tM\tNeverM\t1983\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n4.775216668238059\t5\t102068\tF\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t4-5\tProf.\t5\t0\t4.775216668238059\n2.6738366011313683\t2\t100264\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t2.6738366011313683\n4.334286821672109\t4\t100523\tF\tMarried\t1962\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t4-5\tTransp.\t4\t0\t4.334286821672109\n5.161964571723885\t6\t102797\tF\tDivorc.\t1941\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tOther\t6\t0\t5.161964571723885\n5.286322718631027\t4\t100012\tM\tMarried\t1968\tH: 150,000 - 169,999\t15000\tPhD\t1\t3\tProf.\t4\t0\t5.286322718631027\n2.6738366011313683\t1\t103611\tM\tMarried\t1974\tL: 300,000 and above\t9000\tMasters\t0\t3\tProf.\t1\t1\t2.6738366011313683\n2.6738366011313683\t1\t100605\tM\tMarried\t1974\tL: 300,000 and above\t11000\tMasters\t0\t3\tProf.\t1\t1\t2.6738366011313683\n2.6738366011313683\t3\t102535\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t1\tProf.\t3\t1\t2.6738366011313683\n5.611615954227972\t4\t100034\tM\tMarried\t1963\tL: 300,000 and above\t9000\tPhD\t1\t3\tProf.\t4\t0\t5.611615954227972\n4.680085027523106\t6\t102959\tM\tMarried\t1962\tF: 110,000 - 129,999\t10000\tMasters\t1\t3\tProf.\t6\t0\t4.680085027523106\n4.620710275658258\t5\t100344\tM\tMarried\t1967\tH: 150,000 - 169,999\t10000\tBach.\t0\t3\tProf.\t5\t0\t4.620710275658258\n4.2597534090216875\t4\t101100\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tAssoc-V\t0\t2\tOther\t4\t0\t4.2597534090216875\n5.612170267482142\t6\t102845\tM\tMarried\t1944\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tHandler\t6\t0\t5.612170267482142\n2.4451138050702506\t3\t103193\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\t?\t3\t1\t2.4451138050702506\n1.9107803067898017\t1\t101869\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t1\t1\t1.9107803067898017\n3.530750255252329\t3\t101021\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tOther\t3\t0\t3.530750255252329\n4.620710275658258\t8\t103958\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4.620710275658258\n4.218610847953261\t4\t100667\tF\tNeverM\t1961\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4.218610847953261\n5.716469519802573\t6\t101542\tF\tNeverM\t1944\tB: 30,000 - 49,999\t1500\tMasters\t1\t2\tProf.\t6\t0\t5.716469519802573\n5.654561175927483\t4\t100899\tM\tSepar.\t1947\tJ: 190,000 - 249,999\t15000\t1st-4th\t0\t2\tExec.\t4\t0\t5.654561175927483\n4.39198747959714\t6\t104462\tM\tMarried\t1940\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tProf.\t6\t0\t4.39198747959714\n4.620710275658258\t3\t100918\tM\tNeverM\t1973\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCleric.\t3\t0\t4.620710275658258\n5.33067149871701\t5\t102184\tM\tMarried\t1952\tF: 110,000 - 129,999\t3000\tMasters\t1\t3\tSales\t5\t0\t5.33067149871701\n5.779999961710928\t7\t100701\tM\tMarried\t1956\tB: 30,000 - 49,999\t3000\tBach.\t1\t3\tExec.\t7\t0\t5.779999961710928\n2.6738366011313683\t3\t103449\tM\tMarried\t1975\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n5.112952412174806\t6\t103135\tF\tDivorc.\t1946\tJ: 190,000 - 249,999\t9000\tMasters\t0\t9+\tOther\t6\t0\t5.112952412174806\n5.369376974491331\t5\t102182\tM\tMarried\t1952\tG: 130,000 - 149,999\t10000\t< Bach.\t1\t3\tCleric.\t5\t0\t5.369376974491331\n6.218435678199853\t7\t102082\tM\tMarried\t1951\tA: Below 30,000\t1500\t10th\t1\t3\tCrafts\t7\t0\t6.218435678199853\n2.271737173426372\t0\t103050\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t11000\t11th\t0\t1\tSales\t0\t1\t2.271737173426372\n2.6738366011313683\t2\t103039\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t2.6738366011313683\n4.331898393916036\t7\t100433\tF\tWidowed\t1938\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tCleric.\t7\t0\t4.331898393916036\n4.620710275658258\t3\t102503\tM\tNeverM\t1969\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t1\tCleric.\t3\t0\t4.620710275658258\n5.116312797217688\t6\t102071\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t0\t3\tExec.\t6\t0\t5.116312797217688\n4.39198747959714\t4\t101748\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tProtec.\t4\t0\t4.39198747959714\n2.4451138050702506\t3\t102008\tM\tNeverM\t1980\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t2\tProf.\t3\t1\t2.4451138050702506\n4.557161416642202\t4\t104136\tM\tMarried\t1968\tI: 170,000 - 189,999\t3000\tMasters\t1\t3\tProf.\t4\t0\t4.557161416642202\n4.970392609596232\t5\t102210\tF\tMarried\t1950\tK: 250,000 - 299,999\t11000\tMasters\t1\t4-5\tCleric.\t5\t0\t4.970392609596232\n5.1742010331331585\t6\t104276\tM\tMarried\t1955\tK: 250,000 - 299,999\t11000\t< Bach.\t1\t3\tCrafts\t6\t0\t5.1742010331331585\n4.218610847953261\t4\t102857\tF\tSepar.\t1962\tD: 70,000 - 89,999\t3000\tBach.\t0\t9+\tProf.\t4\t0\t4.218610847953261\n2.043014377365254\t1\t103553\tF\tNeverM\t1982\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t2\tCleric.\t1\t1\t2.043014377365254\n2.3128797344947984\t3\t100857\tM\tMarried\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t3\t1\t2.3128797344947984\n2.271737173426372\t2\t102545\tF\tNeverM\t1982\tL: 300,000 and above\t9000\tAssoc-V\t0\t2\tCleric.\t2\t1\t2.271737173426372\n5.9233930061493965\t10\t101499\tM\tMarried\t1947\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t10\t0\t5.9233930061493965\n6.966099998746515\t8\t103796\tF\tNeverM\t1936\tJ: 190,000 - 249,999\t11000\tPhD\t1\t2\tProf.\t8\t0\t6.966099998746515\n4.634676530024862\t4\t101809\tM\tDivorc.\t1962\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t2\tCrafts\t4\t0\t4.634676530024862\n3.634163024402151\t3\t101642\tF\tMarried\t1971\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t4-5\tTechSup\t3\t0\t3.634163024402151\n4.620710275658258\t3\t101745\tM\tMarried\t1970\tE: 90,000 - 109,999\t3000\t12th\t0\t3\tProtec.\t3\t0\t4.620710275658258\n5.175987536186261\t3\t101637\tM\tMarried\t1971\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tTechSup\t3\t0\t5.175987536186261\n5.467982476313665\t6\t103045\tM\tMarried\t1954\tC: 50,000 - 69,999\t9000\tHS-grad\t1\t3\tCrafts\t6\t0\t5.467982476313665\n3.501928953826699\t9\t101673\tF\tMarried\t1956\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t4-5\tOther\t9\t0\t3.501928953826699\n4.965118441718914\t6\t100554\tM\tMarried\t1958\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tExec.\t6\t0\t4.965118441718914\n5.533041123433051\t8\t100185\tM\tMarried\t1953\tJ: 190,000 - 249,999\t7000\tBach.\t1\t3\tSales\t8\t0\t5.533041123433051\n4.39198747959714\t6\t102492\tM\tMarried\t1966\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tCrafts\t6\t0\t4.39198747959714\n2.6738366011313683\t4\t100340\tM\tNeverM\t1974\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t2\tFarming\t4\t1\t2.6738366011313683\n7.289624595656591\t4\t103684\tM\tMabsent\t1926\tD: 70,000 - 89,999\t5000\t7th-8th\t1\t2\tCleric.\t4\t0\t7.289624595656591\n5.533041123433051\t8\t103225\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t8\t0\t5.533041123433051\n3.8855887995717167\t4\t101668\tM\tNeverM\t1969\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tHandler\t4\t0\t3.8855887995717167\n4.2597534090216875\t5\t101396\tM\tMarried\t1966\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4.2597534090216875\n4.620710275658258\t5\t101112\tM\tMarried\t1951\tI: 170,000 - 189,999\t11000\t10th\t0\t3\tMachine\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t100432\tM\tNeverM\t1978\tI: 170,000 - 189,999\t10000\tBach.\t0\t1\tProf.\t3\t1\t2.6738366011313683\n4.39198747959714\t6\t100003\tM\tNeverM\t1969\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t2\tSales\t6\t0\t4.39198747959714\n4.081571380719595\t4\t103793\tF\tDivorc.\t1968\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCleric.\t4\t0\t4.081571380719595\n2.6738366011313683\t2\t102822\tM\tNeverM\t1984\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tCrafts\t2\t1\t2.6738366011313683\n6.567015512726357\t7\t103329\tM\tDivorc.\t1949\tH: 150,000 - 169,999\t7000\tBach.\t0\t2\tExec.\t7\t0\t6.567015512726357\n4.9940310492279325\t4\t102031\tM\tMarried\t1969\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n4.620710275658258\t4\t102200\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n1.9000096492705163\t2\t104270\tM\tNeverM\t1983\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t1\tHandler\t2\t1\t1.9000096492705163\n6.7412745937570975\t9\t100848\tF\tDivorc.\t1945\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t2\tCleric.\t9\t0\t6.7412745937570975\n4.245000714253365\t3\t102164\tF\tNeverM\t1969\tL: 300,000 and above\t9000\tHS-grad\t0\t9+\tExec.\t3\t0\t4.245000714253365\n1.6638030514042157\t3\t101595\tM\tMarried\t1977\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tOther\t3\t1\t1.6638030514042157\n5.012571946477934\t6\t100355\tM\tMarried\t1961\tE: 90,000 - 109,999\t9000\tBach.\t1\t3\tProf.\t6\t0\t5.012571946477934\n4.841028416042391\t5\t101447\tF\tDivorc.\t1956\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t2\tSales\t5\t0\t4.841028416042391\n4.620710275658258\t3\t100507\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4.620710275658258\n3.9294542556859824\t4\t100171\tF\tMarried\t1966\tC: 50,000 - 69,999\t7000\tHS-grad\t1\t4-5\tCleric.\t4\t0\t3.9294542556859824\n4.620710275658258\t5\t104041\tM\tMarried\t1956\tL: 300,000 and above\t9000\tBach.\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.0841569384336807\t2\t100200\tM\tNeverM\t1983\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n4.560621189977153\t4\t103850\tF\tWidowed\t1961\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tProf.\t4\t0\t4.560621189977153\n4.620710275658258\t4\t104400\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t10000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.620710275658258\n3.959886047579033\t4\t103864\tF\tSepar.\t1971\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tProf.\t4\t0\t3.959886047579033\n8.867940735848606\t9\t101454\tM\tMarried\t1934\tB: 30,000 - 49,999\t3000\t< Bach.\t1\t3\tExec.\t9\t0\t8.867940735848606\n4.27143563955029\t4\t100807\tF\tDivorc.\t1965\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tProf.\t4\t0\t4.27143563955029\n2.043014377365254\t3\t104240\tF\tNeverM\t1977\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\t?\t3\t1\t2.043014377365254\n5.533041123433051\t5\t102553\tM\tMarried\t1953\tI: 170,000 - 189,999\t10000\tAssoc-V\t1\t3\tTechSup\t5\t0\t5.533041123433051\n3.047157374701043\t4\t103712\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t15000\t10th\t0\t2\tTransp.\t4\t1\t3.047157374701043\n4.018283294442696\t4\t104422\tF\tDivorc.\t1969\tI: 170,000 - 189,999\t1500\tAssoc-A\t0\t9+\tSales\t4\t0\t4.018283294442696\n4.144765477186269\t6\t103331\tF\tDivorc.\t1959\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tHandler\t6\t0\t4.144765477186269\n4.620710275658258\t6\t103945\tM\tMarried\t1966\tB: 30,000 - 49,999\t5000\tHS-grad\t0\t3\tFarming\t6\t0\t4.620710275658258\n4.620710275658258\t4\t102541\tM\tMarried\t1968\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t4\t0\t4.620710275658258\n1.9107803067898017\t2\t103933\tF\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tOther\t2\t1\t1.9107803067898017\n5.906361897002725\t6\t104301\tM\tMarried\t1953\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t3\tTransp.\t6\t0\t5.906361897002725\n4.2597534090216875\t6\t101351\tM\tMarried\t1929\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4.2597534090216875\n5.898526350753855\t7\t103361\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\tBach.\t1\t3\tExec.\t7\t0\t5.898526350753855\n5.012571946477934\t5\t102309\tM\tMarried\t1961\tI: 170,000 - 189,999\t9000\tMasters\t1\t3\tSales\t5\t0\t5.012571946477934\n3.9511825761178327\t5\t101209\tF\tSepar.\t1957\tF: 110,000 - 129,999\t5000\tHS-grad\t0\t9+\tCrafts\t5\t0\t3.9511825761178327\n4.882454652239147\t4\t100713\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t4.882454652239147\n2.6738366011313683\t3\t103805\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t2.6738366011313683\n4.620710275658258\t8\t100898\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4.620710275658258\n4.719768432100864\t6\t100662\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4.719768432100864\n5.402923829194265\t6\t104433\tM\tMarried\t1955\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tCleric.\t6\t0\t5.402923829194265\n5.402923829194265\t6\t101345\tM\tMarried\t1955\tH: 150,000 - 169,999\t1500\tBach.\t1\t3\tCleric.\t6\t0\t5.402923829194265\n4.719768432100864\t6\t103457\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4.719768432100864\n2.6738366011313683\t3\t100784\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t2.6738366011313683\n1.816728666598252\t2\t101358\tM\tNeverM\t1985\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t1.816728666598252\n4.882454652239147\t4\t103523\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t4.882454652239147\n5.179839757470489\t5\t102175\tM\tDivorc.\t1957\tI: 170,000 - 189,999\t11000\tBach.\t0\t2\tMachine\t5\t0\t5.179839757470489\n4.9940310492279325\t6\t100488\tM\tNeverM\t1957\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tTransp.\t6\t0\t4.9940310492279325\n2.0841569384336807\t2\t103897\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n2.021709762010687\t3\t101334\tF\tNeverM\t1976\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t2\tExec.\t3\t1\t2.021709762010687\n2.6738366011313683\t2\t101908\tM\tNeverM\t1984\tL: 300,000 and above\t15000\tHS-grad\t0\t1\tCrafts\t2\t1\t2.6738366011313683\n2.271737173426372\t1\t103153\tF\tNeverM\t1986\tG: 130,000 - 149,999\t3000\t11th\t0\t1\t?\t1\t1\t2.271737173426372\n6.118568947507569\t6\t101536\tM\tMarried\t1944\tE: 90,000 - 109,999\t7000\t10th\t1\t3\tCrafts\t6\t0\t6.118568947507569\n4.361550770931544\t3\t101350\tM\tDivorc.\t1973\tA: Below 30,000\t1500\tBach.\t0\t2\tOther\t3\t0\t4.361550770931544\n3.3035721201152217\t4\t100132\tF\tWidowed\t1926\tI: 170,000 - 189,999\t3000\t< Bach.\t0\t2\tHouse-s\t4\t0\t3.3035721201152217\n4.9940310492279325\t6\t100516\tM\tMarried\t1966\tE: 90,000 - 109,999\t10000\t10th\t0\t3\tTransp.\t6\t0\t4.9940310492279325\n4.39198747959714\t6\t101601\tM\tMarried\t1947\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t3\tCrafts\t6\t0\t4.39198747959714\n4.2597534090216875\t4\t103076\tM\tMarried\t1963\tI: 170,000 - 189,999\t5000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n7.3244326792294885\t10\t101039\tM\tMarried\t1934\tA: Below 30,000\t1500\tHS-grad\t1\t3\t?\t10\t0\t7.3244326792294885\n4.557161416642202\t4\t102416\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tProtec.\t4\t0\t4.557161416642202\n2.3128797344947984\t0\t104155\tM\tNeverM\t1986\tL: 300,000 and above\t9000\t10th\t0\t1\tOther\t0\t1\t2.3128797344947984\n4.597113920339325\t5\t101781\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\tMasters\t1\t3\tExec.\t5\t0\t4.597113920339325\n2.271737173426372\t3\t103910\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t2.271737173426372\n4.2597534090216875\t3\t102750\tM\tMarried\t1971\tB: 30,000 - 49,999\t1500\t7th-8th\t0\t3\tOther\t3\t0\t4.2597534090216875\n1.6872893498752615\t3\t102626\tF\tMarried\t1977\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t4-5\tMachine\t3\t1\t1.6872893498752615\n4.218610847953261\t4\t103101\tF\tNeverM\t1973\tG: 130,000 - 149,999\t3000\tBach.\t0\t2\tSales\t4\t0\t4.218610847953261\n4.384864785521714\t4\t103380\tF\tMarried\t1959\tJ: 190,000 - 249,999\t15000\tMasters\t1\t4-5\tProf.\t4\t0\t4.384864785521714\n5.175987536186261\t6\t100147\tM\tMarried\t1925\tA: Below 30,000\t1500\tHS-grad\t0\t3\t?\t6\t0\t5.175987536186261\n2.081523652998186\t1\t101094\tF\tDivorc.\t1974\tA: Below 30,000\t1500\t< Bach.\t0\t9+\t?\t1\t1\t2.081523652998186\n4.114311595632834\t3\t101682\tM\tMarried\t1969\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tHandler\t3\t0\t4.114311595632834\n2.271737173426372\t3\t102566\tF\tNeverM\t1976\tJ: 190,000 - 249,999\t7000\tBach.\t0\t1\tTechSup\t3\t1\t2.271737173426372\n4.620710275658258\t4\t104268\tM\tMarried\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tMachine\t4\t0\t4.620710275658258\n2.6738366011313683\t3\t104097\tM\tMabsent\t1981\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tSales\t3\t1\t2.6738366011313683\n2.4451138050702506\t3\t102775\tM\tNeverM\t1978\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t1\tMachine\t3\t1\t2.4451138050702506\n2.2199358593989587\t4\t103618\tM\tMarried\t1974\tH: 150,000 - 169,999\t1500\tAssoc-A\t1\t3\tSales\t4\t1\t2.2199358593989587\n2.271737173426372\t0\t103485\tF\tNeverM\t1986\tG: 130,000 - 149,999\t15000\t11th\t0\t1\tCleric.\t0\t1\t2.271737173426372\n4.167230377040099\t3\t100808\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t9+\tMachine\t3\t0\t4.167230377040099\n1.9107803067898017\t3\t103178\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t2\tOther\t3\t1\t1.9107803067898017\n5.175987536186261\t5\t101894\tM\tMarried\t1961\tA: Below 30,000\t1500\tBach.\t0\t3\tSales\t5\t0\t5.175987536186261\n4.800111239809098\t4\t104402\tM\tDivorc.\t1963\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tCrafts\t4\t0\t4.800111239809098\n4.675593706258155\t4\t103426\tF\tDivorc.\t1955\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\t?\t4\t0\t4.675593706258155\n4.549017533704358\t5\t100269\tF\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tCleric.\t5\t0\t4.549017533704358\n4.933941963546828\t4\t103681\tF\tWidowed\t1961\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tTransp.\t4\t0\t4.933941963546828\n4.353282003822829\t4\t100429\tM\tNeverM\t1963\tF: 110,000 - 129,999\t3000\tAssoc-V\t0\t2\tProf.\t4\t0\t4.353282003822829\n3.862885820463269\t4\t103114\tF\tMarried\t1964\tH: 150,000 - 169,999\t1500\tMasters\t0\t4-5\t?\t4\t0\t3.862885820463269\n4.9940310492279325\t8\t103916\tM\tMarried\t1939\tH: 150,000 - 169,999\t5000\t1st-4th\t0\t3\tTransp.\t8\t0\t4.9940310492279325\n4.9940310492279325\t8\t101251\tM\tMarried\t1939\tH: 150,000 - 169,999\t3000\t1st-4th\t0\t3\tTransp.\t8\t0\t4.9940310492279325\n4.6150263804037195\t4\t103568\tM\tMarried\t1963\tF: 110,000 - 129,999\t10000\tAssoc-V\t1\t3\tCrafts\t4\t0\t4.6150263804037195\n2.271737173426372\t2\t100194\tF\tNeverM\t1981\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t2.271737173426372\n4.965118441718914\t6\t103786\tM\tMarried\t1958\tJ: 190,000 - 249,999\t10000\tBach.\t0\t3\tExec.\t6\t0\t4.965118441718914\n4.39198747959714\t6\t101275\tM\tMarried\t1943\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tProf.\t6\t0\t4.39198747959714\n3.862885820463269\t4\t100324\tF\tMarried\t1964\tH: 150,000 - 169,999\t7000\tMasters\t0\t4-5\t?\t4\t0\t3.862885820463269\n2.271737173426372\t2\t100547\tF\tMarried\t1983\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tProf.\t2\t1\t2.271737173426372\n4.620710275658258\t7\t103476\tM\tMarried\t1933\tG: 130,000 - 149,999\t7000\tBach.\t0\t3\t?\t7\t0\t4.620710275658258\n2.6738366011313683\t1\t103693\tM\tNeverM\t1976\tL: 300,000 and above\t15000\tMasters\t0\t2\tProf.\t1\t1\t2.6738366011313683\n3.9549952081657977\t3\t101639\tF\tDivorc.\t1970\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t2\t?\t3\t0\t3.9549952081657977\n5.552156053897306\t6\t100281\tM\tMarried\t1958\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tExec.\t6\t0\t5.552156053897306\n4.620710275658258\t3\t102105\tM\tMarried\t1941\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t3\t?\t3\t0\t4.620710275658258\n5.552156053897306\t6\t103071\tM\tMarried\t1958\tH: 150,000 - 169,999\t15000\tBach.\t1\t3\tExec.\t6\t0\t5.552156053897306\n4.67729504017916\t4\t101805\tM\tMarried\t1967\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t3\tExec.\t4\t0\t4.67729504017916\n5.779999961710928\t5\t101822\tM\tMarried\t1956\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tExec.\t5\t0\t5.779999961710928\n4.208147553273392\t4\t102245\tF\tDivorc.\t1966\tE: 90,000 - 109,999\t1500\tAssoc-A\t0\t9+\tProf.\t4\t0\t4.208147553273392\n2.043014377365254\t2\t104401\tF\tNeverM\t1980\tB: 30,000 - 49,999\t7000\t< Bach.\t0\t2\tSales\t2\t1\t2.043014377365254\n4.9139664446556\t2\t100884\tM\tMarried\t1959\tB: 30,000 - 49,999\t1500\t< Bach.\t1\t3\tTechSup\t2\t0\t4.9139664446556\n6.218435678199853\t8\t103179\tM\tMarried\t1951\tA: Below 30,000\t1500\tBach.\t1\t3\tProtec.\t8\t0\t6.218435678199853\n7.69669358479986\t10\t102451\tM\tWidowed\t1925\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t2\tSales\t10\t0\t7.69669358479986\n4.2597534090216875\t7\t100803\tM\tMarried\t1946\tK: 250,000 - 299,999\t11000\t11th\t0\t3\tOther\t7\t0\t4.2597534090216875\n5.51974447550856\t5\t104453\tF\tDivorc.\t1954\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t2\tExec.\t5\t0\t5.51974447550856\n4.2597534090216875\t4\t101073\tM\tMarried\t1966\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n1.682057510728684\t1\t100181\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n4.557161416642202\t4\t103549\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t4\t0\t4.557161416642202\n4.870707107250496\t5\t102629\tF\tMarried\t1957\tI: 170,000 - 189,999\t5000\tHS-grad\t1\t1\tSales\t5\t0\t4.870707107250496\n5.304318327371945\t6\t100878\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5.304318327371945\n2.167437921105945\t2\t101004\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.304318327371945\t8\t101341\tM\tMarried\t1953\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tSales\t8\t0\t5.304318327371945\n5.284045019980681\t4\t104060\tF\tDivorc.\t1949\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t2\t?\t4\t0\t5.284045019980681\n5.012571946477934\t5\t102950\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tAssoc-A\t1\t3\tCrafts\t5\t0\t5.012571946477934\n2.4451138050702506\t3\t100180\tM\tNeverM\t1981\tL: 300,000 and above\t7000\t< Bach.\t0\t1\tProf.\t3\t1\t2.4451138050702506\n2.6738366011313683\t3\t103749\tM\tMarried\t1976\tI: 170,000 - 189,999\t11000\tBach.\t0\t3\tProf.\t3\t1\t2.6738366011313683\n4.2597534090216875\t5\t100978\tM\tMarried\t1964\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4.2597534090216875\n1.9160121459363793\t2\t102236\tF\tMarried\t1979\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t4-5\t?\t2\t1\t1.9160121459363793\n4.620710275658258\t3\t102533\tM\tMarried\t1972\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tCrafts\t3\t0\t4.620710275658258\n5.759728857207676\t6\t100528\tM\tMarried\t1946\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5.759728857207676\n8.229604852908324\t7\t100731\tM\tDivorc.\t1944\tL: 300,000 and above\t9000\tPhD\t1\t9+\tProf.\t7\t0\t8.229604852908324\n3.9898880518921436\t5\t103132\tF\tMabsent\t1935\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tFarming\t5\t0\t3.9898880518921436\n4.2585633516509915\t4\t103334\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tExec.\t4\t0\t4.2585633516509915\n4.353282003822829\t4\t100724\tM\tNeverM\t1972\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tCrafts\t4\t0\t4.353282003822829\n3.9511825761178327\t5\t100529\tF\tSepar.\t1954\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tMachine\t5\t0\t3.9511825761178327\n7.433258073570897\t10\t102619\tM\tMarried\t1935\tJ: 190,000 - 249,999\t15000\tPhD\t1\t3\tProf.\t10\t0\t7.433258073570897\n5.2395285847286175\t3\t100639\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t1\tOther\t3\t0\t5.2395285847286175\n2.733429381838505\t3\t101979\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t2.733429381838505\n4.6222200637615884\t4\t103779\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tBach.\t1\t3\tSales\t4\t0\t4.6222200637615884\n4.765308253166815\t4\t102542\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tTransp.\t4\t0\t4.765308253166815\n4.218610847953261\t3\t100903\tF\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t1\tCleric.\t3\t0\t4.218610847953261\n4.818657233989711\t5\t101409\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t4.818657233989711\n5.207747887836106\t5\t103424\tM\tMarried\t1958\tE: 90,000 - 109,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5.207747887836106\n4.620710275658258\t2\t102224\tM\tMarried\t1923\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\t?\t2\t0\t4.620710275658258\n3.6268639991974965\t4\t102124\tM\tMarried\t1971\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tHandler\t4\t0\t3.6268639991974965\n6.423230572964869\t2\t102194\tF\tDivorc.\t1931\tB: 30,000 - 49,999\t7000\t11th\t0\t2\tCleric.\t2\t0\t6.423230572964869\n3.9945129028053685\t5\t101790\tF\tMarried\t1965\tE: 90,000 - 109,999\t7000\t7th-8th\t1\t4-5\tMachine\t5\t0\t3.9945129028053685\n2.6738366011313683\t3\t100832\tM\tNeverM\t1974\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t2\tCrafts\t3\t1\t2.6738366011313683\n4.246865116608205\t4\t103206\tF\tMarried\t1961\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t4-5\tExec.\t4\t0\t4.246865116608205\n3.1902845741524475\t2\t100969\tF\tMabsent\t1957\tJ: 190,000 - 249,999\t9000\t7th-8th\t0\t9+\tHouse-s\t2\t0\t3.1902845741524475\n2.6738366011313683\t2\t103662\tM\tNeverM\t1981\tH: 150,000 - 169,999\t10000\t9th\t0\t9+\tMachine\t2\t1\t2.6738366011313683\n2.271737173426372\t2\t100337\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t7000\t7th-8th\t0\t2\t?\t2\t1\t2.271737173426372\n2.6738366011313683\t3\t103882\tM\tNeverM\t1975\tH: 150,000 - 169,999\t5000\t5th-6th\t0\t2\tCrafts\t3\t1\t2.6738366011313683\n4.818657233989711\t5\t104334\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t4.818657233989711\n4.620710275658258\t7\t104105\tM\tMarried\t1936\tG: 130,000 - 149,999\t9000\t7th-8th\t0\t3\tCrafts\t7\t0\t4.620710275658258\n2.3128797344947984\t3\t102293\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\t11th\t0\t2\tOther\t3\t1\t2.3128797344947984\n2.043014377365254\t2\t103110\tF\tNeverM\t1979\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t2\tTechSup\t2\t1\t2.043014377365254\n3.9294542556859824\t3\t103745\tF\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t1\t4-5\tProf.\t3\t0\t3.9294542556859824\n4.688539939750939\t6\t102634\tM\tMarried\t1971\tA: Below 30,000\t1500\t< Bach.\t1\t3\tMachine\t6\t0\t4.688539939750939\n2.167437921105945\t2\t102442\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tHandler\t2\t1\t2.167437921105945\n4.353282003822829\t3\t102993\tM\tMarried\t1934\tF: 110,000 - 129,999\t9000\t9th\t0\t3\t?\t3\t0\t4.353282003822829\n2.271737173426372\t1\t100335\tF\tNeverM\t1986\tK: 250,000 - 299,999\t9000\t10th\t0\t1\tCleric.\t1\t1\t2.271737173426372\n5.337865182074879\t6\t101557\tM\tMarried\t1956\tK: 250,000 - 299,999\t11000\tHS-grad\t1\t3\tSales\t6\t0\t5.337865182074879\n4.042712843489156\t4\t100375\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.042712843489156\n3.7357171131487235\t3\t102204\tM\tMarried\t1973\tF: 110,000 - 129,999\t7000\t< Bach.\t1\t3\tSales\t3\t0\t3.7357171131487235\n4.620710275658258\t7\t101489\tM\tMarried\t1944\tL: 300,000 and above\t15000\tAssoc-V\t0\t3\tSales\t7\t0\t4.620710275658258\n4.620710275658258\t3\t103638\tM\tNeverM\t1969\tE: 90,000 - 109,999\t10000\tBach.\t0\t9+\tCrafts\t3\t0\t4.620710275658258\n4.612827900983575\t4\t101152\tM\tNeverM\t1961\tE: 90,000 - 109,999\t5000\t< Bach.\t0\t2\tExec.\t4\t0\t4.612827900983575\n5.283163195678753\t5\t103194\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t9+\tExec.\t5\t0\t5.283163195678753\n5.663158417671838\t7\t102910\tM\tMarried\t1951\tG: 130,000 - 149,999\t10000\tBach.\t1\t3\tSales\t7\t0\t5.663158417671838\n2.6738366011313683\t3\t100204\tM\tMarried\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n4.620710275658258\t4\t103515\tM\tMarried\t1968\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.620710275658258\t5\t102903\tM\tMarried\t1953\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tMachine\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t102095\tM\tNeverM\t1976\tI: 170,000 - 189,999\t9000\tAssoc-V\t0\t6-8\tCrafts\t3\t1\t2.6738366011313683\n4.777740329765493\t3\t100366\tF\tDivorc.\t1957\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t2\tTechSup\t3\t0\t4.777740329765493\n1.4146292388932553\t2\t102954\tF\tNeverM\t1982\tF: 110,000 - 129,999\t3000\t< Bach.\t0\t1\tOther\t2\t1\t1.4146292388932553\n3.9549952081657977\t4\t101264\tF\tDivorc.\t1970\tJ: 190,000 - 249,999\t15000\tAssoc-A\t0\t2\tSales\t4\t0\t3.9549952081657977\n2.4451138050702506\t1\t103899\tM\tNeverM\t1978\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t2\tCrafts\t1\t1\t2.4451138050702506\n1.8946426238020138\t2\t101347\tM\tMarried\t1979\tL: 300,000 and above\t15000\tBach.\t1\t3\tProf.\t2\t1\t1.8946426238020138\n5.936909189824931\t7\t104018\tM\tMarried\t1958\tJ: 190,000 - 249,999\t9000\tPhD\t1\t3\tProf.\t7\t0\t5.936909189824931\n4.508100357471065\t5\t103661\tM\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tSales\t5\t0\t4.508100357471065\n4.848907797536214\t4\t101075\tM\tMarried\t1960\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tSales\t4\t0\t4.848907797536214\n4.620710275658258\t4\t102294\tM\tMarried\t1966\tJ: 190,000 - 249,999\t15000\t5th-6th\t0\t3\tMachine\t4\t0\t4.620710275658258\n1.9107803067898017\t3\t100347\tF\tNeverM\t1974\tK: 250,000 - 299,999\t11000\t5th-6th\t0\t6-8\tOther\t3\t1\t1.9107803067898017\n2.818434578639925\t3\t101531\tM\tMarried\t1975\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tTransp.\t3\t1\t2.818434578639925\n4.2597534090216875\t5\t102490\tM\tMarried\t1950\tI: 170,000 - 189,999\t10000\t5th-6th\t0\t3\tOther\t5\t0\t4.2597534090216875\n2.3128797344947984\t3\t101810\tM\tNeverM\t1976\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t3\t1\t2.3128797344947984\n2.6738366011313683\t2\t102921\tM\tMarried\t1979\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tSales\t2\t1\t2.6738366011313683\n4.218610847953261\t6\t103826\tF\tNeverM\t1959\tL: 300,000 and above\t7000\tBach.\t0\t2\tProf.\t6\t0\t4.218610847953261\n2.3128797344947984\t2\t102094\tM\tMabsent\t1981\tL: 300,000 and above\t9000\t9th\t0\t6-8\tOther\t2\t1\t2.3128797344947984\n1.9160121459363793\t2\t102229\tF\tMarried\t1979\tL: 300,000 and above\t9000\tHS-grad\t0\t4-5\t?\t2\t1\t1.9160121459363793\n4.865423543092476\t7\t104147\tM\tMarried\t1969\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tTransp.\t7\t0\t4.865423543092476\n4.2597534090216875\t4\t101534\tM\tMarried\t1965\tE: 90,000 - 109,999\t3000\tAssoc-A\t0\t3\tOther\t4\t0\t4.2597534090216875\n1.9107803067898017\t3\t102621\tF\tNeverM\t1974\tL: 300,000 and above\t11000\t5th-6th\t0\t1\tOther\t3\t1\t1.9107803067898017\n4.9940310492279325\t5\t100221\tM\tSepar.\t1967\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\tTransp.\t5\t0\t4.9940310492279325\n4.114311595632834\t3\t103013\tM\tMarried\t1973\tL: 300,000 and above\t15000\tAssoc-V\t0\t3\tHandler\t3\t0\t4.114311595632834\n4.719768432100864\t5\t104173\tM\tNeverM\t1965\tE: 90,000 - 109,999\t9000\tBach.\t0\t2\tExec.\t5\t0\t4.719768432100864\n4.6592591405274675\t5\t104039\tM\tDivorc.\t1961\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tMachine\t5\t0\t4.6592591405274675\n6.491889721077243\t6\t102062\tM\tMarried\t1944\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tTransp.\t6\t0\t6.491889721077243\n4.557161416642202\t4\t102368\tM\tMarried\t1968\tE: 90,000 - 109,999\t1500\tBach.\t1\t3\tTechSup\t4\t0\t4.557161416642202\n4.39198747959714\t7\t104487\tM\tMarried\t1954\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t3\tSales\t7\t0\t4.39198747959714\n2.024759918040786\t3\t101837\tM\tMarried\t1977\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tMachine\t3\t1\t2.024759918040786\n4.353282003822829\t5\t101406\tM\tMarried\t1961\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCleric.\t5\t0\t4.353282003822829\n2.6738366011313683\t1\t103087\tM\tNeverM\t1984\tG: 130,000 - 149,999\t3000\t12th\t0\t1\t?\t1\t1\t2.6738366011313683\n4.620710275658258\t4\t104255\tM\tMarried\t1923\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.952357851112538\t5\t101321\tF\tWidowed\t1957\tH: 150,000 - 169,999\t11000\tMasters\t0\t9+\tExec.\t5\t0\t4.952357851112538\n4.9940310492279325\t3\t100718\tM\tMarried\t1970\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tTransp.\t3\t0\t4.9940310492279325\n3.9898880518921436\t6\t101231\tF\tMabsent\t1948\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t9+\tCleric.\t6\t0\t3.9898880518921436\n5.33067149871701\t5\t102651\tM\tMarried\t1952\tF: 110,000 - 129,999\t3000\tMasters\t1\t3\tProf.\t5\t0\t5.33067149871701\n3.634163024402151\t0\t101271\tF\tMarried\t1969\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t4-5\t?\t0\t0\t3.634163024402151\n5.467982476313665\t5\t103251\tM\tMarried\t1954\tI: 170,000 - 189,999\t5000\tHS-grad\t1\t3\tCrafts\t5\t0\t5.467982476313665\n1.5018168434237111\t3\t102758\tF\tDivorc.\t1978\tI: 170,000 - 189,999\t11000\tAssoc-V\t0\t9+\tCleric.\t3\t1\t1.5018168434237111\n2.6738366011313683\t3\t102005\tM\tMarried\t1974\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n5.014405047686253\t5\t100328\tM\tDivorc.\t1956\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t2\tCrafts\t5\t0\t5.014405047686253\n3.634163024402151\t4\t100077\tF\tMarried\t1959\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t4-5\tCleric.\t4\t0\t3.634163024402151\n3.4383800948106398\t4\t101592\tF\tMarried\t1968\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t4-5\tOther\t4\t0\t3.4383800948106398\n1.6226604903357895\t3\t101924\tF\tNeverM\t1977\tI: 170,000 - 189,999\t3000\tBach.\t1\t1\tCleric.\t3\t1\t1.6226604903357895\n4.620710275658258\t6\t102017\tM\tNeverM\t1939\tC: 50,000 - 69,999\t5000\t9th\t0\t6-8\tCleric.\t6\t0\t4.620710275658258\n4.6222200637615884\t4\t100192\tM\tMarried\t1967\tI: 170,000 - 189,999\t9000\tMasters\t1\t3\tProf.\t4\t0\t4.6222200637615884\n5.467982476313665\t5\t100471\tM\tMarried\t1954\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t5\t0\t5.467982476313665\n4.114311595632834\t5\t102976\tM\tNeverM\t1968\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t1\tHandler\t5\t0\t4.114311595632834\n4.39198747959714\t8\t102183\tM\tMarried\t1956\tE: 90,000 - 109,999\t5000\t< Bach.\t0\t3\tProf.\t8\t0\t4.39198747959714\n4.293806549593896\t3\t101029\tM\tDivorc.\t1971\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tMachine\t3\t0\t4.293806549593896\n4.620710275658258\t5\t101452\tM\tMarried\t1967\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t102705\tM\tMarried\t1974\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tProtec.\t3\t1\t2.6738366011313683\n1.682057510728684\t2\t103407\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n4.620710275658258\t5\t103635\tM\tMarried\t1952\tL: 300,000 and above\t9000\t9th\t0\t3\tFarming\t5\t0\t4.620710275658258\n4.620710275658258\t5\t102811\tM\tMarried\t1952\tJ: 190,000 - 249,999\t11000\t1st-4th\t0\t3\tCrafts\t5\t0\t4.620710275658258\n3.558685073507334\t3\t104376\tM\tDivorc.\t1971\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t9+\tHandler\t3\t0\t3.558685073507334\n2.6738366011313683\t3\t102446\tM\tMarried\t1976\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n1.9107803067898017\t3\t103649\tF\tNeverM\t1974\tK: 250,000 - 299,999\t7000\t5th-6th\t0\t6-8\tOther\t3\t1\t1.9107803067898017\n2.4451138050702506\t2\t101423\tM\tNeverM\t1983\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.4451138050702506\n2.6738366011313683\t3\t104017\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\t10th\t0\t2\tSales\t3\t1\t2.6738366011313683\n4.620710275658258\t3\t100072\tM\tMabsent\t1971\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t6-8\tCrafts\t3\t0\t4.620710275658258\n2.167437921105945\t2\t100787\tM\tMarried\t1980\tE: 90,000 - 109,999\t7000\t5th-6th\t0\t3\tHandler\t2\t1\t2.167437921105945\n4.114311595632834\t6\t104052\tM\tSepar.\t1957\tL: 300,000 and above\t11000\t5th-6th\t0\t2\tHandler\t6\t0\t4.114311595632834\n4.770750734865032\t5\t101332\tF\tNeverM\t1954\tH: 150,000 - 169,999\t10000\tAssoc-V\t0\t9+\tExec.\t5\t0\t4.770750734865032\n2.6738366011313683\t3\t104161\tM\tNeverM\t1975\tL: 300,000 and above\t15000\t5th-6th\t0\t6-8\tCrafts\t3\t1\t2.6738366011313683\n2.4064083292959397\t2\t100050\tM\tNeverM\t1979\tF: 110,000 - 129,999\t1500\t12th\t0\t9+\tMachine\t2\t1\t2.4064083292959397\n4.620710275658258\t4\t103561\tM\tMarried\t1960\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tFarming\t4\t0\t4.620710275658258\n4.560621189977153\t9\t102051\tF\tWidowed\t1944\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tCleric.\t9\t0\t4.560621189977153\n5.142689240716706\t7\t103550\tM\tMarried\t1959\tL: 300,000 and above\t9000\tHS-grad\t1\t3\tCrafts\t7\t0\t5.142689240716706\n4.620710275658258\t2\t103775\tM\tMarried\t1934\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t3\tSales\t2\t0\t4.620710275658258\n2.271737173426372\t2\t101241\tF\tNeverM\t1983\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tSales\t2\t1\t2.271737173426372\n2.4064083292959397\t1\t102925\tM\tNeverM\t1983\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t6-8\tCleric.\t1\t1\t2.4064083292959397\n1.5651049297006097\t4\t101303\tF\tDivorc.\t1977\tE: 90,000 - 109,999\t10000\tAssoc-V\t0\t2\tCleric.\t4\t1\t1.5651049297006097\n4.9940310492279325\t5\t104132\tM\tNeverM\t1968\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t2\tTransp.\t5\t0\t4.9940310492279325\n2.4064083292959397\t1\t104079\tM\tNeverM\t1985\tF: 110,000 - 129,999\t1500\t11th\t0\t1\tCleric.\t1\t1\t2.4064083292959397\n5.889846151446463\t9\t101607\tM\tSepar.\t1944\tG: 130,000 - 149,999\t1500\t< Bach.\t1\t2\tSales\t9\t0\t5.889846151446463\n4.353282003822829\t5\t103333\tM\tMarried\t1934\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t3\tTechSup\t5\t0\t4.353282003822829\n4.620710275658258\t5\t100999\tM\tMarried\t1951\tJ: 190,000 - 249,999\t15000\t7th-8th\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.670247601734303\t5\t100777\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t3\tTransp.\t5\t0\t4.670247601734303\n4.218610847953261\t4\t100539\tF\tNeverM\t1970\tH: 150,000 - 169,999\t10000\tMasters\t0\t2\tProf.\t4\t0\t4.218610847953261\n4.620710275658258\t7\t102785\tM\tMarried\t1946\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t3\tCleric.\t7\t0\t4.620710275658258\n3.501928953826699\t2\t102193\tF\tMarried\t1960\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t4-5\tOther\t2\t0\t3.501928953826699\n5.402923829194265\t5\t103722\tM\tMarried\t1955\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t3\tMachine\t5\t0\t5.402923829194265\n5.142689240716706\t4\t100173\tM\tMarried\t1959\tH: 150,000 - 169,999\t1500\tAssoc-A\t1\t3\tProf.\t4\t0\t5.142689240716706\n4.6969969244264576\t5\t102830\tM\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t0\t6-8\tExec.\t5\t0\t4.6969969244264576\n4.620710275658258\t3\t104413\tM\tMarried\t1944\tL: 300,000 and above\t15000\tMasters\t0\t3\t?\t3\t0\t4.620710275658258\n1.9160121459363793\t3\t104473\tF\tMarried\t1976\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t4-5\tProtec.\t3\t1\t1.9160121459363793\n4.7858353130812645\t4\t100789\tM\tDivorc.\t1959\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.7858353130812645\n4.218610847953261\t2\t102982\tF\tNeverM\t1970\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tProf.\t2\t0\t4.218610847953261\n4.484909086164933\t4\t101339\tM\tNeverM\t1965\tF: 110,000 - 129,999\t1500\tMasters\t1\t2\tProf.\t4\t0\t4.484909086164933\n5.846964018777726\t7\t101732\tF\tWidowed\t1944\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tExec.\t7\t0\t5.846964018777726\n5.799598212228275\t6\t102142\tM\tMarried\t1956\tF: 110,000 - 129,999\t10000\tPhD\t1\t3\tProf.\t6\t0\t5.799598212228275\n4.6222200637615884\t4\t100655\tM\tMarried\t1967\tL: 300,000 and above\t15000\tHS-grad\t1\t3\tSales\t4\t0\t4.6222200637615884\n5.85959558789996\t5\t104461\tM\tMarried\t1953\tA: Below 30,000\t3000\t< Bach.\t1\t3\tFarming\t5\t0\t5.85959558789996\n2.6738366011313683\t3\t100654\tM\tMarried\t1975\tD: 70,000 - 89,999\t9000\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n4.42704412240343\t3\t100039\tM\tMarried\t1970\tJ: 190,000 - 249,999\t15000\tAssoc-A\t1\t3\tProf.\t3\t0\t4.42704412240343\n2.2199358593989587\t3\t101889\tM\tMarried\t1974\tK: 250,000 - 299,999\t9000\tBach.\t1\t3\tSales\t3\t1\t2.2199358593989587\n5.779999961710928\t7\t103511\tM\tMarried\t1956\tB: 30,000 - 49,999\t5000\tBach.\t1\t3\tExec.\t7\t0\t5.779999961710928\n2.271737173426372\t1\t102807\tF\tNeverM\t1983\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t1\t?\t1\t1\t2.271737173426372\n5.07763059359732\t4\t104287\tM\tMarried\t1960\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tCrafts\t4\t0\t5.07763059359732\n4.678804828282409\t5\t100156\tM\tMarried\t1967\tG: 130,000 - 149,999\t10000\tHS-grad\t1\t3\tExec.\t5\t0\t4.678804828282409\n2.004308901590943\t3\t101278\tF\tNeverM\t1975\tF: 110,000 - 129,999\t5000\t11th\t0\t9+\tMachine\t3\t1\t2.004308901590943\n4.9940310492279325\t5\t103176\tM\tSepar.\t1967\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\tTransp.\t5\t0\t4.9940310492279325\n4.246865116608205\t4\t100166\tF\tMarried\t1961\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t4-5\tExec.\t4\t0\t4.246865116608205\n4.865423543092476\t7\t101042\tM\tMarried\t1969\tL: 300,000 and above\t7000\tHS-grad\t1\t3\tTransp.\t7\t0\t4.865423543092476\n2.6738366011313683\t3\t102145\tM\tNeverM\t1974\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tCleric.\t3\t1\t2.6738366011313683\n2.3128797344947984\t2\t103032\tM\tNeverM\t1980\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tOther\t2\t1\t2.3128797344947984\n2.6738366011313683\t3\t103853\tM\tNeverM\t1974\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t2\tCrafts\t3\t1\t2.6738366011313683\n4.620710275658258\t5\t100333\tM\tMarried\t1952\tL: 300,000 and above\t11000\t9th\t0\t3\tFarming\t5\t0\t4.620710275658258\n5.041966962557694\t5\t101214\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tOther\t5\t0\t5.041966962557694\n2.6738366011313683\t6\t104029\tM\tMarried\t1978\tL: 300,000 and above\t9000\t1st-4th\t0\t3\tFarming\t6\t1\t2.6738366011313683\n4.114311595632834\t3\t103263\tM\tMabsent\t1969\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tHandler\t3\t0\t4.114311595632834\n2.4451138050702506\t1\t102973\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tTechSup\t1\t1\t2.4451138050702506\n2.3128797344947984\t2\t100257\tM\tNeverM\t1980\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tOther\t2\t1\t2.3128797344947984\n4.620710275658258\t5\t103410\tM\tMarried\t1957\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t3\tMachine\t5\t0\t4.620710275658258\n4.653431298233045\t4\t100900\tM\tMarried\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tExec.\t4\t0\t4.653431298233045\n4.2597534090216875\t6\t101119\tM\tMarried\t1952\tL: 300,000 and above\t11000\t1st-4th\t0\t3\tOther\t6\t0\t4.2597534090216875\n2.4064083292959397\t4\t100329\tM\tNeverM\t1979\tF: 110,000 - 129,999\t1500\t10th\t0\t9+\tCrafts\t4\t1\t2.4064083292959397\n5.564552915849504\t8\t101266\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tProf.\t8\t0\t5.564552915849504\n7.419741889895377\t8\t100679\tM\tMarried\t1924\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t3\t?\t8\t0\t7.419741889895377\n4.620710275658258\t1\t101860\tM\tMarried\t1946\tK: 250,000 - 299,999\t15000\t10th\t0\t3\tCrafts\t1\t0\t4.620710275658258\n4.218610847953261\t4\t100615\tF\tMabsent\t1955\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t9+\t?\t4\t0\t4.218610847953261\n2.043014377365254\t2\t100725\tF\tNeverM\t1983\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tSales\t2\t1\t2.043014377365254\n3.992325137186259\t5\t100394\tM\tMarried\t1954\tF: 110,000 - 129,999\t7000\t9th\t0\t3\tOther\t5\t0\t3.992325137186259\n4.610246980978388\t5\t101884\tM\tDivorc.\t1966\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.610246980978388\n4.882454652239147\t6\t101824\tM\tMarried\t1963\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tSales\t6\t0\t4.882454652239147\n4.263379973461696\t3\t103699\tM\tMarried\t1969\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tProtec.\t3\t0\t4.263379973461696\n4.2597534090216875\t7\t101757\tM\tMabsent\t1951\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tOther\t7\t0\t4.2597534090216875\n1.682057510728684\t1\t103574\tF\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n4.851395514443539\t7\t101559\tM\tMarried\t1965\tE: 90,000 - 109,999\t5000\tMasters\t1\t3\tExec.\t7\t0\t4.851395514443539\n2.043014377365254\t2\t100820\tF\tNeverM\t1980\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t1\tMachine\t2\t1\t2.043014377365254\n4.620710275658258\t4\t104465\tM\tMarried\t1960\tH: 150,000 - 169,999\t10000\tBach.\t0\t3\tMachine\t4\t0\t4.620710275658258\n3.2022317747854605\t4\t102577\tM\tNeverM\t1974\tI: 170,000 - 189,999\t5000\tProfsc\t0\t6-8\tProf.\t4\t1\t3.2022317747854605\n4.620710275658258\t6\t102027\tM\tNeverM\t1956\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t6-8\tTechSup\t6\t0\t4.620710275658258\n4.1060009297660685\t4\t104491\tF\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tCleric.\t4\t0\t4.1060009297660685\n4.359059285063424\t5\t102702\tF\tDivorc.\t1952\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t2\tHandler\t5\t0\t4.359059285063424\n4.620710275658258\t4\t100764\tM\tSepar.\t1966\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t4\t0\t4.620710275658258\n2.6738366011313683\t1\t102339\tM\tNeverM\t1986\tJ: 190,000 - 249,999\t11000\t10th\t0\t2\tCrafts\t1\t1\t2.6738366011313683\n5.060599484450648\t6\t103004\tM\tMarried\t1966\tD: 70,000 - 89,999\t10000\t9th\t1\t3\tTransp.\t6\t0\t5.060599484450648\n5.402923829194265\t5\t100420\tM\tMarried\t1955\tG: 130,000 - 149,999\t7000\tHS-grad\t1\t3\tMachine\t5\t0\t5.402923829194265\n2.71629578498505\t3\t101293\tM\tMarried\t1978\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t3\t1\t2.71629578498505\n3.992325137186259\t4\t103947\tM\tMarried\t1962\tF: 110,000 - 129,999\t5000\tHS-grad\t0\t3\tOther\t4\t0\t3.992325137186259\n2.6738366011313683\t3\t100877\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tSales\t3\t1\t2.6738366011313683\n5.898526350753855\t7\t104346\tM\tMarried\t1955\tC: 50,000 - 69,999\t3000\tBach.\t1\t3\tExec.\t7\t0\t5.898526350753855\n2.043014377365254\t3\t103243\tF\tNeverM\t1974\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t1\tSales\t3\t1\t2.043014377365254\n4.610246980978388\t4\t101081\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t0\t4.610246980978388\n2.043014377365254\t2\t102692\tF\tNeverM\t1982\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n4.408102894056896\t4\t102155\tF\tNeverM\t1960\tF: 110,000 - 129,999\t10000\tHS-grad\t1\t9+\tCleric.\t4\t0\t4.408102894056896\n5.9233930061493965\t10\t104424\tM\tMarried\t1947\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t10\t0\t5.9233930061493965\n5.79327571191061\t5\t101578\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\tHS-grad\t1\t3\tCrafts\t5\t0\t5.79327571191061\n4.747006021607353\t4\t101512\tF\tNeverM\t1973\tI: 170,000 - 189,999\t1500\tProfsc\t0\t2\tProf.\t4\t0\t4.747006021607353\n4.2597534090216875\t5\t101933\tM\tNeverM\t1958\tI: 170,000 - 189,999\t3000\t9th\t0\t1\tOther\t5\t0\t4.2597534090216875\n5.878067345519241\t7\t104423\tF\tDivorc.\t1936\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tCleric.\t7\t0\t5.878067345519241\n4.620710275658258\t11\t101151\tM\tMabsent\t1950\tJ: 190,000 - 249,999\t9000\t9th\t0\t9+\tMachine\t11\t0\t4.620710275658258\n1.9160121459363793\t1\t101575\tF\tMarried\t1975\tL: 300,000 and above\t7000\tHS-grad\t0\t4-5\t?\t1\t1\t1.9160121459363793\n4.620710275658258\t11\t104026\tM\tMabsent\t1950\tJ: 190,000 - 249,999\t9000\t9th\t0\t9+\tMachine\t11\t0\t4.620710275658258\n2.271737173426372\t1\t103454\tF\tSepar.\t1977\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tSales\t1\t1\t2.271737173426372\n5.564552915849504\t8\t103931\tM\tMarried\t1949\tI: 170,000 - 189,999\t5000\t< Bach.\t1\t3\tProf.\t8\t0\t5.564552915849504\n4.218610847953261\t2\t103542\tF\tMabsent\t1956\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tSales\t2\t0\t4.218610847953261\n6.40671850511626\t5\t100404\tM\tMarried\t1949\tF: 110,000 - 129,999\t5000\tBach.\t1\t3\tExec.\t5\t0\t6.40671850511626\n4.660745627589677\t6\t101563\tF\tNeverM\t1956\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tExec.\t6\t0\t4.660745627589677\n4.620710275658258\t5\t102298\tM\tMarried\t1956\tJ: 190,000 - 249,999\t9000\t12th\t0\t3\tCleric.\t5\t0\t4.620710275658258\n2.6738366011313683\t2\t102530\tM\tNeverM\t1980\tI: 170,000 - 189,999\t5000\tHS-grad\t0\t2\tCrafts\t2\t1\t2.6738366011313683\n4.198321326342324\t3\t104045\tM\tMarried\t1970\tL: 300,000 and above\t9000\t< Bach.\t1\t3\tProf.\t3\t0\t4.198321326342324\n5.215673884535079\t4\t100607\tM\tMarried\t1966\tK: 250,000 - 299,999\t9000\tProfsc\t1\t3\tProf.\t4\t0\t5.215673884535079\n4.218610847953261\t5\t103725\tF\tSepar.\t1956\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t6-8\tProf.\t5\t0\t4.218610847953261\n4.218610847953261\t3\t101619\tF\tNeverM\t1964\tJ: 190,000 - 249,999\t11000\t11th\t0\t9+\tProf.\t3\t0\t4.218610847953261\n2.6738366011313683\t1\t103592\tM\tNeverM\t1980\tL: 300,000 and above\t7000\tBach.\t0\t1\tSales\t1\t1\t2.6738366011313683\n3.8576539813166915\t5\t102061\tF\tSepar.\t1953\tL: 300,000 and above\t15000\tHS-grad\t0\t9+\tOther\t5\t0\t3.8576539813166915\n4.1245592077617115\t4\t103520\tM\tMarried\t1945\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t3\t?\t4\t0\t4.1245592077617115\n3.3733214476912394\t3\t100940\tF\tMarried\t1969\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t4-5\tOther\t3\t0\t3.3733214476912394\n4.620710275658258\t5\t102030\tM\tMarried\t1965\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\tMachine\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t103030\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t9000\tBach.\t0\t1\tCleric.\t3\t1\t2.6738366011313683\n6.457378366780048\t5\t101972\tM\tMarried\t1950\tJ: 190,000 - 249,999\t11000\tPhD\t1\t3\tProf.\t5\t0\t6.457378366780048\n3.6817559768525854\t4\t102787\tF\tDivorc.\t1965\tI: 170,000 - 189,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t3.6817559768525854\n4.293192918141725\t4\t103597\tF\tWidowed\t1962\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tSales\t4\t0\t4.293192918141725\n4.620710275658258\t4\t102580\tM\tMarried\t1972\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t3\tMachine\t4\t0\t4.620710275658258\n4.328438620581096\t4\t102719\tM\tMarried\t1968\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tProf.\t4\t0\t4.328438620581096\n4.798873634457777\t5\t104222\tF\tNeverM\t1950\tH: 150,000 - 169,999\t15000\t< Bach.\t0\t2\tExec.\t5\t0\t4.798873634457777\n2.6738366011313683\t3\t100175\tM\tMarried\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n1.7297485337294347\t1\t103335\tF\tMarried\t1978\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t4-5\tExec.\t1\t1\t1.7297485337294347\n4.620710275658258\t3\t102936\tM\tMarried\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tCrafts\t3\t0\t4.620710275658258\n6.865061171338311\t5\t102310\tM\tNeverM\t1951\tF: 110,000 - 129,999\t7000\tPhD\t1\t2\tExec.\t5\t0\t6.865061171338311\n5.3360413912518245\t5\t104296\tM\tWidowed\t1952\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t9+\tTransp.\t5\t0\t5.3360413912518245\n2.271737173426372\t2\t103272\tF\tNeverM\t1983\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.271737173426372\n4.39198747959714\t4\t102125\tM\tSepar.\t1960\tL: 300,000 and above\t15000\t< Bach.\t0\t2\t?\t4\t0\t4.39198747959714\n2.043014377365254\t2\t103009\tF\tNeverM\t1983\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t2\tTechSup\t2\t1\t2.043014377365254\n2.043014377365254\t2\t100773\tF\tNeverM\t1981\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n4.39198747959714\t3\t102157\tM\tNeverM\t1969\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t6-8\tSales\t3\t0\t4.39198747959714\n4.620710275658258\t5\t102960\tM\tMarried\t1964\tK: 250,000 - 299,999\t11000\tAssoc-V\t0\t3\tCrafts\t5\t0\t4.620710275658258\n3.618467890575687\t4\t102251\tF\tDivorc.\t1966\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t3.618467890575687\n4.065083753532761\t3\t100384\tM\tDivorc.\t1971\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t9+\tMachine\t3\t0\t4.065083753532761\n4.296926828164629\t3\t100101\tM\tMarried\t1972\tH: 150,000 - 169,999\t7000\tBach.\t1\t3\tProf.\t3\t0\t4.296926828164629\n4.620710275658258\t7\t103742\tM\tNeverM\t1961\tB: 30,000 - 49,999\t1500\tMasters\t0\t2\tProf.\t7\t0\t4.620710275658258\n2.167437921105945\t1\t101074\tM\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t10th\t0\t1\tHandler\t1\t1\t2.167437921105945\n4.620710275658258\t6\t101128\tM\tMabsent\t1946\tI: 170,000 - 189,999\t1500\tAssoc-A\t0\t9+\tFarming\t6\t0\t4.620710275658258\n2.3128797344947984\t2\t104121\tM\tMarried\t1981\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tOther\t2\t1\t2.3128797344947984\n3.862885820463269\t4\t100116\tF\tMarried\t1963\tL: 300,000 and above\t9000\tAssoc-V\t0\t4-5\tProf.\t4\t0\t3.862885820463269\n4.560621189977153\t2\t103441\tF\tWidowed\t1941\tG: 130,000 - 149,999\t5000\tBach.\t0\t9+\tTechSup\t2\t0\t4.560621189977153\n2.6738366011313683\t4\t102782\tM\tMarried\t1975\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t3\tCrafts\t4\t1\t2.6738366011313683\n4.293806549593896\t5\t101779\tM\tDivorc.\t1971\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t1\tSales\t5\t0\t4.293806549593896\n2.167437921105945\t1\t101597\tM\tNeverM\t1985\tI: 170,000 - 189,999\t1500\t11th\t0\t1\tHandler\t1\t1\t2.167437921105945\n2.4451138050702506\t3\t102197\tM\tMarried\t1976\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t3\tCrafts\t3\t1\t2.4451138050702506\n2.271737173426372\t2\t102528\tF\tNeverM\t1981\tC: 50,000 - 69,999\t3000\tBach.\t0\t1\tProf.\t2\t1\t2.271737173426372\n1.7755861055298254\t3\t103465\tF\tNeverM\t1975\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t2\tTechSup\t3\t1\t1.7755861055298254\n5.284727782061964\t6\t101089\tM\tMarried\t1958\tF: 110,000 - 129,999\t1500\tAssoc-A\t1\t3\tExec.\t6\t0\t5.284727782061964\n7.718705140026032\t6\t100068\tM\tMarried\t1942\tC: 50,000 - 69,999\t9000\tHS-grad\t1\t3\tExec.\t6\t0\t7.718705140026032\n4.620710275658258\t5\t101848\tM\tMarried\t1952\tC: 50,000 - 69,999\t7000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t101236\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tFarming\t3\t1\t2.6738366011313683\n4.620710275658258\t3\t100027\tM\tMarried\t1969\tL: 300,000 and above\t11000\t9th\t0\t3\tCrafts\t3\t0\t4.620710275658258\n1.9387151250448273\t2\t104205\tM\tNeverM\t1980\tL: 300,000 and above\t7000\t< Bach.\t0\t1\tHandler\t2\t1\t1.9387151250448273\n2.271737173426372\t1\t102208\tF\tNeverM\t1986\tE: 90,000 - 109,999\t1500\t10th\t0\t1\tSales\t1\t1\t2.271737173426372\n4.620710275658258\t5\t101797\tM\tMarried\t1951\tK: 250,000 - 299,999\t7000\tBach.\t0\t3\tProf.\t5\t0\t4.620710275658258\n4.9940310492279325\t4\t103170\tM\tMarried\t1959\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n5.598099770552437\t5\t102573\tM\tMarried\t1952\tE: 90,000 - 109,999\t10000\tMasters\t1\t3\tProtec.\t5\t0\t5.598099770552437\n4.620710275658258\t5\t101101\tM\tMarried\t1951\tJ: 190,000 - 249,999\t15000\tAssoc-V\t0\t3\tCleric.\t5\t0\t4.620710275658258\n3.9511825761178327\t2\t102574\tF\tSepar.\t1958\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t9+\tMachine\t2\t0\t3.9511825761178327\n4.7166737269607495\t4\t103527\tM\tMarried\t1960\tH: 150,000 - 169,999\t15000\tHS-grad\t1\t3\tOther\t4\t0\t4.7166737269607495\n4.39198747959714\t5\t102686\tM\tMarried\t1955\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tProf.\t5\t0\t4.39198747959714\n2.043014377365254\t1\t101146\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t1\t1\t2.043014377365254\n4.9940310492279325\t7\t100491\tM\tMarried\t1949\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t3\tTransp.\t7\t0\t4.9940310492279325\n2.4064083292959397\t3\t103033\tM\tSepar.\t1975\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t2\tCrafts\t3\t1\t2.4064083292959397\n1.7309784748602794\t3\t101080\tM\tMarried\t1978\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t3\tCleric.\t3\t1\t1.7309784748602794\n4.859800067067212\t5\t101322\tF\tDivorc.\t1950\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t2\tOther\t5\t0\t4.859800067067212\n3.862885820463269\t4\t100122\tF\tMarried\t1954\tB: 30,000 - 49,999\t5000\tHS-grad\t0\t4-5\tCleric.\t4\t0\t3.862885820463269\n4.817396005119761\t4\t102695\tM\tMarried\t1964\tG: 130,000 - 149,999\t5000\tBach.\t1\t3\tProf.\t4\t0\t4.817396005119761\n4.39128099411736\t4\t100954\tF\tMarried\t1965\tI: 170,000 - 189,999\t15000\tProfsc\t0\t4-5\tSales\t4\t0\t4.39128099411736\n4.714452243488594\t5\t102118\tF\tDivorc.\t1958\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.714452243488594\n1.7755861055298254\t2\t104492\tF\tNeverM\t1985\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t1\t?\t2\t1\t1.7755861055298254\n2.043014377365254\t2\t103121\tF\tNeverM\t1983\tG: 130,000 - 149,999\t10000\t< Bach.\t0\t9+\tProf.\t2\t1\t2.043014377365254\n5.2728065349554925\t7\t100933\tM\tMarried\t1957\tL: 300,000 and above\t15000\tHS-grad\t1\t3\tSales\t7\t0\t5.2728065349554925\n4.1245592077617115\t3\t102383\tM\tMarried\t1970\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t3\tProf.\t3\t0\t4.1245592077617115\n4.9940310492279325\t6\t102929\tM\tMarried\t1955\tH: 150,000 - 169,999\t3000\tAssoc-A\t0\t3\tTransp.\t6\t0\t4.9940310492279325\n2.043014377365254\t1\t103858\tF\tNeverM\t1983\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t1\tCleric.\t1\t1\t2.043014377365254\n5.133303719371725\t4\t102733\tM\tMarried\t1962\tL: 300,000 and above\t15000\tMasters\t1\t3\tExec.\t4\t0\t5.133303719371725\n2.0841569384336807\t2\t104096\tM\tNeverM\t1982\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t2.0841569384336807\n4.39198747959714\t4\t103496\tM\tMarried\t1954\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4.39198747959714\n5.898359762074506\t3\t103116\tF\tWidowed\t1941\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t2\tExec.\t3\t0\t5.898359762074506\n2.271737173426372\t2\t103806\tF\tNeverM\t1981\tL: 300,000 and above\t7000\tHS-grad\t0\t1\tSales\t2\t1\t2.271737173426372\n4.620710275658258\t8\t104392\tM\tMarried\t1959\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t3\tSales\t8\t0\t4.620710275658258\n5.663158417671838\t5\t102084\tM\tMarried\t1951\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t5\t0\t5.663158417671838\n4.218610847953261\t5\t103978\tF\tNeverM\t1958\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.218610847953261\n4.114311595632834\t5\t101346\tM\tMarried\t1958\tI: 170,000 - 189,999\t11000\tAssoc-A\t0\t3\tHandler\t5\t0\t4.114311595632834\n2.271737173426372\t2\t103473\tF\tNeverM\t1981\tL: 300,000 and above\t9000\tBach.\t0\t1\tCleric.\t2\t1\t2.271737173426372\n2.4451138050702506\t2\t102827\tM\tNeverM\t1982\tL: 300,000 and above\t11000\t< Bach.\t0\t1\t?\t2\t1\t2.4451138050702506\n4.620710275658258\t2\t100797\tM\tMabsent\t1970\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tSales\t2\t0\t4.620710275658258\n4.916449655477578\t4\t103747\tF\tDivorc.\t1961\tL: 300,000 and above\t9000\tAssoc-A\t1\t9+\tProf.\t4\t0\t4.916449655477578\n2.6738366011313683\t3\t103125\tM\tMarried\t1975\tL: 300,000 and above\t15000\tHS-grad\t0\t3\tCrafts\t3\t1\t2.6738366011313683\n6.445423980890155\t5\t100738\tM\tMarried\t1949\tH: 150,000 - 169,999\t10000\t< Bach.\t1\t3\tExec.\t5\t0\t6.445423980890155\n4.620710275658258\t10\t100334\tM\tMarried\t1945\tC: 50,000 - 69,999\t5000\tBach.\t0\t3\t?\t10\t0\t4.620710275658258\n6.494916794000346\t7\t102046\tM\tMarried\t1938\tI: 170,000 - 189,999\t3000\tHS-grad\t0\t3\tExec.\t7\t0\t6.494916794000346\n2.4451138050702506\t3\t103726\tM\tMarried\t1977\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t3\tProtec.\t3\t1\t2.4451138050702506\n4.6248299703147495\t3\t102930\tM\tNeverM\t1972\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tExec.\t3\t0\t4.6248299703147495\n2.6738366011313683\t1\t103233\tM\tNeverM\t1975\tB: 30,000 - 49,999\t1500\tBach.\t0\t1\tProf.\t1\t1\t2.6738366011313683\n2.167437921105945\t2\t101281\tM\tNeverM\t1983\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n5.349871577647072\t4\t104410\tM\tMarried\t1967\tL: 300,000 and above\t11000\tPhD\t0\t3\tProf.\t4\t0\t5.349871577647072\n4.620710275658258\t3\t100480\tM\tMarried\t1970\tI: 170,000 - 189,999\t9000\t10th\t0\t3\tMachine\t3\t0\t4.620710275658258\n5.239259680252559\t5\t101176\tM\tMarried\t1954\tH: 150,000 - 169,999\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t5.239259680252559\n4.353282003822829\t4\t101065\tM\tNeverM\t1964\tF: 110,000 - 129,999\t10000\tAssoc-V\t0\t2\tMachine\t4\t0\t4.353282003822829\n2.5249098060576216\t2\t102630\tM\tNeverM\t1980\tD: 70,000 - 89,999\t3000\t< Bach.\t0\t2\tExec.\t2\t1\t2.5249098060576216\n2.6738366011313683\t2\t103003\tM\tMarried\t1982\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t3\tCrafts\t2\t1\t2.6738366011313683\n4.777740329765493\t5\t101023\tF\tDivorc.\t1957\tG: 130,000 - 149,999\t3000\tAssoc-A\t0\t2\tTechSup\t5\t0\t4.777740329765493\n4.841028416042391\t5\t102371\tF\tDivorc.\t1956\tJ: 190,000 - 249,999\t9000\tAssoc-V\t0\t2\tCleric.\t5\t0\t4.841028416042391\n1.9107803067898017\t1\t102974\tF\tNeverM\t1984\tE: 90,000 - 109,999\t10000\t10th\t0\t6-8\tOther\t1\t1\t1.9107803067898017\n2.004308901590943\t2\t104274\tF\tNeverM\t1981\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.004308901590943\n1.4146292388932553\t2\t101718\tF\tNeverM\t1984\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t6-8\tOther\t2\t1\t1.4146292388932553\n4.620710275658258\t5\t102838\tM\tNeverM\t1950\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t6-8\tCleric.\t5\t0\t4.620710275658258\n2.6738366011313683\t3\t104190\tM\tMarried\t1977\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t3\tMachine\t3\t1\t2.6738366011313683\n4.620710275658258\t5\t104091\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n2.271737173426372\t3\t104175\tF\tNeverM\t1978\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t2\tCleric.\t3\t1\t2.271737173426372\n2.043014377365254\t2\t101296\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n2.4451138050702506\t2\t102536\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tMachine\t2\t1\t2.4451138050702506\n4.370458937064541\t4\t103072\tM\tMarried\t1971\tB: 30,000 - 49,999\t7000\tBach.\t1\t3\tExec.\t4\t0\t4.370458937064541\n3.6851165195348585\t3\t103503\tF\tMarried\t1970\tB: 30,000 - 49,999\t1500\tBach.\t1\t4-5\tExec.\t3\t0\t3.6851165195348585\n4.620710275658258\t5\t104236\tM\tNeverM\t1956\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.620710275658258\n2.6738366011313683\t4\t102534\tM\tMarried\t1974\tE: 90,000 - 109,999\t7000\tBach.\t0\t3\tMachine\t4\t1\t2.6738366011313683\n4.620710275658258\t5\t103230\tM\tMarried\t1956\tD: 70,000 - 89,999\t1500\tBach.\t0\t3\tProf.\t5\t0\t4.620710275658258\n4.798873634457777\t5\t101102\tF\tNeverM\t1950\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t2\tExec.\t5\t0\t4.798873634457777\n4.6222200637615884\t4\t102655\tM\tMarried\t1967\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t4\t0\t4.6222200637615884\n2.6738366011313683\t1\t104169\tM\tNeverM\t1985\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tProf.\t1\t1\t2.6738366011313683\n4.560621189977153\t5\t101408\tF\tWidowed\t1937\tL: 300,000 and above\t15000\tBach.\t0\t2\tProf.\t5\t0\t4.560621189977153\n4.9940310492279325\t5\t101179\tM\tNeverM\t1964\tL: 300,000 and above\t11000\tAssoc-A\t0\t2\tTransp.\t5\t0\t4.9940310492279325\n2.6738366011313683\t2\t100604\tM\tNeverM\t1981\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t1\tProf.\t2\t1\t2.6738366011313683\n2.6738366011313683\t1\t100586\tM\tNeverM\t1980\tL: 300,000 and above\t9000\tBach.\t0\t1\tSales\t1\t1\t2.6738366011313683\n4.5236145619392545\t5\t103814\tM\tMarried\t1965\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tSales\t5\t0\t4.5236145619392545\n2.6450579469960465\t3\t100306\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tTransp.\t3\t1\t2.6450579469960465\n4.088946208335074\t5\t100542\tF\tSepar.\t1965\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t2\tExec.\t5\t0\t4.088946208335074\n4.2597534090216875\t5\t101910\tM\tMarried\t1950\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4.2597534090216875\n4.620710275658258\t4\t100705\tM\tMarried\t1968\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.39198747959714\t6\t102144\tM\tMabsent\t1928\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tCrafts\t6\t0\t4.39198747959714\n5.179839757470489\t5\t102359\tM\tDivorc.\t1957\tE: 90,000 - 109,999\t3000\tHS-grad\t0\t2\tCrafts\t5\t0\t5.179839757470489\n2.39808069161046\t3\t103036\tM\tMarried\t1977\tJ: 190,000 - 249,999\t10000\tBach.\t1\t3\tTransp.\t3\t1\t2.39808069161046\n4.037054945467531\t2\t103417\tF\tDivorc.\t1963\tE: 90,000 - 109,999\t3000\t11th\t0\t6-8\tOther\t2\t0\t4.037054945467531\n4.169289016042967\t4\t102609\tF\tDivorc.\t1963\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.169289016042967\n3.9945129028053685\t5\t100376\tF\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tBach.\t1\t4-5\tCleric.\t5\t0\t3.9945129028053685\n3.3733214476912394\t3\t104285\tF\tMarried\t1969\tE: 90,000 - 109,999\t7000\tHS-grad\t1\t4-5\tOther\t3\t0\t3.3733214476912394\n2.6738366011313683\t4\t102966\tM\tNeverM\t1976\tH: 150,000 - 169,999\t15000\tAssoc-V\t0\t2\tProtec.\t4\t1\t2.6738366011313683\n2.6738366011313683\t1\t103612\tM\tNeverM\t1982\tL: 300,000 and above\t9000\tAssoc-A\t0\t1\t?\t1\t1\t2.6738366011313683\n4.560621189977153\t6\t102252\tF\tWidowed\t1946\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCleric.\t6\t0\t4.560621189977153\n3.590225709481263\t5\t104398\tF\tSepar.\t1952\tF: 110,000 - 129,999\t9000\t9th\t0\t6-8\tOther\t5\t0\t3.590225709481263\n3.938507580978964\t3\t102800\tM\tDivorc.\t1973\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tMachine\t3\t0\t3.938507580978964\n4.516886767137294\t5\t100357\tM\tNeverM\t1964\tL: 300,000 and above\t11000\t< Bach.\t0\t2\tExec.\t5\t0\t4.516886767137294\n4.620710275658258\t4\t100650\tM\tMarried\t1945\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tFarming\t4\t0\t4.620710275658258\n1.949289582422736\t3\t100083\tF\tDivorc.\t1974\tA: Below 30,000\t1500\tBach.\t0\t9+\tOther\t3\t1\t1.949289582422736\n4.152954450312265\t3\t103937\tM\tDivorc.\t1969\tF: 110,000 - 129,999\t7000\tAssoc-A\t0\t2\tMachine\t3\t0\t4.152954450312265\n5.533041123433051\t6\t101208\tM\tMarried\t1953\tH: 150,000 - 169,999\t7000\tMasters\t1\t3\tProf.\t6\t0\t5.533041123433051\n2.6738366011313683\t3\t102505\tM\tNeverM\t1976\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tMachine\t3\t1\t2.6738366011313683\n4.620710275658258\t7\t104323\tM\tNeverM\t1944\tL: 300,000 and above\t9000\tBach.\t0\t2\tCrafts\t7\t0\t4.620710275658258\n4.700176316760761\t5\t102052\tF\tDivorc.\t1954\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.700176316760761\n1.9107803067898017\t2\t104106\tF\tNeverM\t1982\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tOther\t2\t1\t1.9107803067898017\n4.537309308351723\t4\t100719\tF\tMarried\t1952\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t4-5\tExec.\t4\t0\t4.537309308351723\n2.043014377365254\t1\t101199\tF\tNeverM\t1982\tL: 300,000 and above\t15000\t< Bach.\t0\t2\tSales\t1\t1\t2.043014377365254\n2.6912374615512817\t3\t101936\tM\tNeverM\t1976\tH: 150,000 - 169,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t2.6912374615512817\n2.4451138050702506\t2\t104467\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n5.336590639783026\t5\t103020\tM\tMarried\t1960\tI: 170,000 - 189,999\t1500\tMasters\t1\t3\tExec.\t5\t0\t5.336590639783026\n5.0560049860005165\t5\t101600\tM\tMarried\t1958\tF: 110,000 - 129,999\t3000\t< Bach.\t1\t3\tExec.\t5\t0\t5.0560049860005165\n2.6738366011313683\t4\t100937\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t1\t2.6738366011313683\n4.557161416642202\t4\t101203\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tSales\t4\t0\t4.557161416642202\n2.6738366011313683\t3\t103257\tM\tMarried\t1974\tH: 150,000 - 169,999\t1500\tAssoc-V\t0\t3\tProf.\t3\t1\t2.6738366011313683\n4.42704412240343\t3\t102250\tM\tMarried\t1970\tH: 150,000 - 169,999\t5000\tBach.\t1\t3\tProf.\t3\t0\t4.42704412240343\n2.6738366011313683\t2\t101634\tM\tMarried\t1979\tJ: 190,000 - 249,999\t10000\tBach.\t0\t3\tSales\t2\t1\t2.6738366011313683\n4.687278710880975\t1\t100042\tM\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t1\t0\t4.687278710880975\n3.9898880518921436\t5\t101340\tF\tMabsent\t1958\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tCleric.\t5\t0\t3.9898880518921436\n4.218610847953261\t3\t100143\tF\tNeverM\t1969\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tProf.\t3\t0\t4.218610847953261\n3.846883323797406\t3\t100124\tM\tMarried\t1939\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tHandler\t3\t0\t3.846883323797406\n2.4451138050702506\t2\t102724\tM\tNeverM\t1981\tL: 300,000 and above\t11000\t< Bach.\t0\t1\t?\t2\t1\t2.4451138050702506\n2.271737173426372\t3\t103359\tF\tNeverM\t1978\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t2.271737173426372\n4.620710275658258\t3\t100783\tM\tMarried\t1969\tK: 250,000 - 299,999\t7000\t11th\t0\t3\tCrafts\t3\t0\t4.620710275658258\n4.752337358000361\t4\t102307\tM\tMarried\t1965\tE: 90,000 - 109,999\t10000\tHS-grad\t1\t3\tCleric.\t4\t0\t4.752337358000361\n5.012571946477934\t4\t102380\tM\tMarried\t1961\tH: 150,000 - 169,999\t3000\tMasters\t1\t3\tProf.\t4\t0\t5.012571946477934\n4.03103061296057\t2\t100776\tM\tMarried\t1966\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tOther\t2\t0\t4.03103061296057\n4.597113920339325\t4\t102406\tM\tMarried\t1968\tI: 170,000 - 189,999\t10000\tHS-grad\t1\t3\tExec.\t4\t0\t4.597113920339325\n4.9940310492279325\t4\t103504\tM\tMarried\t1961\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n6.880664899802468\t6\t103214\tM\tDivorc.\t1952\tF: 110,000 - 129,999\t1500\tBach.\t1\t2\tExec.\t6\t0\t6.880664899802468\n2.271737173426372\t1\t103028\tF\tNeverM\t1978\tK: 250,000 - 299,999\t9000\tBach.\t0\t2\tCleric.\t1\t1\t2.271737173426372\n4.620710275658258\t9\t103800\tM\tMarried\t1950\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t3\tCrafts\t9\t0\t4.620710275658258\n2.6738366011313683\t3\t101502\tM\tNeverM\t1976\tI: 170,000 - 189,999\t9000\tBach.\t0\t2\tSales\t3\t1\t2.6738366011313683\n2.0937805299594032\t4\t100121\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t1\t2.0937805299594032\n4.236206594032943\t3\t101967\tF\tMarried\t1940\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t4-5\tTransp.\t3\t0\t4.236206594032943\n4.765308253166815\t5\t101387\tM\tMarried\t1966\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t3\tTransp.\t5\t0\t4.765308253166815\n3.8576539813166915\t5\t101931\tF\tSepar.\t1952\tE: 90,000 - 109,999\t1500\tAssoc-A\t0\t2\tOther\t5\t0\t3.8576539813166915\n4.39198747959714\t3\t103715\tM\tMarried\t1972\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t0\t4.39198747959714\n4.05422250995173\t3\t103364\tF\tWidowed\t1967\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t9+\tHandler\t3\t0\t4.05422250995173\n5.070436910239451\t7\t104093\tM\tMarried\t1956\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tProf.\t7\t0\t5.070436910239451\n4.620710275658258\t4\t104273\tM\tMarried\t1966\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tCleric.\t4\t0\t4.620710275658258\n4.9940310492279325\t4\t101632\tM\tSepar.\t1968\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t1\tTransp.\t4\t0\t4.9940310492279325\n4.39198747959714\t5\t101808\tM\tMarried\t1960\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tFarming\t5\t0\t4.39198747959714\n3.9898880518921436\t4\t100222\tF\tNeverM\t1972\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t2\tSales\t4\t0\t3.9898880518921436\n5.24255597140899\t4\t101270\tM\tMarried\t1966\tA: Below 30,000\t1500\tHS-grad\t1\t3\tMachine\t4\t0\t5.24255597140899\n5.2207569337037825\t5\t100948\tF\tDivorc.\t1950\tG: 130,000 - 149,999\t5000\t7th-8th\t0\t2\tMachine\t5\t0\t5.2207569337037825\n1.926154416218452\t4\t100071\tM\tMarried\t1975\tG: 130,000 - 149,999\t9000\t< Bach.\t1\t3\tSales\t4\t1\t1.926154416218452\n2.4451138050702506\t2\t101379\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n2.6738366011313683\t3\t103199\tM\tNeverM\t1982\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t6-8\t?\t3\t1\t2.6738366011313683\n5.064846272795393\t6\t103697\tF\tMarried\t1943\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t4-5\tOther\t6\t0\t5.064846272795393\n4.557161416642202\t4\t104292\tM\tMarried\t1968\tI: 170,000 - 189,999\t1500\tBach.\t1\t1\tSales\t4\t0\t4.557161416642202\n4.114311595632834\t4\t103486\tM\tMarried\t1967\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tHandler\t4\t0\t4.114311595632834\n5.190202349786276\t1\t100822\tM\tDivorc.\t1962\tL: 300,000 and above\t9000\tMasters\t1\t9+\tSales\t1\t0\t5.190202349786276\n2.271737173426372\t1\t100830\tF\tNeverM\t1986\tL: 300,000 and above\t11000\t11th\t0\t1\tCleric.\t1\t1\t2.271737173426372\n2.6738366011313683\t2\t104004\tM\tNeverM\t1981\tG: 130,000 - 149,999\t10000\tHS-grad\t0\t1\tCleric.\t2\t1\t2.6738366011313683\n4.39198747959714\t3\t101880\tM\tMarried\t1969\tL: 300,000 and above\t7000\t< Bach.\t0\t3\tCrafts\t3\t0\t4.39198747959714\n4.620710275658258\t3\t101111\tM\tNeverM\t1972\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t1\tCrafts\t3\t0\t4.620710275658258\n4.2547474912829415\t4\t100405\tF\tMarried\t1961\tE: 90,000 - 109,999\t9000\tHS-grad\t1\t4-5\tMachine\t4\t0\t4.2547474912829415\n4.620710275658258\t6\t101174\tM\tMarried\t1947\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.620710275658258\n6.281317355886131\t5\t103261\tM\tSepar.\t1958\tJ: 190,000 - 249,999\t15000\tPhD\t1\t9+\tExec.\t5\t0\t6.281317355886131\n5.175987536186261\t11\t102557\tM\tMarried\t1933\tA: Below 30,000\t1500\tHS-grad\t0\t3\t?\t11\t0\t5.175987536186261\n3.8292522293404545\t4\t100209\tF\tDivorc.\t1968\tG: 130,000 - 149,999\t7000\t< Bach.\t1\t2\tExec.\t4\t0\t3.8292522293404545\n4.39198747959714\t4\t104016\tM\tNeverM\t1968\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t2\tProtec.\t4\t0\t4.39198747959714\n4.03103061296057\t3\t103557\tM\tMarried\t1971\tE: 90,000 - 109,999\t9000\t< Bach.\t0\t3\tOther\t3\t0\t4.03103061296057\n1.9160121459363793\t3\t102279\tF\tMarried\t1978\tJ: 190,000 - 249,999\t15000\tBach.\t0\t4-5\tCleric.\t3\t1\t1.9160121459363793\n4.620710275658258\t5\t103344\tM\tMarried\t1950\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t3\tMachine\t5\t0\t4.620710275658258\n4.620710275658258\t6\t103748\tM\tMabsent\t1946\tI: 170,000 - 189,999\t10000\tAssoc-A\t0\t9+\tFarming\t6\t0\t4.620710275658258\n2.004308901590943\t2\t102638\tF\tNeverM\t1981\tF: 110,000 - 129,999\t10000\tBach.\t0\t1\tCleric.\t2\t1\t2.004308901590943\n5.533041123433051\t8\t100809\tM\tMarried\t1953\tL: 300,000 and above\t11000\tBach.\t1\t3\tSales\t8\t0\t5.533041123433051\n5.996377649967769\t11\t102326\tM\tMarried\t1954\tH: 150,000 - 169,999\t11000\tProfsc\t1\t3\tProf.\t11\t0\t5.996377649967769\n2.043014377365254\t2\t101903\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t1\tSales\t2\t1\t2.043014377365254\n4.620710275658258\t5\t103367\tM\tNeverM\t1970\tD: 70,000 - 89,999\t1500\tBach.\t0\t2\tProf.\t5\t0\t4.620710275658258\n5.533041123433051\t6\t103873\tM\tMarried\t1953\tH: 150,000 - 169,999\t1500\tMasters\t1\t3\tProf.\t6\t0\t5.533041123433051\n5.33067149871701\t9\t103031\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tProf.\t9\t0\t5.33067149871701\n2.6738366011313683\t1\t100186\tM\tNeverM\t1985\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\t?\t1\t1\t2.6738366011313683\n4.620710275658258\t8\t103172\tM\tMabsent\t1957\tG: 130,000 - 149,999\t1500\tHS-grad\t0\t2\tFarming\t8\t0\t4.620710275658258\n4.39198747959714\t4\t102531\tM\tMarried\t1971\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tSales\t4\t0\t4.39198747959714\n4.636607127984462\t5\t103590\tM\tMarried\t1970\tL: 300,000 and above\t11000\tBach.\t0\t1\tExec.\t5\t0\t4.636607127984462\n2.4451138050702506\t3\t101169\tM\tNeverM\t1976\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tSales\t3\t1\t2.4451138050702506\n4.218610847953261\t6\t101774\tF\tNeverM\t1956\tG: 130,000 - 149,999\t7000\tMasters\t0\t2\tProf.\t6\t0\t4.218610847953261\n5.432992102578083\t8\t100517\tM\tDivorc.\t1953\tJ: 190,000 - 249,999\t9000\t7th-8th\t0\t2\tCrafts\t8\t0\t5.432992102578083\n2.4451138050702506\t1\t101153\tM\tNeverM\t1983\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t1\t?\t1\t1\t2.4451138050702506\n5.306415930024286\t8\t103753\tM\tDivorc.\t1955\tB: 30,000 - 49,999\t5000\tMasters\t0\t2\tProtec.\t8\t0\t5.306415930024286\n5.646127308525166\t5\t100818\tM\tMarried\t1957\tK: 250,000 - 299,999\t7000\tBach.\t1\t3\tTransp.\t5\t0\t5.646127308525166\n1.643352034954373\t1\t104432\tF\tNeverM\t1986\tF: 110,000 - 129,999\t10000\t10th\t0\t1\tOther\t1\t1\t1.643352034954373\n4.39198747959714\t5\t102320\tM\tMarried\t1966\tC: 50,000 - 69,999\t7000\t< Bach.\t0\t3\tCrafts\t5\t0\t4.39198747959714\n4.393497267700482\t4\t102167\tM\tMarried\t1967\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t3\tProtec.\t4\t0\t4.393497267700482\n5.875391844385376\t4\t103532\tM\tDivorc.\t1959\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t2\tExec.\t4\t0\t5.875391844385376\n3.68756693633037\t3\t101336\tF\tDivorc.\t1970\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t9+\tCleric.\t3\t0\t3.68756693633037\n4.199664323340584\t6\t103711\tF\tWidowed\t1954\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t2\tOther\t6\t0\t4.199664323340584\n4.9139664446556\t8\t102494\tM\tMarried\t1959\tL: 300,000 and above\t9000\t< Bach.\t1\t3\tSales\t8\t0\t4.9139664446556\n4.714452243488594\t5\t103695\tF\tDivorc.\t1958\tJ: 190,000 - 249,999\t9000\tMasters\t0\t2\tProf.\t5\t0\t4.714452243488594\n4.39198747959714\t5\t101630\tM\tMarried\t1963\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tSales\t5\t0\t4.39198747959714\n2.6738366011313683\t4\t100960\tM\tNeverM\t1975\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t2\tSales\t4\t1\t2.6738366011313683\n3.9511825761178327\t5\t101843\tF\tNeverM\t1950\tF: 110,000 - 129,999\t3000\tBach.\t0\t2\tProf.\t5\t0\t3.9511825761178327\n4.587876070934797\t5\t102055\tF\tDivorc.\t1960\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.587876070934797\n2.6738366011313683\t3\t102072\tM\tMarried\t1976\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tCleric.\t3\t1\t2.6738366011313683\n4.620710275658258\t3\t103588\tM\tMarried\t1969\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t3\t0\t4.620710275658258\n1.7755861055298254\t2\t102884\tF\tSepar.\t1979\tF: 110,000 - 129,999\t3000\t< Bach.\t0\t9+\tCleric.\t2\t1\t1.7755861055298254\n1.682057510728684\t1\t100568\tF\tNeverM\t1983\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t1\t1\t1.682057510728684\n2.043014377365254\t3\t104417\tF\tNeverM\t1974\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t9+\tCleric.\t3\t1\t2.043014377365254\n4.39198747959714\t7\t100093\tM\tMarried\t1946\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tSales\t7\t0\t4.39198747959714\n2.3128797344947984\t1\t101886\tM\tNeverM\t1986\tE: 90,000 - 109,999\t9000\t10th\t0\t1\tOther\t1\t1\t2.3128797344947984\n4.587876070934797\t2\t103027\tF\tDivorc.\t1960\tE: 90,000 - 109,999\t7000\tBach.\t0\t9+\tProf.\t2\t0\t4.587876070934797\n4.2597534090216875\t2\t102185\tM\tMarried\t1971\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t3\tOther\t2\t0\t4.2597534090216875\n5.07763059359732\t2\t101448\tM\tMarried\t1960\tJ: 190,000 - 249,999\t15000\tBach.\t1\t3\tTechSup\t2\t0\t5.07763059359732\n4.620710275658258\t4\t100482\tM\tMarried\t1959\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n5.110143927101873\t4\t100914\tM\tDivorc.\t1964\tL: 300,000 and above\t9000\t11th\t0\t1\tTransp.\t4\t0\t5.110143927101873\n5.502790559886549\t4\t102266\tM\tMarried\t1962\tA: Below 30,000\t1500\tMasters\t1\t3\tProf.\t4\t0\t5.502790559886549\n4.419850439045547\t5\t102851\tM\tMarried\t1966\tF: 110,000 - 129,999\t5000\tHS-grad\t1\t3\tCrafts\t5\t0\t4.419850439045547\n4.620710275658258\t5\t102912\tM\tNeverM\t1960\tI: 170,000 - 189,999\t3000\tHS-grad\t0\t2\tCrafts\t5\t0\t4.620710275658258\n2.2812133072684446\t3\t104118\tF\tNeverM\t1975\tI: 170,000 - 189,999\t15000\tHS-grad\t0\t1\tExec.\t3\t1\t2.2812133072684446\n4.620710275658258\t5\t103647\tM\tMarried\t1955\tI: 170,000 - 189,999\t9000\tAssoc-A\t0\t3\tMachine\t5\t0\t4.620710275658258\n4.620710275658258\t6\t104049\tM\tMarried\t1947\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.620710275658258\n4.3125782006187166\t4\t100434\tM\tDivorc.\t1965\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tOther\t4\t0\t4.3125782006187166\n1.3996702199163877\t3\t103513\tF\tDivorc.\t1976\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t9+\tCrafts\t3\t1\t1.3996702199163877\n4.39198747959714\t4\t103985\tM\tMarried\t1963\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t3\tCrafts\t4\t0\t4.39198747959714\n2.271737173426372\t0\t101135\tF\tNeverM\t1986\tH: 150,000 - 169,999\t7000\t10th\t0\t9+\tSales\t0\t1\t2.271737173426372\n5.446895816578845\t4\t102077\tM\tDivorc.\t1960\tC: 50,000 - 69,999\t3000\tBach.\t1\t9+\tSales\t4\t0\t5.446895816578845\n4.218610847953261\t5\t100062\tF\tNeverM\t1963\tK: 250,000 - 299,999\t15000\tBach.\t0\t2\tTechSup\t5\t0\t4.218610847953261\n5.267704126988065\t5\t104338\tF\tNeverM\t1955\tH: 150,000 - 169,999\t3000\t< Bach.\t1\t2\tExec.\t5\t0\t5.267704126988065\n4.353282003822829\t5\t100911\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCrafts\t5\t0\t4.353282003822829\n1.9387151250448273\t2\t100957\tM\tNeverM\t1980\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t2\tHandler\t2\t1\t1.9387151250448273\n4.39198747959714\t6\t100058\tM\tMarried\t1961\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t3\tFarming\t6\t0\t4.39198747959714\n4.54695889470149\t5\t102415\tM\tDivorc.\t1967\tJ: 190,000 - 249,999\t11000\tBach.\t0\t9+\tProf.\t5\t0\t4.54695889470149\n5.6865300558553145\t7\t103536\tF\tDivorc.\t1955\tI: 170,000 - 189,999\t10000\tAssoc-V\t1\t9+\tProf.\t7\t0\t5.6865300558553145\n4.1060009297660685\t4\t100262\tF\tDivorc.\t1964\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.1060009297660685\n5.142689240716706\t4\t100322\tM\tMarried\t1959\tK: 250,000 - 299,999\t9000\tHS-grad\t1\t3\tSales\t4\t0\t5.142689240716706\n2.3128797344947984\t3\t102860\tM\tMarried\t1975\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t3\tOther\t3\t1\t2.3128797344947984\n4.726602777392504\t4\t101017\tM\tMarried\t1962\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t3\tTransp.\t4\t0\t4.726602777392504\n2.043014377365254\t2\t100810\tF\tNeverM\t1983\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t1\tCleric.\t2\t1\t2.043014377365254\n2.6738366011313683\t2\t102092\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tProf.\t2\t1\t2.6738366011313683\n6.661917434700385\t0\t101693\tF\tMarried\t1924\tE: 90,000 - 109,999\t7000\tAssoc-A\t1\t4-5\t?\t0\t0\t6.661917434700385\n5.598099770552437\t5\t100778\tM\tMarried\t1952\tI: 170,000 - 189,999\t1500\tBach.\t1\t3\tProf.\t5\t0\t5.598099770552437\n4.620710275658258\t7\t101918\tM\tMarried\t1945\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t7\t0\t4.620710275658258\n4.36198547528403\t3\t101422\tM\tMarried\t1971\tK: 250,000 - 299,999\t15000\tAssoc-A\t1\t3\tTechSup\t3\t0\t4.36198547528403\n2.678457631819583\t3\t102081\tM\tNeverM\t1974\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tExec.\t3\t1\t2.678457631819583\n5.284045019980681\t4\t101185\tF\tDivorc.\t1949\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t2\t?\t4\t0\t5.284045019980681\n3.846883323797406\t6\t102540\tM\tNeverM\t1948\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tHandler\t6\t0\t3.846883323797406\n3.59545754862784\t2\t103506\tF\tMarried\t1971\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t4-5\tCleric.\t2\t0\t3.59545754862784\n2.4451138050702506\t1\t101234\tM\tNeverM\t1978\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t2\tCrafts\t1\t1\t2.4451138050702506\n4.967604588596188\t5\t100014\tF\tDivorc.\t1954\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tCleric.\t5\t0\t4.967604588596188\n4.218610847953261\t3\t102600\tF\tNeverM\t1973\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tSales\t3\t0\t4.218610847953261\n2.4451138050702506\t3\t104452\tM\tNeverM\t1982\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t1\t?\t3\t1\t2.4451138050702506\n4.0249446946984335\t4\t101535\tF\tNeverM\t1970\tL: 300,000 and above\t9000\tBach.\t1\t2\tProf.\t4\t0\t4.0249446946984335\n4.9940310492279325\t4\t101211\tM\tMarried\t1965\tG: 130,000 - 149,999\t5000\tAssoc-A\t0\t3\tTransp.\t4\t0\t4.9940310492279325\n2.177685533234822\t2\t102265\tM\tNeverM\t1981\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.177685533234822\n4.620710275658258\t4\t100067\tM\tNeverM\t1962\tH: 150,000 - 169,999\t5000\tBach.\t0\t2\tTechSup\t4\t0\t4.620710275658258\n3.871620235683295\t2\t102043\tF\tDivorc.\t1962\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tOther\t2\t0\t3.871620235683295\n4.2597534090216875\t4\t103539\tM\tMarried\t1965\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n4.620710275658258\t5\t101006\tM\tMarried\t1969\tE: 90,000 - 109,999\t5000\tBach.\t0\t3\tSales\t5\t0\t4.620710275658258\n4.353282003822829\t6\t104138\tM\tMarried\t1939\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.353282003822829\n1.4146292388932553\t1\t102586\tF\tNeverM\t1983\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t2\tOther\t1\t1\t1.4146292388932553\n4.933941963546828\t4\t100379\tF\tWidowed\t1961\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t9+\tTransp.\t4\t0\t4.933941963546828\n5.308474569027155\t7\t103091\tF\tDivorc.\t1945\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t9+\tCleric.\t7\t0\t5.308474569027155\n4.817396005119761\t4\t104325\tM\tMarried\t1964\tB: 30,000 - 49,999\t3000\t9th\t1\t3\tMachine\t4\t0\t4.817396005119761\n4.218610847953261\t5\t102701\tF\tSepar.\t1953\tE: 90,000 - 109,999\t10000\t1st-4th\t0\t9+\tProf.\t5\t0\t4.218610847953261\n2.603937207445597\t3\t102502\tM\tNeverM\t1983\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tExec.\t3\t1\t2.603937207445597\n4.620710275658258\t6\t103971\tM\tMabsent\t1944\tG: 130,000 - 149,999\t1500\t10th\t0\t2\tProtec.\t6\t0\t4.620710275658258\n5.7762446027639385\t7\t104345\tM\tMarried\t1955\tH: 150,000 - 169,999\t1500\tHS-grad\t1\t3\tTransp.\t7\t0\t5.7762446027639385\n4.620710275658258\t5\t103802\tM\tSepar.\t1962\tH: 150,000 - 169,999\t3000\tAssoc-A\t0\t2\tCrafts\t5\t0\t4.620710275658258\n4.39198747959714\t7\t101324\tM\tMarried\t1954\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t3\tSales\t7\t0\t4.39198747959714\n4.7858353130812645\t4\t103810\tM\tDivorc.\t1959\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4.7858353130812645\n4.1245592077617115\t4\t100710\tM\tMarried\t1945\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t3\t?\t4\t0\t4.1245592077617115\n4.39198747959714\t4\t104264\tM\tNeverM\t1962\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tCrafts\t4\t0\t4.39198747959714\n2.4451138050702506\t2\t100873\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tMachine\t2\t1\t2.4451138050702506\n4.293806549593896\t3\t104134\tM\tDivorc.\t1971\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tMachine\t3\t0\t4.293806549593896\n4.620710275658258\t1\t102450\tM\tMarried\t1961\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tSales\t1\t0\t4.620710275658258\n4.620710275658258\t6\t101235\tM\tMarried\t1960\tK: 250,000 - 299,999\t9000\tAssoc-A\t0\t3\tSales\t6\t0\t4.620710275658258\n1.9107803067898017\t2\t104327\tF\tNeverM\t1984\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tOther\t2\t1\t1.9107803067898017\n5.2728065349554925\t6\t101361\tM\tMarried\t1957\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tCrafts\t6\t0\t5.2728065349554925\n2.043014377365254\t1\t100242\tF\tNeverM\t1982\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t2\tProf.\t1\t1\t2.043014377365254\n2.6738366011313683\t2\t100240\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tBach.\t0\t1\t?\t2\t1\t2.6738366011313683\n2.4451138050702506\t4\t103390\tM\tMarried\t1975\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tFarming\t4\t1\t2.4451138050702506\n6.248686241746341\t8\t102765\tM\tMarried\t1942\tD: 70,000 - 89,999\t3000\tHS-grad\t1\t3\tCrafts\t8\t0\t6.248686241746341\n2.6738366011313683\t2\t102968\tM\tMarried\t1979\tK: 250,000 - 299,999\t15000\t7th-8th\t0\t3\tCrafts\t2\t1\t2.6738366011313683\n3.474043725850265\t4\t100035\tF\tMarried\t1973\tH: 150,000 - 169,999\t5000\tBach.\t1\t4-5\tProf.\t4\t0\t3.474043725850265\n2.224556890087115\t3\t101096\tM\tMarried\t1974\tC: 50,000 - 69,999\t1500\tBach.\t1\t3\tExec.\t3\t1\t2.224556890087115\n3.592384001857444\t4\t102460\tM\tNeverM\t1954\tE: 90,000 - 109,999\t3000\tBach.\t0\t2\tHouse-s\t4\t0\t3.592384001857444\n7.167433298116791\t2\t104032\tM\tMarried\t1936\tH: 150,000 - 169,999\t10000\tProfsc\t1\t3\t?\t2\t0\t7.167433298116791\n2.6738366011313683\t2\t103054\tM\tNeverM\t1980\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tSales\t2\t1\t2.6738366011313683\n4.422441361150561\t4\t101879\tF\tDivorc.\t1959\tD: 70,000 - 89,999\t3000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4.422441361150561\n4.39198747959714\t4\t100798\tM\tMarried\t1968\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tProtec.\t4\t0\t4.39198747959714\n4.620710275658258\t6\t103392\tM\tMarried\t1942\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t3\tMachine\t6\t0\t4.620710275658258\n4.2597534090216875\t4\t101506\tM\tMarried\t1965\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tOther\t4\t0\t4.2597534090216875\n2.043014377365254\t2\t103976\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n2.6738366011313683\t3\t101299\tM\tNeverM\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\t?\t3\t1\t2.6738366011313683\n5.51974447550856\t5\t101365\tF\tDivorc.\t1954\tJ: 190,000 - 249,999\t15000\tAssoc-A\t0\t2\tExec.\t5\t0\t5.51974447550856\n4.218610847953261\t5\t100854\tF\tSepar.\t1956\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tCleric.\t5\t0\t4.218610847953261\n2.043014377365254\t3\t103741\tF\tNeverM\t1976\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t9+\t?\t3\t1\t2.043014377365254\n3.8576539813166915\t3\t101287\tF\tSepar.\t1969\tH: 150,000 - 169,999\t1500\tAssoc-A\t0\t9+\tOther\t3\t0\t3.8576539813166915\n4.620710275658258\t4\t100095\tM\tMarried\t1966\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tTechSup\t4\t0\t4.620710275658258\n2.271737173426372\t1\t103207\tF\tNeverM\t1984\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t2\tCleric.\t1\t1\t2.271737173426372\n6.619124347591423\t3\t104197\tM\tMarried\t1942\tG: 130,000 - 149,999\t5000\tProfsc\t0\t3\tExec.\t3\t0\t6.619124347591423\n4.851395514443539\t5\t100022\tM\tMarried\t1965\tI: 170,000 - 189,999\t5000\tAssoc-V\t1\t3\tExec.\t5\t0\t4.851395514443539\n4.620710275658258\t5\t102227\tM\tMarried\t1952\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.587876070934797\t4\t102863\tF\tDivorc.\t1960\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4.587876070934797\n4.42704412240343\t4\t101161\tM\tMarried\t1970\tI: 170,000 - 189,999\t11000\tBach.\t1\t3\tCleric.\t4\t0\t4.42704412240343\n1.9107803067898017\t2\t101643\tF\tNeverM\t1982\tL: 300,000 and above\t11000\t10th\t0\t2\tOther\t2\t1\t1.9107803067898017\n4.442940974729936\t4\t100616\tM\tMarried\t1970\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tExec.\t4\t0\t4.442940974729936\n4.39198747959714\t4\t102812\tM\tMarried\t1961\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t3\tMachine\t4\t0\t4.39198747959714\n2.0604152377854916\t3\t103587\tF\tNeverM\t1976\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tExec.\t3\t1\t2.0604152377854916\n4.459623013367491\t4\t104212\tF\tDivorc.\t1964\tE: 90,000 - 109,999\t7000\tBach.\t0\t9+\tExec.\t4\t0\t4.459623013367491\n4.251348753344686\t6\t103961\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t2\tOther\t6\t0\t4.251348753344686\n4.114311595632834\t3\t102704\tM\tNeverM\t1966\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t2\tHandler\t3\t0\t4.114311595632834\n5.858334359029996\t6\t100532\tM\tMarried\t1948\tH: 150,000 - 169,999\t5000\tHS-grad\t1\t3\tFarming\t6\t0\t5.858334359029996\n3.2022317747854605\t1\t103954\tM\tNeverM\t1976\tJ: 190,000 - 249,999\t11000\tProfsc\t0\t2\tProf.\t1\t1\t3.2022317747854605\n4.765308253166815\t5\t104475\tM\tMarried\t1966\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t3\tTransp.\t5\t0\t4.765308253166815\n4.39198747959714\t7\t101840\tM\tMarried\t1937\tE: 90,000 - 109,999\t10000\t< Bach.\t0\t3\t?\t7\t0\t4.39198747959714\n2.6738366011313683\t0\t102117\tM\tNeverM\t1984\tB: 30,000 - 49,999\t7000\tHS-grad\t0\t1\tFarming\t0\t1\t2.6738366011313683\n2.167437921105945\t2\t102485\tM\tNeverM\t1982\tL: 300,000 and above\t9000\tHS-grad\t0\t1\tHandler\t2\t1\t2.167437921105945\n4.620710275658258\t2\t102562\tM\tNeverM\t1970\tD: 70,000 - 89,999\t9000\tHS-grad\t0\t2\tFarming\t2\t0\t4.620710275658258\n4.218610847953261\t4\t100002\tF\tNeverM\t1962\tL: 300,000 and above\t7000\tBach.\t0\t2\tProf.\t4\t0\t4.218610847953261\n1.682057510728684\t2\t104471\tF\tNeverM\t1980\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t1\tOther\t2\t1\t1.682057510728684\n4.620710275658258\t6\t104356\tM\tMarried\t1948\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t3\tCrafts\t6\t0\t4.620710275658258\n2.6738366011313683\t3\t100687\tM\tMarried\t1975\tE: 90,000 - 109,999\t9000\tBach.\t0\t3\tProf.\t3\t1\t2.6738366011313683\n6.403328141184829\t8\t103099\tM\tMarried\t1951\tI: 170,000 - 189,999\t15000\tAssoc-A\t1\t3\tExec.\t8\t0\t6.403328141184829\n2.271737173426372\t3\t102132\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t2.271737173426372\n2.043014377365254\t1\t100642\tF\tNeverM\t1979\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t1\tSales\t1\t1\t2.043014377365254\n6.019963445685235\t6\t103562\tM\tMarried\t1942\tB: 30,000 - 49,999\t7000\t< Bach.\t1\t3\tSales\t6\t0\t6.019963445685235\n4.218610847953261\t3\t102658\tF\tNeverM\t1969\tL: 300,000 and above\t9000\tHS-grad\t0\t9+\tMachine\t3\t0\t4.218610847953261\n9.828927492093499\t7\t102417\tM\tMarried\t1929\tH: 150,000 - 169,999\t7000\t< Bach.\t1\t3\tExec.\t7\t0\t9.828927492093499\n5.36087999917072\t5\t100620\tM\tMarried\t1951\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tExec.\t5\t0\t5.36087999917072\n2.818434578639925\t3\t104479\tM\tMarried\t1974\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t3\tTransp.\t3\t1\t2.818434578639925\n4.418367522333028\t4\t102001\tF\tDivorc.\t1962\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tExec.\t4\t0\t4.418367522333028\n5.663158417671838\t5\t100980\tM\tMarried\t1951\tH: 150,000 - 169,999\t10000\tAssoc-A\t1\t3\tTechSup\t5\t0\t5.663158417671838\n5.349871577647072\t7\t102080\tM\tMarried\t1954\tC: 50,000 - 69,999\t1500\tPhD\t0\t3\tProf.\t7\t0\t5.349871577647072\n4.6979646163017605\t4\t103242\tM\tDivorc.\t1961\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t9+\tCrafts\t4\t0\t4.6979646163017605\n2.4451138050702506\t4\t102028\tM\tNeverM\t1975\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tCrafts\t4\t1\t2.4451138050702506\n4.218610847953261\t4\t101787\tF\tNeverM\t1966\tG: 130,000 - 149,999\t10000\tAssoc-V\t0\t2\tCleric.\t4\t0\t4.218610847953261\n2.043014377365254\t2\t103074\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n2.6738366011313683\t3\t104339\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tBach.\t0\t2\tSales\t3\t1\t2.6738366011313683\n4.620710275658258\t4\t102264\tM\tMarried\t1967\tJ: 190,000 - 249,999\t15000\tBach.\t0\t3\tCleric.\t4\t0\t4.620710275658258\n2.6738366011313683\t2\t103280\tM\tNeverM\t1983\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t1\tCrafts\t2\t1\t2.6738366011313683\n4.620710275658258\t4\t101646\tM\tMarried\t1962\tB: 30,000 - 49,999\t1500\tBach.\t0\t3\tTechSup\t4\t0\t4.620710275658258\n4.9940310492279325\t5\t103811\tM\tMarried\t1942\tG: 130,000 - 149,999\t1500\t7th-8th\t0\t3\tTransp.\t5\t0\t4.9940310492279325\n2.3128797344947984\t2\t100821\tM\tNeverM\t1980\tL: 300,000 and above\t9000\tBach.\t0\t2\tOther\t2\t1\t2.3128797344947984\n1.926154416218452\t3\t102215\tM\tMarried\t1975\tK: 250,000 - 299,999\t11000\t< Bach.\t1\t3\tMachine\t3\t1\t1.926154416218452\n5.728217064791224\t5\t103343\tM\tMarried\t1950\tE: 90,000 - 109,999\t5000\tHS-grad\t1\t3\tTechSup\t5\t0\t5.728217064791224\n2.6738366011313683\t2\t103180\tM\tMarried\t1979\tL: 300,000 and above\t15000\tBach.\t0\t3\tProf.\t2\t1\t2.6738366011313683\n4.39198747959714\t3\t102666\tM\tNeverM\t1970\tE: 90,000 - 109,999\t9000\t< Bach.\t0\t1\t?\t3\t0\t4.39198747959714\n4.620710275658258\t5\t103400\tM\tMarried\t1962\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tFarming\t5\t0\t4.620710275658258\n1.9387151250448273\t2\t102206\tM\tMarried\t1981\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t3\tHandler\t2\t1\t1.9387151250448273\n3.5364081532739675\t3\t104130\tF\tDivorc.\t1973\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t9+\tSales\t3\t0\t3.5364081532739675\n4.48572944742746\t5\t104035\tF\tDivorc.\t1958\tH: 150,000 - 169,999\t7000\t< Bach.\t0\t9+\tSales\t5\t0\t4.48572944742746\n2.733429381838505\t2\t103644\tM\tNeverM\t1979\tD: 70,000 - 89,999\t1500\tBach.\t0\t2\tExec.\t2\t1\t2.733429381838505\n4.169289016042967\t2\t100326\tF\tDivorc.\t1963\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t9+\tCleric.\t2\t0\t4.169289016042967\n4.51849263582244\t4\t100254\tM\tMarried\t1969\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tExec.\t4\t0\t4.51849263582244\n2.043014377365254\t2\t104140\tF\tNeverM\t1980\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n1.9107803067898017\t2\t101465\tF\tNeverM\t1977\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t9+\tOther\t2\t1\t1.9107803067898017\n2.271737173426372\t0\t100040\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tSales\t0\t1\t2.271737173426372\n1.397052757084566\t3\t102606\tF\tMarried\t1975\tJ: 190,000 - 249,999\t7000\tAssoc-A\t1\t4-5\tCleric.\t3\t1\t1.397052757084566\n2.043014377365254\t2\t100284\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\t?\t2\t1\t2.043014377365254\n4.218610847953261\t2\t102837\tF\tSepar.\t1955\tC: 50,000 - 69,999\t3000\t9th\t0\t2\t?\t2\t0\t4.218610847953261\n2.6738366011313683\t4\t101758\tM\tMarried\t1977\tK: 250,000 - 299,999\t7000\tAssoc-V\t0\t3\tFarming\t4\t1\t2.6738366011313683\n1.926154416218452\t4\t103904\tM\tMarried\t1975\tH: 150,000 - 169,999\t7000\t< Bach.\t1\t3\tCrafts\t4\t1\t1.926154416218452\n4.114311595632834\t5\t100908\tM\tMarried\t1973\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tHandler\t5\t0\t4.114311595632834\n4.610246980978388\t6\t102663\tM\tDivorc.\t1966\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t2\tCrafts\t6\t0\t4.610246980978388\n4.560621189977153\t7\t100913\tF\tWidowed\t1937\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t6-8\tSales\t7\t0\t4.560621189977153\n4.353282003822829\t6\t101033\tM\tMarried\t1939\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCrafts\t6\t0\t4.353282003822829\n4.620710275658258\t6\t100602\tM\tNeverM\t1941\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4.620710275658258\n4.39198747959714\t3\t104056\tM\tMarried\t1972\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tCleric.\t3\t0\t4.39198747959714\n4.620710275658258\t4\t103894\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tMasters\t0\t3\tProf.\t4\t0\t4.620710275658258\n2.6738366011313683\t2\t104395\tM\tNeverM\t1980\tL: 300,000 and above\t11000\tBach.\t0\t2\tSales\t2\t1\t2.6738366011313683\n2.4451138050702506\t3\t102904\tM\tMarried\t1977\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t3\tProf.\t3\t1\t2.4451138050702506\n4.620710275658258\t9\t103744\tM\tMarried\t1967\tK: 250,000 - 299,999\t11000\tAssoc-V\t0\t3\tFarming\t9\t0\t4.620710275658258\n4.51849263582244\t4\t101246\tM\tMarried\t1969\tH: 150,000 - 169,999\t5000\tBach.\t1\t3\tExec.\t4\t0\t4.51849263582244\n4.620710275658258\t4\t100697\tM\tMarried\t1960\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t3\tCrafts\t4\t0\t4.620710275658258\n4.6969969244264576\t5\t101684\tM\tNeverM\t1966\tB: 30,000 - 49,999\t3000\tBach.\t0\t2\tExec.\t5\t0\t4.6969969244264576\n4.620710275658258\t5\t100178\tM\tMarried\t1954\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t5\t0\t4.620710275658258\n4.199664323340584\t3\t103403\tF\tWidowed\t1938\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t9+\tOther\t3\t0\t4.199664323340584\n5.801201708609597\t6\t100037\tM\tSepar.\t1957\tJ: 190,000 - 249,999\t9000\tProfsc\t1\t2\tProf.\t6\t0\t5.801201708609597\n5.898526350753855\t5\t100406\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tExec.\t5\t0\t5.898526350753855\n4.508100357471065\t5\t100359\tM\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tSales\t5\t0\t4.508100357471065\n5.07763059359732\t4\t103062\tM\tMarried\t1960\tC: 50,000 - 69,999\t5000\tBach.\t1\t3\tProf.\t4\t0\t5.07763059359732\n4.620710275658258\t10\t103636\tM\tMarried\t1945\tC: 50,000 - 69,999\t5000\tBach.\t0\t3\t?\t10\t0\t4.620710275658258\n4.2597534090216875\t4\t101989\tM\tNeverM\t1944\tI: 170,000 - 189,999\t9000\t7th-8th\t0\t6-8\tOther\t4\t0\t4.2597534090216875\n4.765308253166815\t2\t102231\tM\tSepar.\t1973\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t2\tTransp.\t2\t0\t4.765308253166815\n3.63567281250549\t4\t103781\tF\tMarried\t1967\tL: 300,000 and above\t9000\t< Bach.\t1\t4-5\tCleric.\t4\t0\t3.63567281250549\n5.306415930024286\t7\t103886\tM\tDivorc.\t1955\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tSales\t7\t0\t5.306415930024286\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1248996101","id":"20210302-002652_772705953","dateCreated":"2021-01-12T21:23:34+0000","dateStarted":"2021-03-02T21:13:49+0000","dateFinished":"2021-03-02T21:13:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%md\n\n.\nPlot the predicted versus actual years of residence. Click on *settings* to see how the plot was specified. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Plot the predicted versus actual years of residence. Click on settings to see how the plot was specified.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1296785200","id":"20210302-002652_1308719110","dateCreated":"2021-01-12T21:23:46+0000","dateStarted":"2021-03-02T21:13:51+0000","dateFinished":"2021-03-02T21:13:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"text":"%python\n\nz.show(RES_DF[['YRS_RESIDENCE', 'PREDICTION']])\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"scatterChart","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PREDICTION":"string","YRS_RESIDENCE":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false},"lineChart":{"rotate":{"degree":"-45"},"xLabelStatus":"default"},"multiBarChart":{"rotate":{"degree":"-45"},"xLabelStatus":"default"}},"commonSetting":{},"keys":[{"name":"PREDICTION","index":0,"aggr":"sum"}],"groups":[],"values":[{"name":"YRS_RESIDENCE","index":1,"aggr":"sum"}]},"helium":{}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"YRS_RESIDENCE\tPREDICTION\n2.0\t4.27143563955029\n2.0\t2.0841569384336807\n5.0\t5.496280188854982\n2.0\t2.4451138050702506\n4.0\t4.817396005119761\n4.0\t2.0937805299594032\n0.0\t6.188849878882095\n3.0\t4.167230377040099\n3.0\t3.2022317747854605\n5.0\t5.336590639783026\n5.0\t4.39198747959714\n1.0\t3.9898880518921436\n4.0\t4.735306248853703\n5.0\t4.549017533704358\n4.0\t4.620710275658258\n5.0\t4.523623312122254\n5.0\t3.590225709481263\n3.0\t4.620710275658258\n5.0\t4.687278710880975\n4.0\t4.620710275658258\n4.0\t2.6738366011313683\n3.0\t4.42704412240343\n1.0\t2.271737173426372\n3.0\t4.492102769522802\n3.0\t4.198321326342324\n5.0\t5.2728065349554925\n5.0\t4.6450993739992725\n2.0\t1.6872893498752615\n5.0\t5.2728065349554925\n3.0\t2.6738366011313683\n5.0\t4.381524184917254\n2.0\t4.39198747959714\n6.0\t4.620710275658258\n4.0\t4.144859466996493\n3.0\t4.398011812104102\n2.0\t1.7755861055298254\n6.0\t4.2597534090216875\n5.0\t4.114311595632834\n5.0\t4.39198747959714\n10.0\t5.239259680252559\n1.0\t2.3128797344947984\n7.0\t4.9139664446556\n7.0\t8.733756193388217\n2.0\t2.6738366011313683\n7.0\t5.594278222262773\n4.0\t2.449734835758136\n5.0\t3.9898880518921436\n3.0\t2.71629578498505\n7.0\t5.2728065349554925\n4.0\t4.234703732005073\n5.0\t4.620710275658258\n4.0\t4.765308253166815\n3.0\t2.4451138050702506\n3.0\t2.2891380338460294\n4.0\t4.557161416642202\n3.0\t3.501928953826699\n2.0\t2.3128797344947984\n6.0\t4.620710275658258\n9.0\t4.620710275658258\n1.0\t2.167437921105945\n6.0\t6.019963445685235\n4.0\t4.294897496722115\n6.0\t4.39198747959714\n6.0\t5.8247875043270625\n2.0\t2.6738366011313683\n2.0\t4.887175654444039\n4.0\t4.620710275658258\n6.0\t4.2597534090216875\n0.0\t2.043014377365254\n3.0\t4.005980935943626\n4.0\t4.144859466996493\n7.0\t3.862885820463269\n4.0\t4.620710275658258\n6.0\t5.116551671193591\n3.0\t4.218610847953261\n4.0\t4.03103061296057\n6.0\t5.727061623918985\n1.0\t1.9107803067898017\n3.0\t4.218610847953261\n2.0\t2.4451138050702506\n3.0\t1.9000096492705163\n4.0\t4.218610847953261\n4.0\t3.8576539813166915\n3.0\t2.004308901590943\n5.0\t5.663158417671838\n2.0\t1.7755861055298254\n0.0\t2.6738366011313683\n2.0\t2.6738366011313683\n3.0\t4.620710275658258\n3.0\t4.620710275658258\n2.0\t2.167437921105945\n5.0\t5.267704126988065\n5.0\t4.39198747959714\n3.0\t2.6738366011313683\n4.0\t4.752337358000361\n6.0\t5.759728857207676\n4.0\t4.70521916748571\n1.0\t1.7653384934009486\n5.0\t5.598099770552437\n3.0\t1.5550552792998091\n6.0\t4.39198747959714\n3.0\t4.218610847953261\n5.0\t4.851395514443539\n3.0\t4.647100141957708\n5.0\t5.283163195678753\n2.0\t2.4451138050702506\n1.0\t1.682057510728684\n2.0\t3.9511825761178327\n3.0\t2.004308901590943\n4.0\t4.9940310492279325\n6.0\t4.620710275658258\n1.0\t1.9107803067898017\n1.0\t2.004308901590943\n3.0\t4.2597534090216875\n2.0\t1.7755861055298254\n5.0\t4.618113321060264\n3.0\t6.002584879070184\n6.0\t4.6921367740078495\n6.0\t6.263821706272211\n6.0\t4.875260968881278\n6.0\t5.3473331062575795\n3.0\t1.2333886081428602\n4.0\t2.6738366011313683\n5.0\t6.00509498660449\n5.0\t4.620710275658258\n2.0\t1.682057510728684\n6.0\t5.735655528677853\n7.0\t5.801201708609597\n6.0\t4.444718281383928\n5.0\t4.9940310492279325\n4.0\t4.39198747959714\n3.0\t5.2395285847286175\n3.0\t4.331898393916036\n4.0\t4.263379973461696\n1.0\t5.841253267713\n3.0\t3.7342783143278098\n5.0\t4.5149820797605\n3.0\t2.3128797344947984\n7.0\t4.620710275658258\n3.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t2.043014377365254\n0.0\t2.167437921105945\n4.0\t4.016695862526831\n2.0\t2.004308901590943\n4.0\t4.6921367740078495\n3.0\t1.2730940473625907\n4.0\t5.303756435059768\n8.0\t4.620710275658258\n4.0\t4.557161416642202\n5.0\t4.218610847953261\n5.0\t5.207747887836106\n4.0\t4.620710275658258\n5.0\t5.175987536186261\n4.0\t4.022779018739698\n7.0\t6.451788179803501\n3.0\t4.777740329765493\n4.0\t4.2597534090216875\n4.0\t3.5551798042987883\n2.0\t2.167437921105945\n5.0\t5.012571946477934\n5.0\t4.807541898240743\n4.0\t0.8117648467660246\n3.0\t5.598099770552437\n2.0\t1.2098059610856922\n2.0\t2.6738366011313683\n4.0\t4.144859466996493\n0.0\t2.271737173426372\n2.0\t4.620710275658258\n4.0\t4.231868181045257\n2.0\t1.682057510728684\n2.0\t2.0841569384336807\n4.0\t4.6222200637615884\n2.0\t1.9107803067898017\n4.0\t4.620710275658258\n2.0\t2.271737173426372\n4.0\t4.620710275658258\n2.0\t1.8946426238020138\n2.0\t1.7755861055298254\n2.0\t2.3128797344947984\n9.0\t5.779999961710928\n5.0\t4.620710275658258\n6.0\t4.35700064606057\n5.0\t5.533041123433051\n5.0\t4.687278710880975\n3.0\t4.39198747959714\n2.0\t3.0003910655982535\n3.0\t4.114311595632834\n4.0\t4.293192918141725\n1.0\t2.6738366011313683\n2.0\t2.043014377365254\n2.0\t2.167437921105945\n5.0\t4.775216668238059\n2.0\t2.6738366011313683\n4.0\t4.334286821672109\n6.0\t5.161964571723885\n4.0\t5.286322718631027\n1.0\t2.6738366011313683\n1.0\t2.6738366011313683\n3.0\t2.6738366011313683\n4.0\t5.611615954227972\n6.0\t4.680085027523106\n5.0\t4.620710275658258\n4.0\t4.2597534090216875\n6.0\t5.612170267482142\n3.0\t2.4451138050702506\n1.0\t1.9107803067898017\n3.0\t3.530750255252329\n8.0\t4.620710275658258\n4.0\t4.218610847953261\n6.0\t5.716469519802573\n4.0\t5.654561175927483\n6.0\t4.39198747959714\n3.0\t4.620710275658258\n5.0\t5.33067149871701\n7.0\t5.779999961710928\n3.0\t2.6738366011313683\n6.0\t5.112952412174806\n5.0\t5.369376974491331\n7.0\t6.218435678199853\n0.0\t2.271737173426372\n2.0\t2.6738366011313683\n7.0\t4.331898393916036\n3.0\t4.620710275658258\n6.0\t5.116312797217688\n4.0\t4.39198747959714\n3.0\t2.4451138050702506\n4.0\t4.557161416642202\n5.0\t4.970392609596232\n6.0\t5.1742010331331585\n4.0\t4.218610847953261\n1.0\t2.043014377365254\n3.0\t2.3128797344947984\n2.0\t2.271737173426372\n10.0\t5.9233930061493965\n8.0\t6.966099998746515\n4.0\t4.634676530024862\n3.0\t3.634163024402151\n3.0\t4.620710275658258\n3.0\t5.175987536186261\n6.0\t5.467982476313665\n9.0\t3.501928953826699\n6.0\t4.965118441718914\n8.0\t5.533041123433051\n6.0\t4.39198747959714\n4.0\t2.6738366011313683\n4.0\t7.289624595656591\n8.0\t5.533041123433051\n4.0\t3.8855887995717167\n5.0\t4.2597534090216875\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n6.0\t4.39198747959714\n4.0\t4.081571380719595\n2.0\t2.6738366011313683\n7.0\t6.567015512726357\n4.0\t4.9940310492279325\n4.0\t4.620710275658258\n2.0\t1.9000096492705163\n9.0\t6.7412745937570975\n3.0\t4.245000714253365\n3.0\t1.6638030514042157\n6.0\t5.012571946477934\n5.0\t4.841028416042391\n3.0\t4.620710275658258\n4.0\t3.9294542556859824\n5.0\t4.620710275658258\n2.0\t2.0841569384336807\n4.0\t4.560621189977153\n4.0\t4.620710275658258\n4.0\t3.959886047579033\n9.0\t8.867940735848606\n4.0\t4.27143563955029\n3.0\t2.043014377365254\n5.0\t5.533041123433051\n4.0\t3.047157374701043\n4.0\t4.018283294442696\n6.0\t4.144765477186269\n6.0\t4.620710275658258\n4.0\t4.620710275658258\n2.0\t1.9107803067898017\n6.0\t5.906361897002725\n6.0\t4.2597534090216875\n7.0\t5.898526350753855\n5.0\t5.012571946477934\n5.0\t3.9511825761178327\n4.0\t4.882454652239147\n3.0\t2.6738366011313683\n8.0\t4.620710275658258\n6.0\t4.719768432100864\n6.0\t5.402923829194265\n6.0\t5.402923829194265\n6.0\t4.719768432100864\n3.0\t2.6738366011313683\n2.0\t1.816728666598252\n4.0\t4.882454652239147\n5.0\t5.179839757470489\n6.0\t4.9940310492279325\n2.0\t2.0841569384336807\n3.0\t2.021709762010687\n2.0\t2.6738366011313683\n1.0\t2.271737173426372\n6.0\t6.118568947507569\n3.0\t4.361550770931544\n4.0\t3.3035721201152217\n6.0\t4.9940310492279325\n6.0\t4.39198747959714\n4.0\t4.2597534090216875\n10.0\t7.3244326792294885\n4.0\t4.557161416642202\n0.0\t2.3128797344947984\n5.0\t4.597113920339325\n3.0\t2.271737173426372\n3.0\t4.2597534090216875\n3.0\t1.6872893498752615\n4.0\t4.218610847953261\n4.0\t4.384864785521714\n6.0\t5.175987536186261\n1.0\t2.081523652998186\n3.0\t4.114311595632834\n3.0\t2.271737173426372\n4.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t2.4451138050702506\n4.0\t2.2199358593989587\n0.0\t2.271737173426372\n3.0\t4.167230377040099\n3.0\t1.9107803067898017\n5.0\t5.175987536186261\n4.0\t4.800111239809098\n4.0\t4.675593706258155\n5.0\t4.549017533704358\n4.0\t4.933941963546828\n4.0\t4.353282003822829\n4.0\t3.862885820463269\n8.0\t4.9940310492279325\n8.0\t4.9940310492279325\n4.0\t4.6150263804037195\n2.0\t2.271737173426372\n6.0\t4.965118441718914\n6.0\t4.39198747959714\n4.0\t3.862885820463269\n2.0\t2.271737173426372\n7.0\t4.620710275658258\n1.0\t2.6738366011313683\n3.0\t3.9549952081657977\n6.0\t5.552156053897306\n3.0\t4.620710275658258\n6.0\t5.552156053897306\n4.0\t4.67729504017916\n5.0\t5.779999961710928\n4.0\t4.208147553273392\n2.0\t2.043014377365254\n2.0\t4.9139664446556\n8.0\t6.218435678199853\n10.0\t7.69669358479986\n7.0\t4.2597534090216875\n5.0\t5.51974447550856\n4.0\t4.2597534090216875\n1.0\t1.682057510728684\n4.0\t4.557161416642202\n5.0\t4.870707107250496\n6.0\t5.304318327371945\n2.0\t2.167437921105945\n8.0\t5.304318327371945\n4.0\t5.284045019980681\n5.0\t5.012571946477934\n3.0\t2.4451138050702506\n3.0\t2.6738366011313683\n5.0\t4.2597534090216875\n2.0\t1.9160121459363793\n3.0\t4.620710275658258\n6.0\t5.759728857207676\n7.0\t8.229604852908324\n5.0\t3.9898880518921436\n4.0\t4.2585633516509915\n4.0\t4.353282003822829\n5.0\t3.9511825761178327\n10.0\t7.433258073570897\n3.0\t5.2395285847286175\n3.0\t2.733429381838505\n4.0\t4.6222200637615884\n4.0\t4.765308253166815\n3.0\t4.218610847953261\n5.0\t4.818657233989711\n5.0\t5.207747887836106\n2.0\t4.620710275658258\n4.0\t3.6268639991974965\n2.0\t6.423230572964869\n5.0\t3.9945129028053685\n3.0\t2.6738366011313683\n4.0\t4.246865116608205\n2.0\t3.1902845741524475\n2.0\t2.6738366011313683\n2.0\t2.271737173426372\n3.0\t2.6738366011313683\n5.0\t4.818657233989711\n7.0\t4.620710275658258\n3.0\t2.3128797344947984\n2.0\t2.043014377365254\n3.0\t3.9294542556859824\n6.0\t4.688539939750939\n2.0\t2.167437921105945\n3.0\t4.353282003822829\n1.0\t2.271737173426372\n6.0\t5.337865182074879\n4.0\t4.042712843489156\n3.0\t3.7357171131487235\n7.0\t4.620710275658258\n3.0\t4.620710275658258\n4.0\t4.612827900983575\n5.0\t5.283163195678753\n7.0\t5.663158417671838\n3.0\t2.6738366011313683\n4.0\t4.620710275658258\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t4.777740329765493\n2.0\t1.4146292388932553\n4.0\t3.9549952081657977\n1.0\t2.4451138050702506\n2.0\t1.8946426238020138\n7.0\t5.936909189824931\n5.0\t4.508100357471065\n4.0\t4.848907797536214\n4.0\t4.620710275658258\n3.0\t1.9107803067898017\n3.0\t2.818434578639925\n5.0\t4.2597534090216875\n3.0\t2.3128797344947984\n2.0\t2.6738366011313683\n6.0\t4.218610847953261\n2.0\t2.3128797344947984\n2.0\t1.9160121459363793\n7.0\t4.865423543092476\n4.0\t4.2597534090216875\n3.0\t1.9107803067898017\n5.0\t4.9940310492279325\n3.0\t4.114311595632834\n5.0\t4.719768432100864\n5.0\t4.6592591405274675\n6.0\t6.491889721077243\n4.0\t4.557161416642202\n7.0\t4.39198747959714\n3.0\t2.024759918040786\n5.0\t4.353282003822829\n1.0\t2.6738366011313683\n4.0\t4.620710275658258\n5.0\t4.952357851112538\n3.0\t4.9940310492279325\n6.0\t3.9898880518921436\n5.0\t5.33067149871701\n0.0\t3.634163024402151\n5.0\t5.467982476313665\n3.0\t1.5018168434237111\n3.0\t2.6738366011313683\n5.0\t5.014405047686253\n4.0\t3.634163024402151\n4.0\t3.4383800948106398\n3.0\t1.6226604903357895\n6.0\t4.620710275658258\n4.0\t4.6222200637615884\n5.0\t5.467982476313665\n5.0\t4.114311595632834\n8.0\t4.39198747959714\n3.0\t4.293806549593896\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n2.0\t1.682057510728684\n5.0\t4.620710275658258\n5.0\t4.620710275658258\n3.0\t3.558685073507334\n3.0\t2.6738366011313683\n3.0\t1.9107803067898017\n2.0\t2.4451138050702506\n3.0\t2.6738366011313683\n3.0\t4.620710275658258\n2.0\t2.167437921105945\n6.0\t4.114311595632834\n5.0\t4.770750734865032\n3.0\t2.6738366011313683\n2.0\t2.4064083292959397\n4.0\t4.620710275658258\n9.0\t4.560621189977153\n7.0\t5.142689240716706\n2.0\t4.620710275658258\n2.0\t2.271737173426372\n1.0\t2.4064083292959397\n4.0\t1.5651049297006097\n5.0\t4.9940310492279325\n1.0\t2.4064083292959397\n9.0\t5.889846151446463\n5.0\t4.353282003822829\n5.0\t4.620710275658258\n5.0\t4.670247601734303\n4.0\t4.218610847953261\n7.0\t4.620710275658258\n2.0\t3.501928953826699\n5.0\t5.402923829194265\n4.0\t5.142689240716706\n5.0\t4.6969969244264576\n3.0\t4.620710275658258\n3.0\t1.9160121459363793\n4.0\t4.7858353130812645\n2.0\t4.218610847953261\n4.0\t4.484909086164933\n7.0\t5.846964018777726\n6.0\t5.799598212228275\n4.0\t4.6222200637615884\n5.0\t5.85959558789996\n3.0\t2.6738366011313683\n3.0\t4.42704412240343\n3.0\t2.2199358593989587\n7.0\t5.779999961710928\n1.0\t2.271737173426372\n4.0\t5.07763059359732\n5.0\t4.678804828282409\n3.0\t2.004308901590943\n5.0\t4.9940310492279325\n4.0\t4.246865116608205\n7.0\t4.865423543092476\n3.0\t2.6738366011313683\n2.0\t2.3128797344947984\n3.0\t2.6738366011313683\n5.0\t4.620710275658258\n5.0\t5.041966962557694\n6.0\t2.6738366011313683\n3.0\t4.114311595632834\n1.0\t2.4451138050702506\n2.0\t2.3128797344947984\n5.0\t4.620710275658258\n4.0\t4.653431298233045\n6.0\t4.2597534090216875\n4.0\t2.4064083292959397\n8.0\t5.564552915849504\n8.0\t7.419741889895377\n1.0\t4.620710275658258\n4.0\t4.218610847953261\n2.0\t2.043014377365254\n5.0\t3.992325137186259\n5.0\t4.610246980978388\n6.0\t4.882454652239147\n3.0\t4.263379973461696\n7.0\t4.2597534090216875\n1.0\t1.682057510728684\n7.0\t4.851395514443539\n2.0\t2.043014377365254\n4.0\t4.620710275658258\n4.0\t3.2022317747854605\n6.0\t4.620710275658258\n4.0\t4.1060009297660685\n5.0\t4.359059285063424\n4.0\t4.620710275658258\n1.0\t2.6738366011313683\n6.0\t5.060599484450648\n5.0\t5.402923829194265\n3.0\t2.71629578498505\n4.0\t3.992325137186259\n3.0\t2.6738366011313683\n7.0\t5.898526350753855\n3.0\t2.043014377365254\n4.0\t4.610246980978388\n2.0\t2.043014377365254\n4.0\t4.408102894056896\n10.0\t5.9233930061493965\n5.0\t5.79327571191061\n4.0\t4.747006021607353\n5.0\t4.2597534090216875\n7.0\t5.878067345519241\n11.0\t4.620710275658258\n1.0\t1.9160121459363793\n11.0\t4.620710275658258\n1.0\t2.271737173426372\n8.0\t5.564552915849504\n2.0\t4.218610847953261\n5.0\t6.40671850511626\n6.0\t4.660745627589677\n5.0\t4.620710275658258\n2.0\t2.6738366011313683\n3.0\t4.198321326342324\n4.0\t5.215673884535079\n5.0\t4.218610847953261\n3.0\t4.218610847953261\n1.0\t2.6738366011313683\n5.0\t3.8576539813166915\n4.0\t4.1245592077617115\n3.0\t3.3733214476912394\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n5.0\t6.457378366780048\n4.0\t3.6817559768525854\n4.0\t4.293192918141725\n4.0\t4.620710275658258\n4.0\t4.328438620581096\n5.0\t4.798873634457777\n3.0\t2.6738366011313683\n1.0\t1.7297485337294347\n3.0\t4.620710275658258\n5.0\t6.865061171338311\n5.0\t5.3360413912518245\n2.0\t2.271737173426372\n4.0\t4.39198747959714\n2.0\t2.043014377365254\n2.0\t2.043014377365254\n3.0\t4.39198747959714\n5.0\t4.620710275658258\n4.0\t3.618467890575687\n3.0\t4.065083753532761\n3.0\t4.296926828164629\n7.0\t4.620710275658258\n1.0\t2.167437921105945\n6.0\t4.620710275658258\n2.0\t2.3128797344947984\n4.0\t3.862885820463269\n2.0\t4.560621189977153\n4.0\t2.6738366011313683\n5.0\t4.293806549593896\n1.0\t2.167437921105945\n3.0\t2.4451138050702506\n2.0\t2.271737173426372\n3.0\t1.7755861055298254\n6.0\t5.284727782061964\n6.0\t7.718705140026032\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n3.0\t4.620710275658258\n2.0\t1.9387151250448273\n1.0\t2.271737173426372\n5.0\t4.620710275658258\n4.0\t4.9940310492279325\n5.0\t5.598099770552437\n5.0\t4.620710275658258\n2.0\t3.9511825761178327\n4.0\t4.7166737269607495\n5.0\t4.39198747959714\n1.0\t2.043014377365254\n7.0\t4.9940310492279325\n3.0\t2.4064083292959397\n3.0\t1.7309784748602794\n5.0\t4.859800067067212\n4.0\t3.862885820463269\n4.0\t4.817396005119761\n4.0\t4.39128099411736\n5.0\t4.714452243488594\n2.0\t1.7755861055298254\n2.0\t2.043014377365254\n7.0\t5.2728065349554925\n3.0\t4.1245592077617115\n6.0\t4.9940310492279325\n1.0\t2.043014377365254\n4.0\t5.133303719371725\n2.0\t2.0841569384336807\n4.0\t4.39198747959714\n3.0\t5.898359762074506\n2.0\t2.271737173426372\n8.0\t4.620710275658258\n5.0\t5.663158417671838\n5.0\t4.218610847953261\n5.0\t4.114311595632834\n2.0\t2.271737173426372\n2.0\t2.4451138050702506\n2.0\t4.620710275658258\n4.0\t4.916449655477578\n3.0\t2.6738366011313683\n5.0\t6.445423980890155\n10.0\t4.620710275658258\n7.0\t6.494916794000346\n3.0\t2.4451138050702506\n3.0\t4.6248299703147495\n1.0\t2.6738366011313683\n2.0\t2.167437921105945\n4.0\t5.349871577647072\n3.0\t4.620710275658258\n5.0\t5.239259680252559\n4.0\t4.353282003822829\n2.0\t2.5249098060576216\n2.0\t2.6738366011313683\n5.0\t4.777740329765493\n5.0\t4.841028416042391\n1.0\t1.9107803067898017\n2.0\t2.004308901590943\n2.0\t1.4146292388932553\n5.0\t4.620710275658258\n3.0\t2.6738366011313683\n5.0\t4.620710275658258\n3.0\t2.271737173426372\n2.0\t2.043014377365254\n2.0\t2.4451138050702506\n4.0\t4.370458937064541\n3.0\t3.6851165195348585\n5.0\t4.620710275658258\n4.0\t2.6738366011313683\n5.0\t4.620710275658258\n5.0\t4.798873634457777\n4.0\t4.6222200637615884\n1.0\t2.6738366011313683\n5.0\t4.560621189977153\n5.0\t4.9940310492279325\n2.0\t2.6738366011313683\n1.0\t2.6738366011313683\n5.0\t4.5236145619392545\n3.0\t2.6450579469960465\n5.0\t4.088946208335074\n5.0\t4.2597534090216875\n4.0\t4.620710275658258\n6.0\t4.39198747959714\n5.0\t5.179839757470489\n3.0\t2.39808069161046\n2.0\t4.037054945467531\n4.0\t4.169289016042967\n5.0\t3.9945129028053685\n3.0\t3.3733214476912394\n4.0\t2.6738366011313683\n1.0\t2.6738366011313683\n6.0\t4.560621189977153\n5.0\t3.590225709481263\n3.0\t3.938507580978964\n5.0\t4.516886767137294\n4.0\t4.620710275658258\n3.0\t1.949289582422736\n3.0\t4.152954450312265\n6.0\t5.533041123433051\n3.0\t2.6738366011313683\n7.0\t4.620710275658258\n5.0\t4.700176316760761\n2.0\t1.9107803067898017\n4.0\t4.537309308351723\n1.0\t2.043014377365254\n3.0\t2.6912374615512817\n2.0\t2.4451138050702506\n5.0\t5.336590639783026\n5.0\t5.0560049860005165\n4.0\t2.6738366011313683\n4.0\t4.557161416642202\n3.0\t2.6738366011313683\n3.0\t4.42704412240343\n2.0\t2.6738366011313683\n1.0\t4.687278710880975\n5.0\t3.9898880518921436\n3.0\t4.218610847953261\n3.0\t3.846883323797406\n2.0\t2.4451138050702506\n3.0\t2.271737173426372\n3.0\t4.620710275658258\n4.0\t4.752337358000361\n4.0\t5.012571946477934\n2.0\t4.03103061296057\n4.0\t4.597113920339325\n4.0\t4.9940310492279325\n6.0\t6.880664899802468\n1.0\t2.271737173426372\n9.0\t4.620710275658258\n3.0\t2.6738366011313683\n4.0\t2.0937805299594032\n3.0\t4.236206594032943\n5.0\t4.765308253166815\n5.0\t3.8576539813166915\n3.0\t4.39198747959714\n3.0\t4.05422250995173\n7.0\t5.070436910239451\n4.0\t4.620710275658258\n4.0\t4.9940310492279325\n5.0\t4.39198747959714\n4.0\t3.9898880518921436\n4.0\t5.24255597140899\n5.0\t5.2207569337037825\n4.0\t1.926154416218452\n2.0\t2.4451138050702506\n3.0\t2.6738366011313683\n6.0\t5.064846272795393\n4.0\t4.557161416642202\n4.0\t4.114311595632834\n1.0\t5.190202349786276\n1.0\t2.271737173426372\n2.0\t2.6738366011313683\n3.0\t4.39198747959714\n3.0\t4.620710275658258\n4.0\t4.2547474912829415\n6.0\t4.620710275658258\n5.0\t6.281317355886131\n11.0\t5.175987536186261\n4.0\t3.8292522293404545\n4.0\t4.39198747959714\n3.0\t4.03103061296057\n3.0\t1.9160121459363793\n5.0\t4.620710275658258\n6.0\t4.620710275658258\n2.0\t2.004308901590943\n8.0\t5.533041123433051\n11.0\t5.996377649967769\n2.0\t2.043014377365254\n5.0\t4.620710275658258\n6.0\t5.533041123433051\n9.0\t5.33067149871701\n1.0\t2.6738366011313683\n8.0\t4.620710275658258\n4.0\t4.39198747959714\n5.0\t4.636607127984462\n3.0\t2.4451138050702506\n6.0\t4.218610847953261\n8.0\t5.432992102578083\n1.0\t2.4451138050702506\n8.0\t5.306415930024286\n5.0\t5.646127308525166\n1.0\t1.643352034954373\n5.0\t4.39198747959714\n4.0\t4.393497267700482\n4.0\t5.875391844385376\n3.0\t3.68756693633037\n6.0\t4.199664323340584\n8.0\t4.9139664446556\n5.0\t4.714452243488594\n5.0\t4.39198747959714\n4.0\t2.6738366011313683\n5.0\t3.9511825761178327\n5.0\t4.587876070934797\n3.0\t2.6738366011313683\n3.0\t4.620710275658258\n2.0\t1.7755861055298254\n1.0\t1.682057510728684\n3.0\t2.043014377365254\n7.0\t4.39198747959714\n1.0\t2.3128797344947984\n2.0\t4.587876070934797\n2.0\t4.2597534090216875\n2.0\t5.07763059359732\n4.0\t4.620710275658258\n4.0\t5.110143927101873\n4.0\t5.502790559886549\n5.0\t4.419850439045547\n5.0\t4.620710275658258\n3.0\t2.2812133072684446\n5.0\t4.620710275658258\n6.0\t4.620710275658258\n4.0\t4.3125782006187166\n3.0\t1.3996702199163877\n4.0\t4.39198747959714\n0.0\t2.271737173426372\n4.0\t5.446895816578845\n5.0\t4.218610847953261\n5.0\t5.267704126988065\n5.0\t4.353282003822829\n2.0\t1.9387151250448273\n6.0\t4.39198747959714\n5.0\t4.54695889470149\n7.0\t5.6865300558553145\n4.0\t4.1060009297660685\n4.0\t5.142689240716706\n3.0\t2.3128797344947984\n4.0\t4.726602777392504\n2.0\t2.043014377365254\n2.0\t2.6738366011313683\n0.0\t6.661917434700385\n5.0\t5.598099770552437\n7.0\t4.620710275658258\n3.0\t4.36198547528403\n3.0\t2.678457631819583\n4.0\t5.284045019980681\n6.0\t3.846883323797406\n2.0\t3.59545754862784\n1.0\t2.4451138050702506\n5.0\t4.967604588596188\n3.0\t4.218610847953261\n3.0\t2.4451138050702506\n4.0\t4.0249446946984335\n4.0\t4.9940310492279325\n2.0\t2.177685533234822\n4.0\t4.620710275658258\n2.0\t3.871620235683295\n4.0\t4.2597534090216875\n5.0\t4.620710275658258\n6.0\t4.353282003822829\n1.0\t1.4146292388932553\n4.0\t4.933941963546828\n7.0\t5.308474569027155\n4.0\t4.817396005119761\n5.0\t4.218610847953261\n3.0\t2.603937207445597\n6.0\t4.620710275658258\n7.0\t5.7762446027639385\n5.0\t4.620710275658258\n7.0\t4.39198747959714\n4.0\t4.7858353130812645\n4.0\t4.1245592077617115\n4.0\t4.39198747959714\n2.0\t2.4451138050702506\n3.0\t4.293806549593896\n1.0\t4.620710275658258\n6.0\t4.620710275658258\n2.0\t1.9107803067898017\n6.0\t5.2728065349554925\n1.0\t2.043014377365254\n2.0\t2.6738366011313683\n4.0\t2.4451138050702506\n8.0\t6.248686241746341\n2.0\t2.6738366011313683\n4.0\t3.474043725850265\n3.0\t2.224556890087115\n4.0\t3.592384001857444\n2.0\t7.167433298116791\n2.0\t2.6738366011313683\n4.0\t4.422441361150561\n4.0\t4.39198747959714\n6.0\t4.620710275658258\n4.0\t4.2597534090216875\n2.0\t2.043014377365254\n3.0\t2.6738366011313683\n5.0\t5.51974447550856\n5.0\t4.218610847953261\n3.0\t2.043014377365254\n3.0\t3.8576539813166915\n4.0\t4.620710275658258\n1.0\t2.271737173426372\n3.0\t6.619124347591423\n5.0\t4.851395514443539\n5.0\t4.620710275658258\n4.0\t4.587876070934797\n4.0\t4.42704412240343\n2.0\t1.9107803067898017\n4.0\t4.442940974729936\n4.0\t4.39198747959714\n3.0\t2.0604152377854916\n4.0\t4.459623013367491\n6.0\t4.251348753344686\n3.0\t4.114311595632834\n6.0\t5.858334359029996\n1.0\t3.2022317747854605\n5.0\t4.765308253166815\n7.0\t4.39198747959714\n0.0\t2.6738366011313683\n2.0\t2.167437921105945\n2.0\t4.620710275658258\n4.0\t4.218610847953261\n2.0\t1.682057510728684\n6.0\t4.620710275658258\n3.0\t2.6738366011313683\n8.0\t6.403328141184829\n3.0\t2.271737173426372\n1.0\t2.043014377365254\n6.0\t6.019963445685235\n3.0\t4.218610847953261\n7.0\t9.828927492093499\n5.0\t5.36087999917072\n3.0\t2.818434578639925\n4.0\t4.418367522333028\n5.0\t5.663158417671838\n7.0\t5.349871577647072\n4.0\t4.6979646163017605\n4.0\t2.4451138050702506\n4.0\t4.218610847953261\n2.0\t2.043014377365254\n3.0\t2.6738366011313683\n4.0\t4.620710275658258\n2.0\t2.6738366011313683\n4.0\t4.620710275658258\n5.0\t4.9940310492279325\n2.0\t2.3128797344947984\n3.0\t1.926154416218452\n5.0\t5.728217064791224\n2.0\t2.6738366011313683\n3.0\t4.39198747959714\n5.0\t4.620710275658258\n2.0\t1.9387151250448273\n3.0\t3.5364081532739675\n5.0\t4.48572944742746\n2.0\t2.733429381838505\n2.0\t4.169289016042967\n4.0\t4.51849263582244\n2.0\t2.043014377365254\n2.0\t1.9107803067898017\n0.0\t2.271737173426372\n3.0\t1.397052757084566\n2.0\t2.043014377365254\n2.0\t4.218610847953261\n4.0\t2.6738366011313683\n4.0\t1.926154416218452\n5.0\t4.114311595632834\n6.0\t4.610246980978388\n7.0\t4.560621189977153\n6.0\t4.353282003822829\n6.0\t4.620710275658258\n3.0\t4.39198747959714\n4.0\t4.620710275658258\n2.0\t2.6738366011313683\n3.0\t2.4451138050702506\n9.0\t4.620710275658258\n4.0\t4.51849263582244\n4.0\t4.620710275658258\n5.0\t4.6969969244264576\n5.0\t4.620710275658258\n3.0\t4.199664323340584\n6.0\t5.801201708609597\n5.0\t5.898526350753855\n5.0\t4.508100357471065\n4.0\t5.07763059359732\n10.0\t4.620710275658258\n4.0\t4.2597534090216875\n2.0\t4.765308253166815\n4.0\t3.63567281250549\n7.0\t5.306415930024286\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1579468156","id":"20210302-002652_1126419970","dateCreated":"2021-01-12T21:24:08+0000","dateStarted":"2021-03-02T21:13:52+0000","dateFinished":"2021-03-02T21:13:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"text":"%md\n\n.\nUsing *matplotlib*, plot the predicted and actual years of residence and visually compare it against the perfect fit line, *y*=*x*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Using matplotlib, plot the predicted and actual years of residence and visually compare it against the perfect fit line, y=x.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1979153098","id":"20210302-002652_1365425317","dateCreated":"2021-01-12T21:24:19+0000","dateStarted":"2021-03-02T21:13:52+0000","dateFinished":"2021-03-02T21:13:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%python\n\nplt.style.use('seaborn')\nplt.figure(figsize=[9,7])\n\n\nx = RES_DF[['PREDICTION']].pull()\ny = RES_DF[['YRS_RESIDENCE']].pull()\nn = len(x)\nrefx = np.linspace(0, 15,n)\nplt.plot(refx, refx, '.')\nplt.plot(x, y, '.')\n\nplt.xlabel('PREDICTION')\nplt.ylabel('YRS_RESIDENCE')\nplt.title('The prediction and actual value for years of residence')\nplt.grid(True)\nplt.show()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-924752533","id":"20210302-002652_197352366","dateCreated":"2021-01-12T21:24:55+0000","dateStarted":"2021-03-02T21:13:53+0000","dateFinished":"2021-03-02T21:13:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%md\n.\nPlot the residuals using *matplotlib*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Plot the residuals using matplotlib.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1971623791","id":"20210302-002652_1321718680","dateCreated":"2021-01-12T21:25:18+0000","dateStarted":"2021-03-02T21:13:55+0000","dateFinished":"2021-03-02T21:13:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"text":"%python\n\nplt.style.use('seaborn')\nplt.figure(figsize=[9,7])\n\nx = np.matrix(RES_DF[['PREDICTION']].pull())\ny = np.matrix(RES_DF[['YRS_RESIDENCE']].pull())\nplt.plot(x, y-x, '.')\n\nplt.hlines(y=0, xmin=0, xmax=15, colors='black', linestyles='solid', alpha=0.8)\nplt.xlabel('PREDICTION')\nplt.ylabel('RESIDUAL')\nplt.title('Prediction vs. residuals')\nplt.grid(True)\nplt.show()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1998534129","id":"20210302-002652_323569564","dateCreated":"2021-01-12T21:25:39+0000","dateStarted":"2021-03-02T21:13:56+0000","dateFinished":"2021-03-02T21:13:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"text":"%md\n\n.\n\nCompute RMSE explicitly using the prediction results. Also compute R-squared using the test data set using the model's *score* method. Note that both the RMSE and R-squared are similar to the values produced automatically by ***oml.glm***.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Compute RMSE explicitly using the prediction results. Also compute R-squared using the test data set using the model's score method. Note that both the RMSE and R-squared are similar to the values produced automatically by oml.glm.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_311068764","id":"20210302-002652_1460295364","dateCreated":"2021-01-12T21:46:38+0000","dateStarted":"2021-03-02T21:13:57+0000","dateFinished":"2021-03-02T21:13:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"text":"%python\n\nprint(((RES_DF['YRS_RESIDENCE'] - RES_DF['PREDICTION']) ** 2).mean() ** .5)\n\nprint(glm_mod.score(TEST.drop('YRS_RESIDENCE'), TEST[:,['YRS_RESIDENCE']]))\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"1.402635365872594\n0.477143\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1467370315","id":"20210302-002652_1174763936","dateCreated":"2021-01-12T22:00:35+0000","dateStarted":"2021-03-02T21:13:58+0000","dateFinished":"2021-03-02T21:13:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"title":"Step 3: Clustering using K-Means","text":"%md\n\nOML4Py supports clustering using several algorithms: K-Means, O-Cluster, and Expectation Maximization. In this lab, we illustrate how to identify natural clusters of customers using the *CUSTOMERS* dataset and the unsupervised learning K-Means algorithm. Note that data exploration, preparation, and machine learning run inside Autonomous Database.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py supports clustering using several algorithms: K-Means, O-Cluster, and Expectation Maximization. In this lab, we illustrate how to identify natural clusters of customers using the CUSTOMERS dataset and the unsupervised learning K-Means algorithm. Note that data exploration, preparation, and machine learning run inside Autonomous Database.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-926254290","id":"20210302-002652_917383659","dateCreated":"2021-01-12T22:03:34+0000","dateStarted":"2021-03-02T21:13:59+0000","dateFinished":"2021-03-02T21:13:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%md\n\n.\nBuild a *k-Means* clustering model with 3 clusters, first dropping the model *CUST_CLUSTER_MODEL* if it exists. Specify the number of iterations for building the cluster tree using the *KMNS_ITERATIONS* setting and the K-Means random seed generator using the *KMNS_RANDOM_SEED* setting. *KMNS_ITERATIONS* specifies the number of times the algorithm should iterate over the training data before it finalizes the selection of centroids. You can adjust this parameter to balance accuracy against training time. The *KMNS_RANDOM_SEED* value is used for cluster initialization and can have a significant effect on cluster selection.\n\nNote that *model_name* causes the model to be persisted across notebook sessions.","user":"OMLUSER02","dateUpdated":"2021-03-02T21:13:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Build a k-Means clustering model with 3 clusters, first dropping the model CUST_CLUSTER_MODEL if it exists. Specify the number of iterations for building the cluster tree using the KMNS_ITERATIONS setting and the K-Means random seed generator using the KMNS_RANDOM_SEED setting. KMNS_ITERATIONS specifies the number of times the algorithm should iterate over the training data before it finalizes the selection of centroids. You can adjust this parameter to balance accuracy against training time. The KMNS_RANDOM_SEED value is used for cluster initialization and can have a significant effect on cluster selection.

\n

Note that model_name causes the model to be persisted across notebook sessions.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1571950430","id":"20210302-002652_1870855429","dateCreated":"2021-01-12T22:34:24+0000","dateStarted":"2021-03-02T21:14:00+0000","dateFinished":"2021-03-02T21:14:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"text":"%python\n\ntry:\n oml.drop(model=\"CUST_CLUSTER_MODEL\")\nexcept:\n print(\"Model does not exist\")\n\nsetting = {'KMNS_ITERATIONS': 20, 'KMNS_RANDOM_SEED': 7}\nkm_mod = oml.km(n_clusters = 3, **setting).fit(CUST_DF, model_name = \"CUST_CLUSTER_MODEL\", case_id = 'CUST_ID')","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_703174287","id":"20210302-002652_1790655047","dateCreated":"2021-01-12T22:31:33+0000","dateStarted":"2021-03-02T21:14:00+0000","dateFinished":"2021-03-02T21:14:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%md\n\n.\nDisplay the K-Means model details. \n\n ","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display the K-Means model details.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1341882124","id":"20210302-002652_127833801","dateCreated":"2021-01-12T22:35:20+0000","dateStarted":"2021-03-02T21:14:08+0000","dateFinished":"2021-03-02T21:14:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%python\n\nkm_mod\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nModel Name: CUST_CLUSTER_MODEL\n\nModel Owner: OMLUSER02\n\nAlgorithm Name: K-Means\n\nMining Function: CLUSTERING\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_KMEANS\n1 CLUS_NUM_CLUSTERS 3\n2 KMNS_CONV_TOLERANCE .001\n3 KMNS_DETAILS KMNS_DETAILS_HIERARCHY\n4 KMNS_DISTANCE KMNS_EUCLIDEAN\n5 KMNS_ITERATIONS 20\n6 KMNS_MIN_PCT_ATTR_SUPPORT .1\n7 KMNS_NUM_BINS 11\n8 KMNS_RANDOM_SEED 7\n9 KMNS_SPLIT_CRITERION KMNS_VARIANCE\n10 ODMS_DETAILS ODMS_ENABLE\n11 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n12 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n13 PREP_AUTO ON\n\nGlobal Statistics: \n attribute name attribute value\n0 CONVERGED YES\n1 NUM_ROWS 4500\n\nAttributes: \nAFFINITY_CARD\nCUST_CREDIT_LIMIT\nCUST_GENDER\nCUST_INCOME_LEVEL\nCUST_MARITAL_STATUS\nCUST_YEAR_OF_BIRTH\nEDUCATION\nHOUSEHOLD_SIZE\nOCCUPATION\nYRS_RESIDENCE\nY_BOX_GAMES\n\nPartition: NO\n\nClusters: \n\n CLUSTER_ID ROW_CNT PARENT_CLUSTER_ID TREE_LEVEL DISPERSION\n0 1 4500 NaN 1 6.276772\n1 2 3123 1.0 2 6.586027\n2 3 1377 1.0 2 5.575388\n3 4 2085 2.0 3 6.938511\n4 5 1038 2.0 3 5.878003\n\nTaxonomy: \n\n PARENT_CLUSTER_ID CHILD_CLUSTER_ID\n0 1 2.0\n1 1 3.0\n2 2 4.0\n3 2 5.0\n4 3 NaN\n5 4 NaN\n6 5 NaN\n\nLeaf Cluster Counts: \n\n CLUSTER_ID CNT\n0 3 1377\n1 4 2085\n2 5 1038\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1483341769","id":"20210302-002652_1077413536","dateCreated":"2021-01-12T22:35:12+0000","dateStarted":"2021-03-02T21:14:08+0000","dateFinished":"2021-03-02T21:14:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"text":"%md\n\n.\nDisplay the cluster details for all clusters in the hierarchy with row counts and dispersion. The dispersion value is a measure of how compact or how spread out the data is within a cluster. The dispersion value is greater than 0 - the lower the dispersion value, the more compact the cluster, and the closer the data points are to the centroid of the cluster. A larger value indicates the data points are more disperse or spread out from the controid.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Display the cluster details for all clusters in the hierarchy with row counts and dispersion. The dispersion value is a measure of how compact or how spread out the data is within a cluster. The dispersion value is greater than 0 - the lower the dispersion value, the more compact the cluster, and the closer the data points are to the centroid of the cluster. A larger value indicates the data points are more disperse or spread out from the controid.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1976291355","id":"20210302-002652_942322039","dateCreated":"2021-01-12T22:40:39+0000","dateStarted":"2021-03-02T21:14:09+0000","dateFinished":"2021-03-02T21:14:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:71"},{"text":"%python\n\nz.show(km_mod.clusters)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CLUSTER_ID":"string","ROW_CNT":"string","PARENT_CLUSTER_ID":"string","TREE_LEVEL":"string","DISPERSION":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CLUSTER_ID\tROW_CNT\tPARENT_CLUSTER_ID\tTREE_LEVEL\tDISPERSION\n1.0\t4500.0\tnan\t1.0\t6.276771678127229\n2.0\t3123.0\t1.0\t2.0\t6.5860271201254195\n3.0\t1377.0\t1.0\t2.0\t5.575388420784927\n4.0\t2085.0\t2.0\t3.0\t6.9385112173435965\n5.0\t1038.0\t2.0\t3.0\t5.878002705192953\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-898696414","id":"20210302-002652_191946039","dateCreated":"2021-01-12T22:40:54+0000","dateStarted":"2021-03-02T21:14:10+0000","dateFinished":"2021-03-02T21:14:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:72"},{"text":"%md\n.\nThe taxonomy shows the hierarchy of the child clusters in relationship to the parent clusters.","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
The taxonomy shows the hierarchy of the child clusters in relationship to the parent clusters.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1407126253","id":"20210302-002652_2024483406","dateCreated":"2021-01-16T00:26:07+0000","dateStarted":"2021-03-02T21:14:11+0000","dateFinished":"2021-03-02T21:14:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:73"},{"text":"%python\n\nz.show(km_mod.taxonomy)","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PARENT_CLUSTER_ID":"string","CHILD_CLUSTER_ID":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"PARENT_CLUSTER_ID\tCHILD_CLUSTER_ID\n1.0\t2.0\n1.0\t3.0\n2.0\t4.0\n2.0\t5.0\n3.0\tnan\n4.0\tnan\n5.0\tnan\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_2132577904","id":"20210302-002652_2015772413","dateCreated":"2021-01-16T00:16:46+0000","dateStarted":"2021-03-02T21:14:11+0000","dateFinished":"2021-03-02T21:14:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:74"},{"text":"%md\n.\nUse the model to predict cluster membership. The *supplemental_cols* argument carries the target column to the output to retain the relationship between the predictions and their original preditor values. These predictors may include a case id, for example to join with other tables, or mutiple (or all) columns of the scoring data. Users should be aware that unlike Pandas DataFrames, which are explicitly ordered in memory, results from relational databases do not have a specific order unless explicitly specified by an *ORDER BY* clause. As such, users cannot rely on results to maintain the same order across different data sets (tables and DataFrame proxy objects).","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the model to predict cluster membership. The supplemental_cols argument carries the target column to the output to retain the relationship between the predictions and their original preditor values. These predictors may include a case id, for example to join with other tables, or mutiple (or all) columns of the scoring data. Users should be aware that unlike Pandas DataFrames, which are explicitly ordered in memory, results from relational databases do not have a specific order unless explicitly specified by an ORDER BY clause. As such, users cannot rely on results to maintain the same order across different data sets (tables and DataFrame proxy objects).

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1047165917","id":"20210302-002652_367696263","dateCreated":"2021-01-12T22:48:40+0000","dateStarted":"2021-03-02T21:14:12+0000","dateFinished":"2021-03-02T21:14:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:75"},{"text":"%python\n\npred = km_mod.predict(CUST_DF, supplemental_cols = CUST_DF)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_-2024300313","id":"20210302-002652_419325800","dateCreated":"2021-01-12T22:49:05+0000","dateStarted":"2021-03-02T21:14:13+0000","dateFinished":"2021-03-02T21:14:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:76"},{"text":"%python\n\nz.show(pred)","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","YRS_RESIDENCE":"string","Y_BOX_GAMES":"string","CLUSTER_ID":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\tCLUSTER_ID\n100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4\n102828\tF\tNeverM\t1967\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t1\tMachine\t4\t0\t4\n101232\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n100696\tM\tMarried\t1971\tF: 110,000 - 129,999\t7000\tProfsc\t1\t3\tProf.\t3\t0\t5\n103948\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tCleric.\t4\t0\t4\n103791\tM\tDivorc.\t1952\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tProf.\t5\t0\t4\n100804\tF\tDivorc.\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tProf.\t6\t0\t4\n101610\tM\tNeverM\t1985\tI: 170,000 - 189,999\t3000\t11th\t0\t1\tHandler\t0\t1\t3\n102308\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tProf.\t2\t1\t3\n100593\tM\tMarried\t1963\tG: 130,000 - 149,999\t1500\tHS-grad\t1\t3\tProf.\t4\t0\t5\n100558\tM\tMarried\t1964\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t3\tMachine\t4\t0\t5\n103401\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tCrafts\t4\t1\t3\n102740\tF\tDivorc.\t1929\tK: 250,000 - 299,999\t15000\t10th\t0\t2\tOther\t0\t0\t4\n103049\tM\tMarried\t1970\tJ: 190,000 - 249,999\t7000\tAssoc-A\t1\t3\tProf.\t3\t0\t5\n103021\tM\tNeverM\t1978\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t2\tSales\t2\t1\t3\n103829\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t9+\tMachine\t3\t0\t4\n104077\tM\tNeverM\t1975\tL: 300,000 and above\t9000\tProfsc\t0\t2\tProf.\t3\t1\t3\n101243\tF\tNeverM\t1984\tK: 250,000 - 299,999\t7000\t11th\t0\t9+\t?\t1\t1\t3\n101798\tM\tMarried\t1960\tG: 130,000 - 149,999\t15000\tHS-grad\t1\t3\tExec.\t5\t0\t5\n101315\tM\tMarried\t1954\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t3\tCrafts\t5\t0\t4\n101940\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t1\t?\t2\t1\t3\n104454\tM\tMarried\t1943\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tSales\t8\t0\t5\n102060\tM\tNeverM\t1978\tL: 300,000 and above\t9000\tHS-grad\t0\t6-8\tHandler\t3\t1\t3\n101297\tF\tSepar.\t1960\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tSales\t1\t0\t4\n103046\tM\tMarried\t1954\tL: 300,000 and above\t7000\tBach.\t0\t3\tExec.\t6\t0\t4\n101392\tF\tDivorc.\t1948\tD: 70,000 - 89,999\t3000\tAssoc-V\t0\t9+\tCleric.\t6\t0\t4\n101893\tM\tNeverM\t1976\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\tCrafts\t3\t1\t3\n100019\tM\tMarried\t1971\tE: 90,000 - 109,999\t7000\tAssoc-V\t1\t3\tTransp.\t4\t0\t5\n102893\tF\tDivorc.\t1957\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t9+\tCleric.\t5\t0\t4\n102276\tM\tMarried\t1972\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t4\t0\t5\n103564\tM\tMarried\t1948\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tProf.\t6\t0\t5\n104459\tM\tMarried\t1963\tL: 300,000 and above\t11000\t7th-8th\t0\t3\tSales\t4\t0\t4\n102404\tM\tDivorc.\t1954\tK: 250,000 - 299,999\t11000\tMasters\t1\t2\tSales\t6\t0\t5\n101891\tM\tMarried\t1956\tJ: 190,000 - 249,999\t15000\tHS-grad\t1\t3\tCrafts\t5\t0\t5\n104426\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t6-8\tTechSup\t2\t1\t3\n102894\tM\tDivorc.\t1968\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t2\tExec.\t5\t0\t4\n102561\tF\tSepar.\t1954\tF: 110,000 - 129,999\t9000\t10th\t0\t9+\tOther\t5\t0\t4\n103302\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4\n103159\tM\tMarried\t1977\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t3\tCrafts\t3\t1\t3\n101044\tM\tMarried\t1966\tL: 300,000 and above\t11000\tMasters\t1\t3\tProf.\t5\t0\t5\n103613\tM\tMarried\t1966\tK: 250,000 - 299,999\t9000\tProfsc\t1\t3\tProf.\t4\t0\t5\n104388\tF\tNeverM\t1980\tK: 250,000 - 299,999\t7000\tBach.\t0\t6-8\tHandler\t2\t1\t3\n101898\tF\tMabsent\t1956\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t9+\tExec.\t5\t0\t4\n102955\tM\tMarried\t1921\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tCrafts\t8\t0\t4\n103065\tM\tNeverM\t1963\tI: 170,000 - 189,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4\n101724\tM\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tMachine\t4\t1\t3\n102815\tM\tMarried\t1970\tL: 300,000 and above\t7000\tHS-grad\t1\t3\tSales\t3\t0\t5\n100275\tM\tNeverM\t1963\tI: 170,000 - 189,999\t5000\tBach.\t0\t2\tCleric.\t4\t0\t4\n101956\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tProf.\t1\t1\t3\n100313\tM\tDivorc.\t1950\tK: 250,000 - 299,999\t15000\t< Bach.\t1\t2\tSales\t7\t0\t5\n103778\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tProf.\t3\t0\t5\n101170\tM\tMarried\t1970\tL: 300,000 and above\t7000\t< Bach.\t1\t3\tProf.\t3\t0\t5\n101519\tF\tDivorc.\t1957\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t9+\tSales\t5\t0\t4\n103706\tM\tMarried\t1949\tF: 110,000 - 129,999\t5000\tBach.\t1\t3\tExec.\t5\t0\t5\n101509\tM\tMarried\t1951\tK: 250,000 - 299,999\t11000\tBach.\t0\t3\tOther\t5\t0\t4\n100139\tM\tMarried\t1945\tJ: 190,000 - 249,999\t11000\t1st-4th\t0\t3\tOther\t6\t0\t4\n101113\tM\tMarried\t1969\tJ: 190,000 - 249,999\t7000\tBach.\t1\t3\tProf.\t3\t0\t5\n103583\tM\tMarried\t1957\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tMachine\t5\t0\t5\n101538\tM\tMarried\t1964\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tCrafts\t6\t0\t5\n103746\tF\tMarried\t1955\tD: 70,000 - 89,999\t9000\tHS-grad\t1\t4-5\tCleric.\t5\t0\t5\n101126\tF\tMarried\t1955\tD: 70,000 - 89,999\t10000\tHS-grad\t1\t4-5\tCleric.\t5\t0\t5\n101858\tM\tMarried\t1954\tH: 150,000 - 169,999\t1500\tAssoc-V\t1\t3\tProf.\t5\t0\t5\n102241\tF\tMarried\t1981\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t4-5\tSales\t2\t1\t3\n102708\tF\tMarried\t1967\tL: 300,000 and above\t9000\tBach.\t1\t4-5\tCleric.\t4\t0\t5\n104307\tM\tMarried\t1943\tH: 150,000 - 169,999\t7000\tProfsc\t1\t3\tProf.\t11\t0\t5\n101213\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tProtec.\t5\t0\t4\n100577\tM\tMarried\t1957\tH: 150,000 - 169,999\t7000\tBach.\t1\t3\tMachine\t5\t0\t5\n101641\tM\tMarried\t1946\tG: 130,000 - 149,999\t11000\tPhD\t1\t3\tTechSup\t6\t0\t5\n101739\tM\tMarried\t1974\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tSales\t3\t1\t3\n103878\tM\tDivorc.\t1966\tI: 170,000 - 189,999\t15000\t< Bach.\t0\t9+\tProtec.\t5\t0\t4\n101780\tM\tMarried\t1972\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tExec.\t4\t0\t5\n100962\tM\tMarried\t1943\tH: 150,000 - 169,999\t5000\tProfsc\t1\t3\tProf.\t11\t0\t5\n102453\tF\tDivorc.\t1960\tJ: 190,000 - 249,999\t15000\tBach.\t0\t9+\tCleric.\t4\t0\t4\n103391\tM\tNeverM\t1970\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tSales\t2\t0\t4\n100111\tM\tNeverM\t1970\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t2\tSales\t2\t0\t4\n102644\tM\tNeverM\t1967\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4\n103146\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4\n103890\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tTechSup\t2\t1\t3\n102866\tF\tSepar.\t1964\tL: 300,000 and above\t15000\tHS-grad\t0\t9+\tMachine\t2\t0\t4\n101647\tM\tMarried\t1952\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t3\tProf.\t5\t0\t5\n103000\tF\tDivorc.\t1963\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t2\tCleric.\t3\t0\t4\n103704\tF\tNeverM\t1982\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t9+\tSales\t2\t1\t3\n103767\tM\tMarried\t1947\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4\n100737\tF\tNeverM\t1983\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tSales\t2\t1\t3\n103446\tM\tMarried\t1959\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t3\tExec.\t4\t0\t4\n102256\tM\tNeverM\t1980\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t2\tCleric.\t1\t1\t3\n102180\tF\tMarried\t1940\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t4-5\tSales\t6\t0\t4\n104364\tF\tMarried\t1964\tF: 110,000 - 129,999\t5000\tBach.\t0\t4-5\tProf.\t4\t0\t4\n104253\tM\tMarried\t1973\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tHandler\t5\t0\t4\n103069\tM\tMarried\t1965\tH: 150,000 - 169,999\t11000\t< Bach.\t0\t3\tTechSup\t5\t0\t4\n103168\tF\tNeverM\t1978\tK: 250,000 - 299,999\t7000\tAssoc-A\t0\t9+\tCleric.\t3\t1\t3\n100524\tM\tMarried\t1970\tL: 300,000 and above\t11000\t< Bach.\t0\t3\tMachine\t5\t0\t4\n102127\tM\tMarried\t1954\tI: 170,000 - 189,999\t9000\t< Bach.\t1\t3\tSales\t10\t0\t5\n103840\tM\tNeverM\t1984\tL: 300,000 and above\t9000\t11th\t0\t1\tOther\t1\t1\t3\n100021\tM\tMarried\t1964\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t3\tExec.\t4\t0\t4\n101679\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\t< Bach.\t1\t3\tCrafts\t7\t0\t5\n102075\tM\tMarried\t1936\tD: 70,000 - 89,999\t3000\tHS-grad\t1\t3\tExec.\t7\t0\t5\n100560\tM\tMarried\t1940\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tSales\t5\t0\t4\n101925\tF\tNeverM\t1980\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t2\tOther\t2\t1\t3\n103012\tF\tDivorc.\t1956\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t9+\tCleric.\t5\t0\t4\n103155\tM\tNeverM\t1983\tL: 300,000 and above\t11000\t< Bach.\t0\t1\tOther\t2\t1\t3\n103491\tM\tMarried\t1971\tF: 110,000 - 129,999\t1500\tProfsc\t1\t3\tProf.\t3\t0\t5\n102688\tM\tMarried\t1976\tB: 30,000 - 49,999\t1500\tBach.\t0\t3\tTechSup\t2\t1\t3\n102274\tF\tWidowed\t1939\tJ: 190,000 - 249,999\t9000\t11th\t0\t2\t?\t6\t0\t4\n103743\tM\tMarried\t1955\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tSales\t7\t0\t4\n103732\tF\tNeverM\t1954\tB: 30,000 - 49,999\t3000\tProfsc\t1\t2\tProf.\t7\t0\t5\n102996\tM\tNeverM\t1986\tC: 50,000 - 69,999\t1500\t10th\t0\t1\tOther\t1\t1\t3\n100923\tM\tMarried\t1968\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n102130\tM\tMarried\t1977\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t3\tOther\t3\t1\t3\n101640\tM\tNeverM\t1974\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tExec.\t4\t1\t3\n102373\tF\tSepar.\t1952\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tSales\t5\t0\t4\n102932\tM\tMarried\t1949\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t3\tSales\t5\t0\t4\n100468\tM\tNeverM\t1978\tH: 150,000 - 169,999\t1500\tBach.\t0\t2\tExec.\t3\t1\t3\n104278\tM\tMarried\t1957\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tSales\t7\t0\t5\n103489\tM\tMarried\t1926\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t3\tSales\t2\t0\t4\n100045\tM\tMarried\t1970\tL: 300,000 and above\t15000\tAssoc-A\t0\t3\tSales\t5\t0\t4\n100838\tM\tMarried\t1973\tD: 70,000 - 89,999\t5000\tBach.\t1\t3\tExec.\t4\t0\t5\n100984\tM\tMarried\t1970\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t0\t4\n101530\tM\tMarried\t1969\tH: 150,000 - 169,999\t1500\tBach.\t1\t3\tProf.\t3\t0\t5\n101255\tF\tDivorc.\t1960\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t9+\tCleric.\t5\t0\t5\n100986\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tCrafts\t5\t0\t4\n103314\tM\tNeverM\t1973\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t2\tSales\t4\t0\t5\n102345\tM\tMarried\t1959\tL: 300,000 and above\t11000\tBach.\t1\t3\tSales\t7\t0\t5\n103143\tF\tNeverM\t1971\tE: 90,000 - 109,999\t9000\tBach.\t0\t2\tCleric.\t4\t0\t4\n102901\tM\tMarried\t1948\tC: 50,000 - 69,999\t1500\t9th\t0\t3\tFarming\t4\t0\t4\n104010\tM\tMarried\t1953\tA: Below 30,000\t1500\t< Bach.\t1\t3\tProtec.\t5\t0\t5\n100955\tM\tMarried\t1952\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t3\tCrafts\t3\t0\t4\n101907\tM\tNeverM\t1947\tK: 250,000 - 299,999\t9000\tBach.\t1\t2\tExec.\t7\t0\t5\n103315\tM\tMarried\t1949\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tTransp.\t4\t0\t4\n102801\tM\tMarried\t1947\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t3\tExec.\t7\t0\t4\n104171\tM\tMarried\t1975\tJ: 190,000 - 249,999\t10000\t< Bach.\t0\t3\tCrafts\t3\t1\t3\n103085\tM\tDivorc.\t1954\tH: 150,000 - 169,999\t7000\tAssoc-V\t1\t2\tExec.\t6\t0\t5\n101584\tF\tNeverM\t1976\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tExec.\t3\t1\t3\n101947\tM\tMarried\t1955\tF: 110,000 - 129,999\t5000\t9th\t0\t3\tCrafts\t5\t0\t4\n100176\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tProtec.\t4\t0\t5\n102978\tM\tMarried\t1943\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tExec.\t6\t0\t5\n101285\tM\tMabsent\t1924\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tProf.\t2\t0\t4\n103870\tF\tMarried\t1969\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t4-5\tOther\t3\t0\t4\n104218\tM\tNeverM\t1982\tE: 90,000 - 109,999\t9000\tAssoc-V\t0\t2\tOther\t2\t1\t3\n100290\tM\tMarried\t1925\tC: 50,000 - 69,999\t5000\t7th-8th\t0\t3\tFarming\t6\t0\t4\n103855\tM\tMarried\t1970\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\tCrafts\t3\t0\t4\n100711\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t9+\tCleric.\t4\t0\t4\n104160\tM\tNeverM\t1961\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tFarming\t9\t0\t4\n101772\tM\tNeverM\t1980\tI: 170,000 - 189,999\t3000\tAssoc-V\t0\t1\tSales\t2\t1\t3\n103770\tM\tNeverM\t1985\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tHandler\t1\t1\t3\n102289\tM\tMarried\t1942\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCleric.\t6\t0\t5\n100249\tF\tNeverM\t1966\tJ: 190,000 - 249,999\t15000\tMasters\t0\t1\tExec.\t4\t0\t4\n103841\tF\tNeverM\t1980\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t1\tMachine\t2\t1\t3\n104123\tM\tMarried\t1975\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tHandler\t3\t1\t3\n103431\tM\tDivorc.\t1963\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tHandler\t4\t0\t4\n101036\tM\tMarried\t1945\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t3\tTechSup\t6\t0\t4\n100827\tM\tMarried\t1945\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tCleric.\t6\t0\t5\n104257\tF\tMar-AF\t1968\tL: 300,000 and above\t11000\tAssoc-A\t0\t4-5\tCleric.\t4\t0\t4\n102213\tM\tNeverM\t1975\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t6-8\tMachine\t2\t1\t3\n102590\tF\tWidowed\t1962\tA: Below 30,000\t1500\t< Bach.\t0\t2\t?\t2\t0\t4\n101034\tM\tNeverM\t1966\tH: 150,000 - 169,999\t10000\tMasters\t0\t9+\tProf.\t4\t0\t4\n103460\tM\tMarried\t1945\tG: 130,000 - 149,999\t5000\tBach.\t0\t3\tOther\t6\t0\t4\n101617\tF\tNeverM\t1981\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t1\t?\t0\t1\t3\n101968\tM\tMarried\t1973\tI: 170,000 - 189,999\t1500\t< Bach.\t1\t3\tExec.\t3\t0\t5\n100031\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t1500\tBach.\t0\t6-8\tSales\t4\t0\t4\n100665\tM\tMarried\t1945\tG: 130,000 - 149,999\t7000\tBach.\t0\t3\tOther\t6\t0\t4\n102742\tF\tMarried\t1950\tG: 130,000 - 149,999\t5000\tBach.\t0\t4-5\tCleric.\t7\t0\t4\n102034\tM\tMarried\t1954\tG: 130,000 - 149,999\t7000\tBach.\t1\t3\tSales\t6\t0\t5\n104139\tM\tNeverM\t1966\tH: 150,000 - 169,999\t3000\tMasters\t0\t9+\tProf.\t4\t0\t4\n102997\tM\tMarried\t1962\tL: 300,000 and above\t9000\tBach.\t0\t3\tExec.\t4\t0\t4\n104313\tM\tDivorc.\t1958\tE: 90,000 - 109,999\t1500\tBach.\t0\t2\tProf.\t6\t0\t4\n100968\tM\tDivorc.\t1958\tE: 90,000 - 109,999\t9000\tBach.\t0\t2\tProf.\t6\t0\t4\n100343\tM\tMarried\t1966\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t3\tExec.\t4\t0\t5\n103645\tM\tMarried\t1966\tJ: 190,000 - 249,999\t10000\tAssoc-A\t1\t3\tExec.\t4\t0\t5\n102495\tF\tNeverM\t1973\tB: 30,000 - 49,999\t5000\tMasters\t0\t2\tCleric.\t3\t0\t4\n101624\tM\tNeverM\t1966\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t1\tOther\t4\t0\t4\n102351\tM\tMarried\t1964\tL: 300,000 and above\t9000\tBach.\t1\t3\tProf.\t5\t0\t5\n100579\tF\tMarried\t1947\tE: 90,000 - 109,999\t7000\t10th\t1\t4-5\tSales\t4\t0\t5\n103585\tF\tMarried\t1947\tE: 90,000 - 109,999\t5000\t10th\t1\t4-5\tSales\t4\t0\t5\n103505\tF\tDivorc.\t1942\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t2\tCleric.\t6\t0\t4\n100771\tF\tDivorc.\t1942\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tCleric.\t6\t0\t4\n101349\tF\tDivorc.\t1947\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t9+\tOther\t6\t0\t4\n102324\tM\tMarried\t1960\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tTechSup\t4\t0\t5\n101921\tF\tNeverM\t1978\tL: 300,000 and above\t11000\tBach.\t0\t2\tOther\t1\t1\t3\n101551\tM\tMarried\t1937\tI: 170,000 - 189,999\t9000\tPhD\t1\t3\tProf.\t7\t0\t5\n100465\tM\tMarried\t1978\tF: 110,000 - 129,999\t9000\tAssoc-A\t0\t3\tHandler\t3\t1\t3\n100374\tM\tNeverM\t1979\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t2\tSales\t2\t1\t3\n103783\tF\tMabsent\t1964\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t9+\tSales\t3\t0\t4\n104437\tF\tDivorc.\t1947\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t9+\tOther\t6\t0\t4\n100551\tF\tMabsent\t1964\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tSales\t3\t0\t4\n103676\tM\tNeverM\t1979\tC: 50,000 - 69,999\t3000\t< Bach.\t0\t2\tSales\t2\t1\t3\n103245\tM\tMarried\t1978\tF: 110,000 - 129,999\t1500\tAssoc-A\t0\t3\tHandler\t3\t1\t3\n103865\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tMasters\t0\t3\tTransp.\t4\t0\t4\n102902\tF\tDivorc.\t1958\tH: 150,000 - 169,999\t5000\t< Bach.\t0\t2\tTechSup\t5\t0\t4\n102012\tF\tNeverM\t1977\tL: 300,000 and above\t9000\tBach.\t0\t2\tExec.\t3\t1\t3\n101868\tF\tNeverM\t1960\tC: 50,000 - 69,999\t3000\t9th\t0\t1\tSales\t4\t0\t4\n100893\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tOther\t4\t0\t4\n103628\tF\tNeverM\t1974\tF: 110,000 - 129,999\t5000\tBach.\t0\t1\tCleric.\t3\t1\t3\n103702\tM\tDivorc.\t1944\tC: 50,000 - 69,999\t1500\t12th\t0\t6-8\tTransp.\t6\t0\t4\n101063\tM\tMarried\t1951\tE: 90,000 - 109,999\t10000\tHS-grad\t1\t3\tProf.\t5\t0\t5\n101678\tM\tMarried\t1967\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t3\tMachine\t4\t0\t5\n100309\tM\tMarried\t1951\tI: 170,000 - 189,999\t11000\tAssoc-A\t1\t3\tExec.\t8\t0\t5\n101983\tM\tMarried\t1960\tI: 170,000 - 189,999\t3000\tBach.\t1\t3\tSales\t4\t0\t5\n100594\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t6-8\tSales\t1\t1\t3\n103224\tF\tNeverM\t1962\tB: 30,000 - 49,999\t3000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n100774\tF\tNeverM\t1983\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n101665\tM\tNeverM\t1985\tH: 150,000 - 169,999\t5000\t11th\t0\t1\tProtec.\t0\t1\t3\n101852\tF\tNeverM\t1972\tJ: 190,000 - 249,999\t11000\tBach.\t0\t1\tCleric.\t3\t0\t4\n100499\tM\tMarried\t1945\tG: 130,000 - 149,999\t5000\tAssoc-A\t0\t3\tCrafts\t6\t0\t4\n101663\tF\tDivorc.\t1965\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t2\tSales\t4\t0\t4\n103713\tM\tDivorc.\t1967\tL: 300,000 and above\t7000\tAssoc-V\t0\t2\tCrafts\t4\t0\t4\n104295\tM\tMarried\t1958\tG: 130,000 - 149,999\t11000\tHS-grad\t1\t3\tSales\t6\t0\t5\n100463\tF\tNeverM\t1974\tG: 130,000 - 149,999\t10000\t< Bach.\t0\t1\tSales\t3\t1\t3\n100574\tF\tNeverM\t1961\tL: 300,000 and above\t11000\tMasters\t1\t2\tProf.\t5\t0\t5\n101766\tF\tNeverM\t1969\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t2\tCleric.\t3\t0\t4\n103823\tF\tSepar.\t1974\tI: 170,000 - 189,999\t3000\t< Bach.\t0\t9+\tCleric.\t3\t1\t3\n102064\tM\tNeverM\t1962\tC: 50,000 - 69,999\t3000\tBach.\t0\t2\tHandler\t4\t0\t4\n103414\tF\tDivorc.\t1965\tL: 300,000 and above\t11000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4\n101672\tF\tNeverM\t1977\tH: 150,000 - 169,999\t5000\tBach.\t0\t2\tSales\t4\t1\t3\n104342\tM\tNeverM\t1979\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tExec.\t3\t1\t3\n103015\tM\tNeverM\t1979\tK: 250,000 - 299,999\t9000\tBach.\t0\t1\t?\t2\t1\t3\n101804\tF\tDivorc.\t1971\tK: 250,000 - 299,999\t15000\tAssoc-A\t0\t2\tMachine\t4\t0\t4\n100246\tM\tNeverM\t1978\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t2\tSales\t2\t1\t3\n100588\tM\tMarried\t1969\tE: 90,000 - 109,999\t5000\tBach.\t0\t3\tProf.\t3\t0\t4\n101723\tF\tDivorc.\t1950\tA: Below 30,000\t1500\t< Bach.\t0\t2\tProf.\t5\t0\t4\n100247\tF\tMarried\t1966\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t4-5\tCleric.\t4\t0\t4\n101114\tM\tMarried\t1967\tC: 50,000 - 69,999\t9000\tBach.\t1\t3\tSales\t4\t0\t5\n101274\tM\tMarried\t1969\tK: 250,000 - 299,999\t7000\t11th\t0\t3\tMachine\t3\t0\t4\n100793\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tSales\t5\t0\t5\n100217\tM\tMabsent\t1957\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t2\tFarming\t8\t0\t4\n103358\tM\tMarried\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tTransp.\t3\t1\t3\n102199\tM\tNeverM\t1984\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101413\tF\tNeverM\t1955\tH: 150,000 - 169,999\t5000\t< Bach.\t1\t2\tExec.\t5\t0\t5\n101132\tF\tNeverM\t1968\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t1\tCleric.\t4\t0\t4\n100553\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tHS-grad\t1\t3\tOther\t3\t0\t5\n100279\tM\tMarried\t1965\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t3\tTechSup\t5\t0\t4\n101705\tF\tNeverM\t1982\tJ: 190,000 - 249,999\t9000\tAssoc-V\t0\t1\tTechSup\t2\t1\t3\n100126\tM\tMarried\t1968\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n102486\tM\tMarried\t1956\tL: 300,000 and above\t9000\tProfsc\t1\t3\tProf.\t7\t0\t5\n100673\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\tAssoc-A\t0\t3\tProf.\t6\t0\t4\n103820\tM\tNeverM\t1977\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t1\tCrafts\t3\t1\t3\n101225\tF\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tTechSup\t2\t1\t3\n100457\tM\tNeverM\t1976\tL: 300,000 and above\t9000\tAssoc-V\t0\t6-8\tProf.\t2\t1\t3\n102961\tM\tMarried\t1965\tK: 250,000 - 299,999\t9000\tBach.\t1\t3\tSales\t4\t0\t5\n103163\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t9000\tAssoc-A\t0\t9+\tProf.\t3\t0\t4\n103323\tM\tMarried\t1946\tL: 300,000 and above\t15000\t< Bach.\t1\t3\tTechSup\t6\t0\t5\n103325\tF\tNeverM\t1954\tB: 30,000 - 49,999\t1500\tHS-grad\t0\t9+\tTransp.\t5\t0\t4\n102329\tF\tWidowed\t1929\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t2\tTransp.\t4\t0\t4\n100742\tF\tNeverM\t1985\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t1\t1\t3\n101846\tM\tMarried\t1952\tH: 150,000 - 169,999\t3000\tBach.\t1\t3\tCleric.\t5\t0\t5\n103240\tM\tNeverM\t1978\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t1\tCrafts\t4\t1\t3\n103223\tM\tMarried\t1948\tG: 130,000 - 149,999\t3000\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n100230\tM\tMarried\t1956\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t6\t0\t4\n101917\tM\tMarried\t1954\tJ: 190,000 - 249,999\t15000\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n101032\tM\tDivorc.\t1964\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tCrafts\t4\t0\t4\n103349\tF\tDivorc.\t1958\tG: 130,000 - 149,999\t7000\tProfsc\t0\t9+\tProf.\t5\t0\t4\n104003\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tTransp.\t4\t0\t4\n103685\tF\tMarried\t1974\tG: 130,000 - 149,999\t5000\t7th-8th\t0\t4-5\tOther\t3\t1\t3\n103698\tF\tDivorc.\t1956\tG: 130,000 - 149,999\t3000\t< Bach.\t0\t2\tCleric.\t7\t0\t4\n102226\tM\tMarried\t1969\tD: 70,000 - 89,999\t5000\t< Bach.\t0\t3\tFarming\t6\t0\t4\n101847\tF\tSepar.\t1958\tH: 150,000 - 169,999\t7000\t11th\t0\t9+\tCleric.\t3\t0\t4\n100715\tF\tNeverM\t1976\tL: 300,000 and above\t15000\t< Bach.\t0\t2\tCleric.\t3\t1\t3\n102149\tM\tMabsent\t1975\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t1\tMachine\t3\t1\t3\n103083\tM\tMarried\t1965\tL: 300,000 and above\t7000\tBach.\t1\t3\tExec.\t5\t0\t5\n102631\tM\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tExec.\t3\t0\t4\n101047\tM\tMarried\t1941\tL: 300,000 and above\t11000\tBach.\t1\t3\tSales\t3\t0\t5\n100383\tF\tMarried\t1974\tG: 130,000 - 149,999\t7000\t7th-8th\t0\t4-5\tOther\t3\t1\t3\n101636\tM\tNeverM\t1986\tL: 300,000 and above\t15000\t12th\t0\t1\tOther\t1\t1\t3\n100154\tF\tDivorc.\t1956\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t9+\tExec.\t5\t0\t4\n104405\tM\tDivorc.\t1975\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tTechSup\t1\t1\t3\n104008\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t2\tMachine\t2\t1\t3\n101752\tF\tNeverM\t1983\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\tProf.\t1\t1\t3\n102478\tF\tNeverM\t1984\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t1\t1\t3\n104312\tM\tMarried\t1970\tJ: 190,000 - 249,999\t15000\t10th\t0\t3\tMachine\t3\t0\t4\n102697\tM\tNeverM\t1982\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101302\tF\tNeverM\t1965\tF: 110,000 - 129,999\t10000\tBach.\t0\t2\tCrafts\t2\t0\t4\n102002\tM\tMarried\t1943\tF: 110,000 - 129,999\t7000\t7th-8th\t0\t3\tMachine\t6\t0\t4\n103953\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t9000\t12th\t0\t2\tOther\t4\t0\t4\n100622\tF\tNeverM\t1974\tF: 110,000 - 129,999\t7000\tBach.\t0\t1\tCleric.\t3\t1\t3\n100844\tM\tMarried\t1964\tJ: 190,000 - 249,999\t15000\tMasters\t0\t3\tTransp.\t4\t0\t4\n101583\tM\tDivorc.\t1946\tL: 300,000 and above\t11000\t1st-4th\t0\t9+\tCrafts\t6\t0\t4\n101844\tM\tMarried\t1947\tD: 70,000 - 89,999\t1500\t7th-8th\t0\t3\tCrafts\t6\t0\t4\n102513\tM\tNeverM\t1962\tG: 130,000 - 149,999\t15000\tHS-grad\t0\t2\tTransp.\t4\t0\t4\n103571\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tAssoc-A\t0\t6-8\tOther\t3\t0\t4\n101478\tF\tMarried\t1979\tC: 50,000 - 69,999\t3000\t1st-4th\t0\t1\tOther\t1\t1\t3\n102723\tM\tMarried\t1962\tD: 70,000 - 89,999\t3000\tBach.\t0\t3\tOther\t3\t0\t4\n101613\tM\tNeverM\t1970\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t9+\tOther\t3\t0\t4\n103845\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t15000\tBach.\t0\t9+\tTechSup\t3\t1\t3\n100824\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t9+\tTechSup\t3\t1\t3\n102218\tM\tNeverM\t1973\tG: 130,000 - 149,999\t1500\tAssoc-V\t0\t6-8\tCleric.\t3\t0\t4\n104403\tF\tMarried\t1979\tC: 50,000 - 69,999\t7000\t1st-4th\t0\t1\tOther\t1\t1\t3\n102178\tF\tNeverM\t1976\tF: 110,000 - 129,999\t7000\t5th-6th\t0\t1\tSales\t1\t1\t3\n102129\tM\tMarried\t1973\tH: 150,000 - 169,999\t5000\tBach.\t1\t3\tCrafts\t3\t0\t5\n100761\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tAssoc-A\t0\t6-8\tOther\t3\t0\t4\n100823\tM\tMabsent\t1947\tE: 90,000 - 109,999\t9000\tAssoc-A\t0\t2\tOther\t4\t0\t4\n103844\tM\tMabsent\t1947\tE: 90,000 - 109,999\t10000\tAssoc-A\t0\t2\tOther\t4\t0\t4\n101481\tF\tNeverM\t1979\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n101304\tF\tDivorc.\t1960\tI: 170,000 - 189,999\t5000\t< Bach.\t0\t9+\tExec.\t5\t0\t4\n102933\tM\tDivorc.\t1965\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tCrafts\t4\t0\t4\n104229\tF\tDivorc.\t1960\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t9+\tExec.\t5\t0\t4\n104406\tF\tNeverM\t1979\tF: 110,000 - 129,999\t3000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n101799\tM\tDivorc.\t1944\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tProf.\t3\t0\t4\n103296\tF\tWidowed\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tExec.\t6\t0\t4\n102639\tF\tNeverM\t1979\tL: 300,000 and above\t15000\tHS-grad\t0\t2\tHouse-s\t3\t1\t3\n100015\tM\tSepar.\t1959\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tExec.\t6\t0\t4\n100546\tF\tWidowed\t1943\tA: Below 30,000\t1500\t< Bach.\t0\t2\tExec.\t6\t0\t4\n101756\tF\tNeverM\t1973\tI: 170,000 - 189,999\t15000\t< Bach.\t0\t2\tExec.\t3\t0\t4\n100887\tM\tMarried\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n104022\tM\tMarried\t1959\tF: 110,000 - 129,999\t5000\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n103130\tM\tSepar.\t1959\tL: 300,000 and above\t15000\t< Bach.\t0\t2\tExec.\t6\t0\t4\n103913\tF\tDivorc.\t1948\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tSales\t6\t0\t4\n101248\tF\tDivorc.\t1948\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tSales\t6\t0\t4\n102824\tM\tMarried\t1960\tK: 250,000 - 299,999\t15000\tBach.\t1\t3\tExec.\t4\t0\t5\n101906\tF\tMarried\t1974\tE: 90,000 - 109,999\t9000\t< Bach.\t1\t4-5\tCleric.\t3\t1\t3\n100934\tM\tMabsent\t1974\tB: 30,000 - 49,999\t5000\tBach.\t0\t2\t?\t4\t1\t3\n103294\tM\tMarried\t1952\tF: 110,000 - 129,999\t5000\tMasters\t1\t3\tExec.\t5\t0\t5\n103408\tF\tMarried\t1968\tE: 90,000 - 109,999\t1500\tBach.\t1\t4-5\tExec.\t3\t0\t5\n100508\tM\tMarried\t1957\tL: 300,000 and above\t15000\tBach.\t0\t3\tTechSup\t5\t0\t4\n101383\tF\tNeverM\t1980\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101722\tM\tMarried\t1946\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tExec.\t6\t0\t4\n101560\tM\tMarried\t1957\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5\n104294\tM\tMarried\t1977\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tTransp.\t5\t1\t3\n101205\tM\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tHandler\t6\t0\t4\n102271\tM\tMarried\t1972\tF: 110,000 - 129,999\t5000\t< Bach.\t1\t3\tFarming\t4\t0\t5\n104213\tM\tMarried\t1967\tI: 170,000 - 189,999\t5000\t9th\t0\t3\tTransp.\t5\t0\t4\n103758\tM\tMarried\t1966\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n103434\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t1\tOther\t3\t0\t4\n103547\tF\tNeverM\t1983\tI: 170,000 - 189,999\t3000\tHS-grad\t0\t2\tSales\t2\t1\t3\n104182\tM\tMarried\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tProtec.\t3\t1\t3\n101533\tF\tMabsent\t1955\tG: 130,000 - 149,999\t7000\tBach.\t0\t9+\tCleric.\t5\t0\t4\n103569\tM\tDivorc.\t1939\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tExec.\t10\t0\t5\n102684\tF\tMabsent\t1981\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t9+\t?\t2\t1\t3\n101283\tF\tWidowed\t1959\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t9+\tCleric.\t3\t0\t4\n104267\tM\tNeverM\t1969\tL: 300,000 and above\t7000\t< Bach.\t1\t2\tProf.\t4\t0\t5\n103202\tM\tDivorc.\t1955\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t2\tCrafts\t5\t0\t4\n102605\tM\tMarried\t1970\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tExec.\t3\t0\t5\n101219\tF\tMarried\t1952\tA: Below 30,000\t1500\t< Bach.\t1\t4-5\tExec.\t1\t0\t5\n101078\tM\tMarried\t1948\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tExec.\t6\t0\t5\n102741\tM\tMarried\t1970\tL: 300,000 and above\t9000\tMasters\t1\t3\tProf.\t2\t0\t5\n103018\tF\tMarried\t1969\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t4-5\tProf.\t3\t0\t5\n101469\tF\tMarried\t1957\tI: 170,000 - 189,999\t9000\tBach.\t1\t4-5\tProf.\t5\t0\t5\n103484\tM\tNeverM\t1976\tB: 30,000 - 49,999\t1500\tAssoc-A\t0\t2\tOther\t3\t1\t3\n100256\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tProf.\t9\t0\t5\n101652\tM\tMarried\t1961\tD: 70,000 - 89,999\t10000\tBach.\t0\t3\tFarming\t7\t0\t4\n103113\tM\tDivorc.\t1954\tH: 150,000 - 169,999\t15000\t< Bach.\t1\t2\tProf.\t5\t0\t5\n103222\tM\tMarried\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t3\t0\t4\n103868\tM\tDivorc.\t1976\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t2\tCleric.\t3\t1\t3\n102770\tF\tWidowed\t1967\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t9+\tOther\t2\t0\t4\n101520\tM\tMarried\t1964\tB: 30,000 - 49,999\t3000\tHS-grad\t1\t3\tTransp.\t5\t0\t5\n103885\tM\tNeverM\t1984\tI: 170,000 - 189,999\t3000\t11th\t0\t1\tMachine\t3\t1\t3\n104073\tF\tNeverM\t1980\tL: 300,000 and above\t7000\t< Bach.\t0\t2\tProf.\t3\t1\t3\n103189\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\t11th\t1\t3\tFarming\t6\t0\t5\n103270\tM\tMarried\t1964\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t3\tHandler\t5\t0\t4\n100527\tM\tMarried\t1966\tB: 30,000 - 49,999\t1500\tHS-grad\t1\t3\tProf.\t5\t0\t5\n100614\tM\tNeverM\t1986\tE: 90,000 - 109,999\t1500\t11th\t0\t1\tHandler\t0\t1\t3\n100766\tF\tDivorc.\t1958\tL: 300,000 and above\t9000\tProfsc\t0\t9+\tProf.\t5\t0\t4\n101108\tF\tMarried\t1967\tL: 300,000 and above\t9000\tAssoc-A\t1\t4-5\tExec.\t5\t0\t5\n103386\tF\tMarried\t1963\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t4-5\tExec.\t4\t0\t4\n102409\tF\tNeverM\t1981\tF: 110,000 - 129,999\t3000\tBach.\t0\t1\tProf.\t2\t1\t3\n100651\tM\tMarried\t1959\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t3\tExec.\t4\t0\t4\n100105\tM\tNeverM\t1976\tJ: 190,000 - 249,999\t10000\tBach.\t0\t1\tCleric.\t3\t1\t3\n103578\tF\tSepar.\t1959\tJ: 190,000 - 249,999\t9000\tBach.\t0\t9+\tMachine\t1\t0\t4\n103378\tM\tSepar.\t1978\tJ: 190,000 - 249,999\t9000\t11th\t0\t1\tCrafts\t3\t1\t3\n102295\tM\tMarried\t1943\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t3\tSales\t8\t0\t4\n104256\tM\tMarried\t1952\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tCrafts\t5\t0\t4\n103593\tF\tDivorc.\t1952\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t9+\tCleric.\t5\t0\t4\n103227\tF\tDivorc.\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tTechSup\t3\t1\t3\n103750\tF\tDivorc.\t1960\tC: 50,000 - 69,999\t1500\tHS-grad\t1\t9+\tExec.\t4\t0\t5\n100739\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t4\t0\t5\n101467\tM\tMarried\t1959\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t3\tSales\t8\t0\t4\n104159\tM\tMarried\t1967\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tSales\t5\t0\t4\n100493\tM\tNeverM\t1968\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t2\tCleric.\t4\t0\t5\n101988\tM\tMarried\t1970\tG: 130,000 - 149,999\t15000\tProfsc\t1\t3\tProf.\t3\t0\t5\n100891\tM\tMarried\t1948\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tCrafts\t7\t0\t4\n100646\tF\tWidowed\t1941\tG: 130,000 - 149,999\t1500\tBach.\t0\t9+\tTechSup\t2\t0\t4\n103984\tF\tNeverM\t1967\tC: 50,000 - 69,999\t1500\tBach.\t0\t2\tCleric.\t5\t0\t4\n101800\tM\tMarried\t1958\tG: 130,000 - 149,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5\n100285\tF\tDivorc.\t1965\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t9+\tExec.\t4\t0\t4\n103282\tM\tMarried\t1968\tC: 50,000 - 69,999\t1500\tAssoc-V\t0\t3\tCrafts\t4\t0\t4\n100686\tM\tMarried\t1957\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tMachine\t5\t0\t4\n100526\tM\tNeverM\t1968\tL: 300,000 and above\t7000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n102527\tF\tDivorc.\t1959\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tOther\t4\t0\t4\n104206\tM\tMarried\t1947\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5\n102222\tM\tMarried\t1956\tI: 170,000 - 189,999\t3000\tBach.\t1\t3\tSales\t7\t0\t5\n103668\tF\tDivorc.\t1957\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t2\tTechSup\t3\t0\t4\n104329\tM\tMarried\t1965\tK: 250,000 - 299,999\t7000\tBach.\t0\t3\tCrafts\t5\t0\t4\n103700\tM\tMarried\t1968\tD: 70,000 - 89,999\t15000\tBach.\t0\t3\tOther\t4\t0\t4\n101659\tF\tNeverM\t1983\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t1\tSales\t2\t1\t3\n103797\tF\tDivorc.\t1967\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t9+\tOther\t4\t0\t4\n102698\tM\tNeverM\t1981\tI: 170,000 - 189,999\t11000\tAssoc-A\t0\t1\tHandler\t2\t1\t3\n101117\tM\tMarried\t1973\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tMachine\t3\t0\t5\n103291\tM\tMarried\t1961\tK: 250,000 - 299,999\t7000\tHS-grad\t1\t3\tMachine\t5\t0\t5\n102927\tM\tNeverM\t1963\tI: 170,000 - 189,999\t11000\t< Bach.\t1\t2\tExec.\t5\t0\t5\n102091\tM\tMarried\t1969\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tCrafts\t3\t0\t4\n102366\tF\tDivorc.\t1975\tL: 300,000 and above\t11000\tBach.\t1\t9+\tOther\t4\t1\t3\n101713\tM\tMabsent\t1952\tH: 150,000 - 169,999\t10000\tHS-grad\t1\t2\t?\t3\t0\t5\n101253\tM\tNeverM\t1978\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t2\tProf.\t3\t1\t3\n102681\tM\tMarried\t1955\tK: 250,000 - 299,999\t7000\tAssoc-A\t0\t3\tProf.\t5\t0\t4\n102344\tF\tDivorc.\t1979\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t2\tCleric.\t2\t1\t3\n101010\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tMasters\t1\t3\tExec.\t6\t0\t5\n102683\tM\tSepar.\t1969\tL: 300,000 and above\t7000\tHS-grad\t1\t2\tCleric.\t4\t0\t5\n100205\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t1\tFarming\t2\t1\t3\n101862\tF\tMarried\t1947\tE: 90,000 - 109,999\t3000\tHS-grad\t0\t4-5\tSales\t7\t0\t4\n102249\tM\tMarried\t1963\tG: 130,000 - 149,999\t3000\tHS-grad\t1\t3\tSales\t6\t0\t5\n103365\tM\tMarried\t1944\tH: 150,000 - 169,999\t3000\tHS-grad\t1\t3\tMachine\t6\t0\t5\n104386\tM\tMarried\t1937\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t3\t?\t8\t0\t4\n102108\tM\tNeverM\t1981\tL: 300,000 and above\t15000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101598\tF\tNeverM\t1971\tF: 110,000 - 129,999\t7000\t< Bach.\t0\t2\tCleric.\t4\t0\t4\n100974\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4\n103384\tM\tSepar.\t1982\tI: 170,000 - 189,999\t11000\t10th\t0\t1\tMachine\t2\t1\t3\n103452\tF\tNeverM\t1985\tD: 70,000 - 89,999\t5000\tHS-grad\t0\t1\tTechSup\t0\t1\t3\n101104\tM\tNeverM\t1982\tH: 150,000 - 169,999\t11000\tHS-grad\t0\t6-8\tMachine\t2\t1\t3\n101651\tM\tMarried\t1930\tG: 130,000 - 149,999\t10000\tBach.\t0\t3\t?\t2\t0\t4\n103278\tM\tNeverM\t1973\tL: 300,000 and above\t11000\t11th\t1\t2\tCrafts\t4\t0\t5\n104387\tM\tNeverM\t1980\tF: 110,000 - 129,999\t9000\tAssoc-A\t0\t1\tCleric.\t2\t1\t3\n103815\tF\tNeverM\t1976\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t1\tOther\t2\t1\t3\n100159\tM\tNeverM\t1982\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t6-8\t?\t3\t1\t3\n100886\tM\tNeverM\t1983\tH: 150,000 - 169,999\t3000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101290\tM\tNeverM\t1967\tB: 30,000 - 49,999\t3000\tAssoc-V\t1\t2\tCleric.\t4\t0\t5\n100765\tM\tDivorc.\t1964\tL: 300,000 and above\t11000\t10th\t0\t1\tHandler\t4\t0\t4\n101261\tF\tNeverM\t1980\tL: 300,000 and above\t9000\t10th\t0\t2\tOther\t2\t1\t3\n100102\tM\tNeverM\t1966\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4\n100492\tF\tNeverM\t1983\tL: 300,000 and above\t11000\tHS-grad\t0\t1\tCleric.\t2\t1\t3\n101106\tM\tMarried\t1968\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n100088\tM\tNeverM\t1967\tL: 300,000 and above\t11000\t7th-8th\t0\t9+\tCrafts\t4\t0\t4\n104415\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\t7th-8th\t0\t1\tMachine\t2\t1\t3\n103888\tM\tNeverM\t1981\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t2\tSales\t2\t1\t3\n101148\tM\tMarried\t1967\tH: 150,000 - 169,999\t15000\t< Bach.\t0\t3\tExec.\t6\t0\t4\n101257\tM\tMarried\t1972\tJ: 190,000 - 249,999\t15000\tHS-grad\t1\t3\tProtec.\t3\t0\t5\n100658\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t9+\tCrafts\t2\t1\t3\n100510\tM\tMarried\t1962\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n101816\tM\tMarried\t1959\tB: 30,000 - 49,999\t7000\tBach.\t1\t3\tExec.\t4\t0\t5\n100282\tM\tMarried\t1971\tB: 30,000 - 49,999\t3000\tBach.\t1\t3\tExec.\t4\t0\t5\n101329\tF\tNeverM\t1985\tF: 110,000 - 129,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n101974\tM\tMarried\t1969\tA: Below 30,000\t1500\tHS-grad\t0\t3\tFarming\t7\t0\t4\n103842\tM\tNeverM\t1980\tL: 300,000 and above\t7000\tBach.\t0\t2\tOther\t2\t1\t3\n103614\tM\tNeverM\t1982\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n104000\tF\tDivorc.\t1968\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tCleric.\t4\t0\t4\n101664\tM\tMarried\t1956\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t3\tExec.\t9\t0\t5\n101881\tF\tNeverM\t1976\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tOther\t3\t1\t3\n103055\tM\tMarried\t1970\tL: 300,000 and above\t11000\tAssoc-A\t0\t3\tSales\t5\t0\t4\n103213\tM\tMarried\t1959\tH: 150,000 - 169,999\t10000\tAssoc-A\t1\t3\tProf.\t4\t0\t5\n101013\tF\tNeverM\t1975\tI: 170,000 - 189,999\t11000\tHS-grad\t0\t1\tExec.\t3\t1\t3\n101528\tM\tSepar.\t1951\tK: 250,000 - 299,999\t9000\tHS-grad\t0\t2\tCrafts\t5\t0\t4\n102135\tM\tNeverM\t1976\tL: 300,000 and above\t7000\tHS-grad\t0\t1\tMachine\t3\t1\t3\n102107\tM\tMarried\t1942\tJ: 190,000 - 249,999\t9000\t12th\t0\t3\tCrafts\t6\t0\t4\n101294\tM\tDivorc.\t1962\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tHandler\t6\t0\t4\n104488\tM\tMarried\t1953\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t3\tCleric.\t5\t0\t5\n104149\tM\tMarried\t1966\tL: 300,000 and above\t9000\tMasters\t1\t3\tProf.\t5\t0\t5\n101788\tM\tNeverM\t1985\tC: 50,000 - 69,999\t9000\t10th\t0\t1\tOther\t1\t1\t3\n101181\tM\tMarried\t1972\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tCleric.\t3\t0\t4\n103290\tM\tNeverM\t1954\tB: 30,000 - 49,999\t1500\tMasters\t1\t2\tProf.\t5\t0\t5\n101855\tM\tMarried\t1980\tA: Below 30,000\t1500\t< Bach.\t0\t3\tMachine\t2\t1\t3\n102870\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t1\tHandler\t3\t0\t4\n100591\tF\tWidowed\t1962\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tSales\t4\t0\t4\n103827\tM\tMarried\t1961\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t3\tHandler\t4\t0\t4\n100695\tM\tNeverM\t1971\tL: 300,000 and above\t15000\tBach.\t0\t1\tProf.\t3\t0\t4\n104020\tM\tNeverM\t1984\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t6-8\t?\t1\t1\t3\n102038\tF\tNeverM\t1981\tL: 300,000 and above\t15000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n102444\tM\tMarried\t1970\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tFarming\t6\t0\t4\n103946\tM\tNeverM\t1983\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n100150\tM\tMarried\t1946\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t3\tSales\t7\t0\t4\n102068\tF\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tAssoc-V\t1\t4-5\tProf.\t5\t0\t5\n104324\tM\tMabsent\t1960\tJ: 190,000 - 249,999\t15000\tProfsc\t1\t2\tProf.\t4\t0\t5\n101741\tM\tMarried\t1969\tL: 300,000 and above\t9000\t< Bach.\t1\t3\tProf.\t4\t0\t5\n100264\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t3\n100523\tF\tMarried\t1962\tK: 250,000 - 299,999\t7000\t< Bach.\t1\t4-5\tTransp.\t4\t0\t5\n101182\tM\tMarried\t1971\tC: 50,000 - 69,999\t5000\tAssoc-V\t0\t3\tTransp.\t3\t0\t4\n101432\tM\tMarried\t1976\tF: 110,000 - 129,999\t9000\t9th\t0\t3\tCrafts\t3\t1\t3\n102522\tF\tNeverM\t1981\tL: 300,000 and above\t7000\tHS-grad\t0\t2\t?\t3\t1\t3\n103330\tM\tNeverM\t1982\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t1\t1\t3\n102797\tF\tDivorc.\t1941\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t2\tOther\t6\t0\t4\n100012\tM\tMarried\t1968\tH: 150,000 - 169,999\t15000\tPhD\t1\t3\tProf.\t4\t0\t5\n103611\tM\tMarried\t1974\tL: 300,000 and above\t9000\tMasters\t0\t3\tProf.\t1\t1\t3\n103149\tM\tMarried\t1963\tL: 300,000 and above\t9000\tPhD\t1\t3\tProf.\t4\t0\t5\n103127\tM\tMarried\t1968\tH: 150,000 - 169,999\t5000\tPhD\t1\t3\tProf.\t4\t0\t5\n101878\tM\tMarried\t1961\tG: 130,000 - 149,999\t3000\tPhD\t1\t3\tProf.\t4\t0\t5\n100605\tM\tMarried\t1974\tL: 300,000 and above\t11000\tMasters\t0\t3\tProf.\t1\t1\t3\n102189\tM\tMarried\t1959\tG: 130,000 - 149,999\t5000\tProfsc\t1\t3\tProf.\t7\t0\t5\n102535\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tBach.\t0\t1\tProf.\t3\t1\t3\n100034\tM\tMarried\t1963\tL: 300,000 and above\t9000\tPhD\t1\t3\tProf.\t4\t0\t5\n104456\tM\tNeverM\t1969\tC: 50,000 - 69,999\t7000\tBach.\t0\t9+\tExec.\t3\t0\t4\n102959\tM\tMarried\t1962\tF: 110,000 - 129,999\t10000\tMasters\t1\t3\tProf.\t6\t0\t5\n101368\tM\tNeverM\t1969\tC: 50,000 - 69,999\t9000\tBach.\t0\t9+\tExec.\t3\t0\t4\n100344\tM\tMarried\t1967\tH: 150,000 - 169,999\t10000\tBach.\t0\t3\tProf.\t5\t0\t4\n101100\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t15000\tAssoc-V\t0\t2\tOther\t4\t0\t4\n102845\tM\tMarried\t1944\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tHandler\t6\t0\t5\n103193\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\t?\t3\t1\t3\n101998\tM\tMarried\t1977\tL: 300,000 and above\t11000\t< Bach.\t0\t3\tSales\t3\t1\t3\n101869\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tOther\t1\t1\t3\n104126\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t7000\tAssoc-V\t0\t9+\tOther\t3\t0\t4\n100206\tM\tNeverM\t1977\tH: 150,000 - 169,999\t5000\tHS-grad\t1\t1\tCleric.\t5\t1\t3\n101957\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t6-8\tTransp.\t3\t1\t3\n100733\tM\tMarried\t1935\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tProf.\t7\t0\t5\n101021\tF\tDivorc.\t1971\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tOther\t3\t0\t4\n103958\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4\n102515\tM\tMarried\t1958\tL: 300,000 and above\t9000\t12th\t0\t3\tMachine\t5\t0\t4\n103455\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tSales\t5\t0\t4\n104220\tM\tNeverM\t1969\tJ: 190,000 - 249,999\t7000\tAssoc-V\t0\t2\tOther\t4\t0\t4\n101835\tF\tNeverM\t1978\tF: 110,000 - 129,999\t1500\tProfsc\t0\t2\tProf.\t1\t1\t3\n100667\tF\tNeverM\t1961\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4\n101542\tF\tNeverM\t1944\tB: 30,000 - 49,999\t1500\tMasters\t1\t2\tProf.\t6\t0\t5\n100899\tM\tSepar.\t1947\tJ: 190,000 - 249,999\t15000\t1st-4th\t0\t2\tExec.\t4\t0\t4\n101555\tM\tMarried\t1962\tB: 30,000 - 49,999\t3000\t7th-8th\t0\t3\tCrafts\t4\t0\t4\n104462\tM\tMarried\t1940\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n101445\tF\tMarried\t1958\tI: 170,000 - 189,999\t1500\tBach.\t0\t4-5\tExec.\t8\t0\t4\n100918\tM\tNeverM\t1973\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t2\tCleric.\t3\t0\t4\n103026\tM\tWidowed\t1929\tJ: 190,000 - 249,999\t15000\t9th\t0\t2\tCrafts\t2\t0\t4\n101306\tM\tMarried\t1962\tC: 50,000 - 69,999\t3000\tBach.\t0\t3\tMachine\t4\t0\t4\n102272\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t6-8\tCrafts\t2\t1\t3\n102184\tM\tMarried\t1952\tF: 110,000 - 129,999\t3000\tMasters\t1\t3\tSales\t5\t0\t5\n103932\tM\tNeverM\t1983\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t1\tTransp.\t2\t1\t3\n102759\tF\tDivorc.\t1967\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t2\tTransp.\t4\t0\t4\n100860\tF\tMarried\t1970\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t4-5\tCrafts\t5\t0\t4\n103128\tM\tMarried\t1961\tD: 70,000 - 89,999\t5000\tHS-grad\t0\t3\tTransp.\t5\t0\t4\n100701\tM\tMarried\t1956\tB: 30,000 - 49,999\t3000\tBach.\t1\t3\tExec.\t7\t0\t5\n101504\tM\tMarried\t1958\tB: 30,000 - 49,999\t1500\tBach.\t1\t3\tExec.\t5\t0\t5\n103449\tM\tMarried\t1975\tD: 70,000 - 89,999\t1500\tHS-grad\t0\t3\tMachine\t3\t1\t3\n101320\tM\tNeverM\t1978\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t2\tExec.\t3\t1\t3\n104248\tF\tNeverM\t1973\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t1\tCleric.\t3\t0\t4\n104048\tM\tNeverM\t1968\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tSales\t3\t0\t4\n103135\tF\tDivorc.\t1946\tJ: 190,000 - 249,999\t9000\tMasters\t0\t9+\tOther\t6\t0\t4\n102182\tM\tMarried\t1952\tG: 130,000 - 149,999\t10000\t< Bach.\t1\t3\tCleric.\t5\t0\t5\n104319\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4\n103889\tM\tMarried\t1971\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tProtec.\t4\t0\t5\n102082\tM\tMarried\t1951\tA: Below 30,000\t1500\t10th\t1\t3\tCrafts\t7\t0\t5\n103050\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t11000\t11th\t0\t1\tSales\t0\t1\t3\n102776\tF\tDivorc.\t1949\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tCleric.\t5\t0\t4\n100278\tM\tMarried\t1963\tD: 70,000 - 89,999\t3000\tAssoc-V\t1\t3\tMachine\t4\t0\t5\n101709\tM\tNeverM\t1974\tK: 250,000 - 299,999\t9000\tBach.\t0\t9+\tSales\t3\t1\t3\n100323\tM\tDivorc.\t1954\tH: 150,000 - 169,999\t10000\t< Bach.\t1\t2\tProf.\t5\t0\t5\n102511\tM\tMarried\t1975\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t3\tCrafts\t3\t1\t3\n102984\tF\tSepar.\t1973\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t9+\tOther\t3\t0\t4\n104196\tF\tDivorc.\t1967\tH: 150,000 - 169,999\t3000\tHS-grad\t0\t9+\tExec.\t4\t0\t4\n104005\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t3\n104181\tF\tDivorc.\t1963\tI: 170,000 - 189,999\t1500\tAssoc-V\t0\t2\tProf.\t2\t0\t4\n103284\tF\tNeverM\t1984\tA: Below 30,000\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n103766\tF\tDivorc.\t1960\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t9+\tCleric.\t4\t0\t4\n101301\tM\tMarried\t1949\tA: Below 30,000\t1500\tHS-grad\t0\t3\tSales\t5\t0\t4\n102171\tF\tNeverM\t1978\tC: 50,000 - 69,999\t11000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n102514\tF\tDivorc.\t1964\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tMachine\t4\t0\t4\n102315\tF\tNeverM\t1980\tJ: 190,000 - 249,999\t15000\tBach.\t0\t1\tSales\t3\t1\t3\n100709\tM\tMarried\t1959\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t4\t0\t5\n102168\tM\tNeverM\t1976\tL: 300,000 and above\t9000\tHS-grad\t0\t1\tTransp.\t3\t1\t3\n103039\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\t10th\t0\t9+\tCrafts\t2\t1\t3\n103494\tF\tWidowed\t1941\tA: Below 30,000\t1500\tHS-grad\t0\t2\tSales\t3\t0\t4\n103345\tM\tDivorc.\t1949\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t2\tTransp.\t5\t0\t4\n100433\tF\tWidowed\t1938\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t2\tCleric.\t7\t0\t4\n100864\tF\tNeverM\t1986\tG: 130,000 - 149,999\t11000\t10th\t0\t1\tOther\t0\t1\t3\n102503\tM\tNeverM\t1969\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t1\tCleric.\t3\t0\t4\n102071\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t0\t3\tExec.\t6\t0\t4\n101747\tM\tMarried\t1950\tJ: 190,000 - 249,999\t10000\t< Bach.\t1\t3\tProtec.\t5\t0\t5\n101763\tM\tMarried\t1953\tG: 130,000 - 149,999\t10000\tMasters\t1\t3\tProf.\t5\t0\t5\n103144\tM\tMarried\t1962\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tTechSup\t5\t0\t5\n101748\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\t< Bach.\t0\t3\tProtec.\t4\t0\t4\n104019\tM\tMarried\t1959\tB: 30,000 - 49,999\t3000\t< Bach.\t1\t3\tTechSup\t2\t0\t5\n102008\tM\tNeverM\t1980\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t2\tProf.\t3\t1\t3\n104136\tM\tMarried\t1968\tI: 170,000 - 189,999\t3000\tMasters\t1\t3\tProf.\t4\t0\t5\n104228\tF\tDivorc.\t1977\tE: 90,000 - 109,999\t10000\tAssoc-V\t0\t2\tCleric.\t4\t1\t3\n102823\tM\tMarried\t1965\tF: 110,000 - 129,999\t5000\t< Bach.\t1\t3\tTransp.\t4\t0\t5\n102210\tF\tMarried\t1950\tK: 250,000 - 299,999\t11000\tMasters\t1\t4-5\tCleric.\t5\t0\t5\n102255\tF\tNeverM\t1974\tA: Below 30,000\t1500\tHS-grad\t0\t2\tOther\t3\t1\t3\n101331\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tCleric.\t3\t1\t3\n104276\tM\tMarried\t1955\tK: 250,000 - 299,999\t11000\t< Bach.\t1\t3\tCrafts\t6\t0\t5\n104087\tM\tMarried\t1938\tG: 130,000 - 149,999\t5000\tBach.\t1\t3\tSales\t10\t0\t5\n101259\tF\tNeverM\t1962\tG: 130,000 - 149,999\t7000\tHS-grad\t0\t2\tOther\t4\t0\t4\n103190\tM\tMarried\t1946\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t3\tSales\t7\t0\t4\n100170\tF\tWidowed\t1943\tF: 110,000 - 129,999\t3000\t7th-8th\t0\t9+\t?\t3\t0\t4\n101548\tF\tNeverM\t1977\tC: 50,000 - 69,999\t9000\t< Bach.\t0\t2\tCleric.\t3\t1\t3\n101576\tF\tNeverM\t1982\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t1\tOther\t2\t1\t3\n102857\tF\tSepar.\t1962\tD: 70,000 - 89,999\t3000\tBach.\t0\t9+\tProf.\t4\t0\t4\n103553\tF\tNeverM\t1982\tE: 90,000 - 109,999\t3000\t< Bach.\t0\t2\tCleric.\t1\t1\t3\n100857\tM\tMarried\t1977\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t3\t1\t3\n102545\tF\tNeverM\t1982\tL: 300,000 and above\t9000\tAssoc-V\t0\t2\tCleric.\t2\t1\t3\n101499\tM\tMarried\t1947\tJ: 190,000 - 249,999\t9000\tBach.\t1\t3\tProf.\t10\t0\t5\n103796\tF\tNeverM\t1936\tJ: 190,000 - 249,999\t11000\tPhD\t1\t2\tProf.\t8\t0\t5\n100964\tF\tNeverM\t1978\tL: 300,000 and above\t9000\tBach.\t0\t2\tProf.\t2\t1\t3\n102048\tF\tDivorc.\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tMachine\t3\t0\t4\n103838\tM\tMarried\t1932\tG: 130,000 - 149,999\t3000\tMasters\t1\t3\tSales\t7\t0\t5\n104150\tM\tMarried\t1964\tB: 30,000 - 49,999\t5000\tAssoc-A\t0\t3\tMachine\t4\t0\t4\n101809\tM\tDivorc.\t1962\tC: 50,000 - 69,999\t1500\t< Bach.\t0\t2\tCrafts\t4\t0\t4\n101407\tM\tDivorc.\t1971\tI: 170,000 - 189,999\t1500\tBach.\t1\t6-8\tProf.\t3\t0\t5\n101642\tF\tMarried\t1971\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t4-5\tTechSup\t3\t0\t4\n102257\tM\tMarried\t1956\tI: 170,000 - 189,999\t9000\tBach.\t1\t3\tSales\t5\t0\t5\n102379\tF\tMabsent\t1958\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tCleric.\t3\t0\t4\n103010\tM\tMarried\t1932\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t3\tTransp.\t7\t0\t4\n101745\tM\tMarried\t1970\tE: 90,000 - 109,999\t3000\t12th\t0\t3\tProtec.\t3\t0\t4\n101637\tM\tMarried\t1971\tA: Below 30,000\t1500\tAssoc-V\t0\t3\tTechSup\t3\t0\t4\n103045\tM\tMarried\t1954\tC: 50,000 - 69,999\t9000\tHS-grad\t1\t3\tCrafts\t6\t0\t5\n102014\tM\tMarried\t1968\tE: 90,000 - 109,999\t10000\t7th-8th\t1\t3\tMachine\t4\t0\t5\n104263\tM\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t2\tCleric.\t3\t0\t4\n101539\tF\tWidowed\t1934\tI: 170,000 - 189,999\t5000\tAssoc-A\t0\t2\t?\t2\t0\t4\n100758\tM\tMarried\t1963\tF: 110,000 - 129,999\t7000\tAssoc-V\t1\t3\tCrafts\t4\t0\t5\n100443\tM\tMarried\t1950\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCrafts\t7\t0\t5\n103642\tM\tNeverM\t1974\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t2\tFarming\t4\t1\t3\n101673\tF\tMarried\t1956\tE: 90,000 - 109,999\t1500\tHS-grad\t0\t4-5\tOther\t9\t0\t4\n100554\tM\tMarried\t1958\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tExec.\t6\t0\t4\n101686\tM\tMarried\t1956\tJ: 190,000 - 249,999\t11000\tMasters\t1\t3\tProf.\t5\t0\t5\n100185\tM\tMarried\t1953\tJ: 190,000 - 249,999\t7000\tBach.\t1\t3\tSales\t8\t0\t5\n102492\tM\tMarried\t1966\tL: 300,000 and above\t15000\t< Bach.\t0\t3\tCrafts\t6\t0\t4\n101487\tM\tMarried\t1975\tL: 300,000 and above\t7000\tHS-grad\t0\t3\tCrafts\t3\t1\t3\n100340\tM\tNeverM\t1974\tC: 50,000 - 69,999\t3000\tHS-grad\t0\t2\tFarming\t4\t1\t3\n104412\tM\tMarried\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t3\tCrafts\t3\t1\t3\n101887\tF\tWidowed\t1935\tK: 250,000 - 299,999\t15000\t7th-8th\t0\t2\t?\t7\t0\t4\n100736\tM\tNeverM\t1973\tI: 170,000 - 189,999\t9000\tBach.\t0\t1\tProf.\t3\t0\t4\n103684\tM\tMabsent\t1926\tD: 70,000 - 89,999\t5000\t7th-8th\t1\t2\tCleric.\t4\t0\t5\n104165\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tSales\t2\t1\t3\n100081\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\tBach.\t1\t3\tExec.\t7\t0\t5\n103940\tM\tMarried\t1943\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n103462\tF\tNeverM\t1961\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4\n104484\tM\tMarried\t1966\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4\n103225\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tSales\t8\t0\t5\n104446\tM\tNeverM\t1985\tF: 110,000 - 129,999\t5000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101689\tM\tMarried\t1959\tF: 110,000 - 129,999\t5000\tBach.\t1\t3\tSales\t6\t0\t5\n101795\tM\tMabsent\t1970\tI: 170,000 - 189,999\t9000\t< Bach.\t0\t2\tCrafts\t3\t0\t4\n101668\tM\tNeverM\t1969\tL: 300,000 and above\t9000\t< Bach.\t0\t2\tHandler\t4\t0\t4\n102203\tM\tMarried\t1942\tF: 110,000 - 129,999\t5000\tMasters\t0\t3\tCrafts\t0\t0\t4\n103650\tM\tNeverM\t1977\tG: 130,000 - 149,999\t7000\tBach.\t0\t2\tProf.\t3\t1\t3\n101396\tM\tMarried\t1966\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4\n103543\tM\tMarried\t1935\tJ: 190,000 - 249,999\t9000\tMasters\t1\t3\tProf.\t7\t0\t5\n102325\tM\tMarried\t1973\tI: 170,000 - 189,999\t9000\tBach.\t0\t3\tSales\t5\t0\t4\n100994\tM\tDivorc.\t1961\tI: 170,000 - 189,999\t10000\tBach.\t0\t2\tProf.\t5\t0\t4\n104370\tF\tMarried\t1958\tI: 170,000 - 189,999\t3000\tBach.\t0\t4-5\tExec.\t8\t0\t4\n102906\tM\tMarried\t1965\tL: 300,000 and above\t15000\tHS-grad\t0\t3\tMachine\t7\t0\t4\n104135\tM\tDivorc.\t1943\tG: 130,000 - 149,999\t10000\tHS-grad\t0\t2\tCrafts\t8\t0\t4\n101867\tM\tNeverM\t1973\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t9+\tCrafts\t3\t0\t4\n103546\tM\tNeverM\t1973\tI: 170,000 - 189,999\t3000\tBach.\t0\t1\tProf.\t3\t0\t4\n102342\tF\tDivorc.\t1957\tI: 170,000 - 189,999\t3000\tMasters\t0\t2\tProf.\t7\t0\t4\n101112\tM\tMarried\t1951\tI: 170,000 - 189,999\t11000\t10th\t0\t3\tMachine\t5\t0\t4\n102438\tM\tMarried\t1961\tL: 300,000 and above\t7000\tBach.\t1\t3\tProf.\t4\t0\t5\n100432\tM\tNeverM\t1978\tI: 170,000 - 189,999\t10000\tBach.\t0\t1\tProf.\t3\t1\t3\n100003\tM\tNeverM\t1969\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t2\tSales\t6\t0\t4\n103793\tF\tDivorc.\t1968\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n102822\tM\tNeverM\t1984\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tCrafts\t2\t1\t3\n103329\tM\tDivorc.\t1949\tH: 150,000 - 169,999\t7000\tBach.\t0\t2\tExec.\t7\t0\t4\n101621\tM\tMarried\t1957\tJ: 190,000 - 249,999\t11000\tBach.\t1\t3\tProtec.\t5\t0\t5\n102031\tM\tMarried\t1969\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t3\tTransp.\t4\t0\t4\n102200\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n102725\tM\tMarried\t1974\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t3\tMachine\t3\t1\t3\n104270\tM\tNeverM\t1983\tF: 110,000 - 129,999\t7000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n100925\tM\tNeverM\t1983\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101658\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tSales\t3\t1\t3\n101375\tM\tMarried\t1961\tB: 30,000 - 49,999\t3000\tBach.\t0\t3\tSales\t6\t0\t4\n100848\tF\tDivorc.\t1945\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t2\tCleric.\t9\t0\t5\n102164\tF\tNeverM\t1969\tL: 300,000 and above\t9000\tHS-grad\t0\t9+\tExec.\t3\t0\t4\n101595\tM\tMarried\t1977\tI: 170,000 - 189,999\t10000\tBach.\t1\t3\tOther\t3\t1\t5\n100691\tM\tMarried\t1967\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t3\tHandler\t4\t0\t4\n100355\tM\tMarried\t1961\tE: 90,000 - 109,999\t9000\tBach.\t1\t3\tProf.\t6\t0\t5\n101628\tM\tNeverM\t1983\tH: 150,000 - 169,999\t1500\t< Bach.\t0\t1\t?\t2\t1\t3\n101262\tF\tNeverM\t1981\tK: 250,000 - 299,999\t11000\t< Bach.\t0\t2\t?\t2\t1\t3\n101447\tF\tDivorc.\t1956\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t2\tSales\t5\t0\t4\n101398\tM\tNeverM\t1944\tL: 300,000 and above\t11000\tBach.\t0\t2\tCrafts\t7\t0\t4\n103848\tM\tMarried\t1945\tI: 170,000 - 189,999\t11000\t< Bach.\t1\t3\tCleric.\t6\t0\t5\n101381\tF\tNeverM\t1983\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t3\n100507\tM\tMarried\t1970\tJ: 190,000 - 249,999\t9000\tBach.\t0\t3\tProf.\t3\t0\t4\n100171\tF\tMarried\t1966\tC: 50,000 - 69,999\t7000\tHS-grad\t1\t4-5\tCleric.\t4\t0\t5\n100922\tM\tNeverM\t1969\tL: 300,000 and above\t15000\t< Bach.\t1\t2\tProf.\t4\t0\t5\n104041\tM\tMarried\t1956\tL: 300,000 and above\t9000\tBach.\t0\t3\tCrafts\t5\t0\t4\n100396\tF\tDivorc.\t1956\tG: 130,000 - 149,999\t15000\t< Bach.\t0\t2\tCleric.\t7\t0\t4\n103875\tM\tSepar.\t1972\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n102141\tF\tDivorc.\t1955\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t2\t?\t5\t0\t5\n103022\tF\tMarried\t1966\tJ: 190,000 - 249,999\t7000\tHS-grad\t0\t4-5\tCleric.\t4\t0\t4\n100200\tM\tNeverM\t1983\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101783\tM\tMarried\t1980\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tMachine\t3\t1\t3\n101980\tF\tDivorc.\t1941\tE: 90,000 - 109,999\t10000\t10th\t0\t9+\tProf.\t6\t0\t4\n100472\tM\tMarried\t1973\tB: 30,000 - 49,999\t3000\tBach.\t0\t3\tProf.\t6\t0\t4\n100410\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t9000\t10th\t0\t2\tTransp.\t4\t1\t3\n100182\tM\tMarried\t1972\tL: 300,000 and above\t15000\tHS-grad\t0\t3\tMachine\t3\t0\t4\n101268\tF\tNeverM\t1975\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tOther\t2\t1\t3\n103453\tM\tSepar.\t1979\tJ: 190,000 - 249,999\t11000\tAssoc-A\t1\t9+\tCrafts\t2\t1\t3\n102880\tM\tMarried\t1969\tI: 170,000 - 189,999\t1500\t< Bach.\t1\t3\tMachine\t4\t0\t5\n100385\tM\tMarried\t1980\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t6-8\tCleric.\t2\t1\t3\n103850\tF\tWidowed\t1961\tJ: 190,000 - 249,999\t11000\tAssoc-V\t0\t9+\tProf.\t4\t0\t4\n101123\tM\tMarried\t1955\tJ: 190,000 - 249,999\t11000\tBach.\t0\t3\tSales\t7\t0\t4\n103011\tM\tMarried\t1958\tE: 90,000 - 109,999\t9000\tHS-grad\t0\t3\tSales\t7\t0\t4\n100979\tM\tMarried\t1979\tL: 300,000 and above\t9000\t< Bach.\t0\t3\tProtec.\t2\t1\t3\n103109\tM\tNeverM\t1982\tD: 70,000 - 89,999\t10000\t< Bach.\t0\t2\tCleric.\t3\t1\t3\n103833\tM\tMarried\t1963\tE: 90,000 - 109,999\t9000\t< Bach.\t1\t3\tTechSup\t5\t0\t5\n101909\tF\tNeverM\t1959\tC: 50,000 - 69,999\t1500\tMasters\t0\t2\tProf.\t7\t0\t4\n103565\tM\tNeverM\t1977\tK: 250,000 - 299,999\t15000\tBach.\t0\t2\tProf.\t3\t1\t3\n104400\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t10000\tHS-grad\t0\t9+\tCrafts\t4\t0\t4\n103864\tF\tSepar.\t1971\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tProf.\t4\t0\t5\n103396\tF\tMarried\t1963\tL: 300,000 and above\t15000\tAssoc-V\t0\t4-5\tProf.\t4\t0\t4\n102625\tM\tMarried\t1968\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t3\tMachine\t4\t0\t4\n104071\tM\tMarried\t1961\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t3\tCleric.\t4\t0\t4\n101743\tM\tMarried\t1957\tE: 90,000 - 109,999\t3000\tHS-grad\t1\t3\tExec.\t6\t0\t5\n101454\tM\tMarried\t1934\tB: 30,000 - 49,999\t3000\t< Bach.\t1\t3\tExec.\t9\t0\t5\n100807\tF\tDivorc.\t1965\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tProf.\t4\t0\t4\n104272\tF\tNeverM\t1956\tA: Below 30,000\t1500\tAssoc-V\t0\t2\tOther\t7\t0\t4\n100108\tM\tMarried\t1955\tL: 300,000 and above\t15000\tMasters\t0\t3\tOther\t5\t0\t4\n101731\tM\tMarried\t1948\tB: 30,000 - 49,999\t5000\t< Bach.\t0\t3\tSales\t7\t0\t4\n104240\tF\tNeverM\t1977\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\t?\t3\t1\t3\n102553\tM\tMarried\t1953\tI: 170,000 - 189,999\t10000\tAssoc-V\t1\t3\tTechSup\t5\t0\t5\n103712\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t15000\t10th\t0\t2\tTransp.\t4\t1\t3\n103311\tM\tMarried\t1966\tE: 90,000 - 109,999\t10000\t10th\t0\t3\tTransp.\t6\t0\t4\n100840\tM\tMarried\t1955\tI: 170,000 - 189,999\t3000\tHS-grad\t1\t3\tCrafts\t5\t0\t5\n104422\tF\tDivorc.\t1969\tI: 170,000 - 189,999\t1500\tAssoc-A\t0\t9+\tSales\t4\t0\t4\n100084\tF\tWidowed\t1967\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t9+\tHandler\t3\t0\t4\n100520\tM\tMarried\t1949\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t3\tTransp.\t4\t0\t4\n103331\tF\tDivorc.\t1959\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tHandler\t6\t0\t4\n103945\tM\tMarried\t1966\tB: 30,000 - 49,999\t5000\tHS-grad\t0\t3\tFarming\t6\t0\t4\n102541\tM\tMarried\t1968\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n103933\tF\tNeverM\t1975\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tOther\t2\t1\t3\n102518\tM\tMarried\t1958\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t3\tExec.\t5\t0\t4\n104301\tM\tMarried\t1953\tG: 130,000 - 149,999\t5000\tHS-grad\t1\t3\tTransp.\t6\t0\t5\n102432\tF\tDivorc.\t1970\tH: 150,000 - 169,999\t10000\t< Bach.\t0\t9+\tCleric.\t3\t0\t4\n101351\tM\tMarried\t1929\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tOther\t6\t0\t4\n100251\tM\tWidowed\t1929\tJ: 190,000 - 249,999\t15000\t9th\t0\t2\tCrafts\t2\t0\t4\n101374\tM\tMarried\t1940\tD: 70,000 - 89,999\t3000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n100660\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tSales\t5\t0\t4\n103361\tM\tMarried\t1955\tE: 90,000 - 109,999\t7000\tBach.\t1\t3\tExec.\t7\t0\t5\n102309\tM\tMarried\t1961\tI: 170,000 - 189,999\t9000\tMasters\t1\t3\tSales\t5\t0\t5\n101209\tF\tSepar.\t1957\tF: 110,000 - 129,999\t5000\tHS-grad\t0\t9+\tCrafts\t5\t0\t4\n100713\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t5\n102292\tM\tMabsent\t1973\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t2\tCrafts\t3\t0\t4\n103805\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t3\n102550\tF\tSepar.\t1962\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t9+\tCleric.\t4\t0\t4\n100898\tM\tMabsent\t1953\tJ: 190,000 - 249,999\t9000\tMasters\t0\t6-8\tProf.\t8\t0\t4\n104099\tM\tDivorc.\t1961\tI: 170,000 - 189,999\t5000\tBach.\t0\t2\tProf.\t5\t0\t4\n100662\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4\n102726\tF\tNeverM\t1982\tG: 130,000 - 149,999\t1500\t< Bach.\t0\t1\tOther\t2\t1\t3\n103760\tM\tMarried\t1950\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tCrafts\t7\t0\t5\n103297\tF\tMarried\t1983\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tProf.\t2\t1\t3\n102179\tM\tMarried\t1959\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t3\tHandler\t4\t0\t4\n104433\tM\tMarried\t1955\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tCleric.\t6\t0\t5\n102302\tF\tWidowed\t1951\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\tOther\t5\t0\t4\n103646\tM\tMarried\t1967\tH: 150,000 - 169,999\t3000\tBach.\t0\t3\tProf.\t5\t0\t4\n102385\tM\tMarried\t1960\tL: 300,000 and above\t9000\tBach.\t1\t3\tProf.\t4\t0\t5\n101345\tM\tMarried\t1955\tH: 150,000 - 169,999\t1500\tBach.\t1\t3\tCleric.\t6\t0\t5\n103457\tM\tMarried\t1965\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t3\tExec.\t6\t0\t4\n100784\tM\tNeverM\t1975\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t3\n103161\tM\tNeverM\t1977\tH: 150,000 - 169,999\t15000\tHS-grad\t1\t1\tCleric.\t5\t1\t3\n101806\tF\tDivorc.\t1966\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t2\t?\t4\t0\t4\n101358\tM\tNeverM\t1985\tF: 110,000 - 129,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101960\tM\tSepar.\t1971\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tExec.\t3\t0\t4\n100653\tM\tMarried\t1962\tI: 170,000 - 189,999\t1500\tHS-grad\t1\t3\tTechSup\t5\t0\t5\n103523\tM\tMarried\t1963\tK: 250,000 - 299,999\t9000\t7th-8th\t1\t3\tCrafts\t4\t0\t5\n102524\tM\tNeverM\t1974\tB: 30,000 - 49,999\t3000\t10th\t0\t2\tCrafts\t3\t1\t3\n101060\tM\tNeverM\t1983\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tSales\t2\t1\t3\n104231\tM\tMarried\t1962\tC: 50,000 - 69,999\t3000\tBach.\t0\t3\tMachine\t4\t0\t4\n103959\tM\tSepar.\t1947\tJ: 190,000 - 249,999\t9000\t1st-4th\t0\t2\tExec.\t4\t0\t4\n102175\tM\tDivorc.\t1957\tI: 170,000 - 189,999\t11000\tBach.\t0\t2\tMachine\t5\t0\t4\n103915\tM\tMarried\t1971\tJ: 190,000 - 249,999\t7000\tProfsc\t0\t3\tSales\t3\t0\t4\n102397\tM\tMarried\t1965\tF: 110,000 - 129,999\t1500\tBach.\t1\t3\tExec.\t4\t0\t5\n100382\tM\tMabsent\t1926\tD: 70,000 - 89,999\t1500\t7th-8th\t1\t2\tCleric.\t4\t0\t5\n102591\tF\tNeverM\t1982\tL: 300,000 and above\t11000\tHS-grad\t0\t1\t?\t1\t1\t3\n100488\tM\tNeverM\t1957\tK: 250,000 - 299,999\t7000\tHS-grad\t0\t2\tTransp.\t6\t0\t4\n100874\tF\tMarried\t1950\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t4-5\tExec.\t5\t0\t5\n103897\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t1\tOther\t2\t1\t3\n101334\tF\tNeverM\t1976\tF: 110,000 - 129,999\t3000\tHS-grad\t0\t2\tExec.\t3\t1\t3\n103667\tF\tDivorc.\t1967\tJ: 190,000 - 249,999\t7000\tBach.\t0\t9+\tProf.\t4\t0\t4\n101908\tM\tNeverM\t1984\tL: 300,000 and above\t15000\tHS-grad\t0\t1\tCrafts\t2\t1\t3\n103153\tF\tNeverM\t1986\tG: 130,000 - 149,999\t3000\t11th\t0\t1\t?\t1\t1\t3\n103640\tF\tWidowed\t1945\tH: 150,000 - 169,999\t7000\tHS-grad\t1\t2\tSales\t6\t0\t5\n101536\tM\tMarried\t1944\tE: 90,000 - 109,999\t7000\t10th\t1\t3\tCrafts\t6\t0\t5\n102898\tM\tMarried\t1962\tL: 300,000 and above\t9000\tHS-grad\t0\t3\tExec.\t5\t0\t4\n103798\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t3\tTransp.\t5\t0\t5\n101350\tM\tDivorc.\t1973\tA: Below 30,000\t1500\tBach.\t0\t2\tOther\t3\t0\t4\n100132\tF\tWidowed\t1926\tI: 170,000 - 189,999\t3000\t< Bach.\t0\t2\tHouse-s\t4\t0\t4\n100516\tM\tMarried\t1966\tE: 90,000 - 109,999\t10000\t10th\t0\t3\tTransp.\t6\t0\t4\n103626\tM\tMarried\t1951\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tExec.\t5\t0\t4\n101601\tM\tMarried\t1947\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t3\tCrafts\t6\t0\t4\n103076\tM\tMarried\t1963\tI: 170,000 - 189,999\t5000\tHS-grad\t0\t3\tOther\t4\t0\t4\n103474\tM\tMarried\t1924\tH: 150,000 - 169,999\t5000\tHS-grad\t1\t3\t?\t8\t0\t5\n101803\tM\tMarried\t1970\tB: 30,000 - 49,999\t1500\t11th\t0\t3\tExec.\t6\t0\t4\n101484\tM\tNeverM\t1972\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t1\tCrafts\t2\t0\t4\n100788\tF\tNeverM\t1974\tL: 300,000 and above\t9000\tBach.\t0\t1\tSales\t3\t1\t3\n101039\tM\tMarried\t1934\tA: Below 30,000\t1500\tHS-grad\t1\t3\t?\t10\t0\t5\n101697\tM\tMarried\t1959\tE: 90,000 - 109,999\t1500\tProfsc\t1\t3\tProf.\t7\t0\t5\n102416\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tAssoc-A\t1\t3\tProtec.\t4\t0\t5\n101939\tM\tDivorc.\t1965\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t2\tMachine\t5\t0\t4\n104155\tM\tNeverM\t1986\tL: 300,000 and above\t9000\t10th\t0\t1\tOther\t0\t1\t3\n102195\tM\tMarried\t1962\tG: 130,000 - 149,999\t15000\tHS-grad\t0\t3\tMachine\t3\t0\t4\n101494\tM\tMarried\t1965\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tExec.\t5\t0\t5\n101165\tM\tMarried\t1966\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t3\tCrafts\t4\t0\t4\n101781\tM\tMarried\t1968\tB: 30,000 - 49,999\t1500\tMasters\t1\t3\tExec.\t5\t0\t5\n101629\tM\tMarried\t1963\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tSales\t6\t0\t5\n103910\tF\tNeverM\t1977\tJ: 190,000 - 249,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t3\n102750\tM\tMarried\t1971\tB: 30,000 - 49,999\t1500\t7th-8th\t0\t3\tOther\t3\t0\t4\n101703\tF\tDivorc.\t1976\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tCleric.\t3\t1\t3\n102626\tF\tMarried\t1977\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t4-5\tMachine\t3\t1\t3\n103101\tF\tNeverM\t1973\tG: 130,000 - 149,999\t3000\tBach.\t0\t2\tSales\t4\t0\t4\n101959\tM\tNeverM\t1941\tE: 90,000 - 109,999\t7000\tHS-grad\t0\t2\tCrafts\t6\t0\t4\n103701\tF\tDivorc.\t1958\tF: 110,000 - 129,999\t9000\tMasters\t0\t9+\tProf.\t6\t0\t4\n101807\tF\tMarried\t1968\tG: 130,000 - 149,999\t7000\t< Bach.\t0\t4-5\tCleric.\t3\t0\t4\n103380\tF\tMarried\t1959\tJ: 190,000 - 249,999\t15000\tMasters\t1\t4-5\tProf.\t4\t0\t5\n100147\tM\tMarried\t1925\tA: Below 30,000\t1500\tHS-grad\t0\t3\t?\t6\t0\t4\n102018\tM\tDivorc.\t1970\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t2\tSales\t3\t0\t4\n101094\tF\tDivorc.\t1974\tA: Below 30,000\t1500\t< Bach.\t0\t9+\t?\t1\t1\t3\n101682\tM\tMarried\t1969\tK: 250,000 - 299,999\t11000\tHS-grad\t0\t3\tHandler\t3\t0\t4\n102972\tM\tMarried\t1963\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t3\tHandler\t4\t0\t4\n102566\tF\tNeverM\t1976\tJ: 190,000 - 249,999\t7000\tBach.\t0\t1\tTechSup\t3\t1\t3\n101227\tF\tNeverM\t1955\tD: 70,000 - 89,999\t10000\t11th\t0\t2\tOther\t4\t0\t4\n104268\tM\tMarried\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n104097\tM\tMabsent\t1981\tL: 300,000 and above\t11000\tHS-grad\t0\t2\tSales\t3\t1\t3\n100082\tM\tNeverM\t1975\tL: 300,000 and above\t15000\tBach.\t0\t2\tCleric.\t3\t1\t3\n102775\tM\tNeverM\t1978\tE: 90,000 - 109,999\t1500\t< Bach.\t0\t1\tMachine\t3\t1\t3\n103618\tM\tMarried\t1974\tH: 150,000 - 169,999\t1500\tAssoc-A\t1\t3\tSales\t4\t1\t5\n103485\tF\tNeverM\t1986\tG: 130,000 - 149,999\t15000\t11th\t0\t1\tCleric.\t0\t1\t3\n100330\tF\tMarried\t1951\tE: 90,000 - 109,999\t5000\tMasters\t1\t4-5\t?\t5\t0\t5\n100631\tF\tDivorc.\t1955\tG: 130,000 - 149,999\t5000\t< Bach.\t0\t9+\t?\t4\t0\t4\n102297\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tCrafts\t2\t1\t3\n100808\tM\tDivorc.\t1973\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t9+\tMachine\t3\t0\t4\n103537\tF\tMarried\t1969\tH: 150,000 - 169,999\t3000\t< Bach.\t1\t4-5\t?\t1\t0\t5\n100677\tM\tMarried\t1965\tE: 90,000 - 109,999\t9000\tBach.\t1\t3\tSales\t4\t0\t5\n103178\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\tAssoc-V\t0\t2\tOther\t3\t1\t3\n101894\tM\tMarried\t1961\tA: Below 30,000\t1500\tBach.\t0\t3\tSales\t5\t0\t4\n101762\tF\tNeverM\t1986\tI: 170,000 - 189,999\t5000\t10th\t0\t1\tProtec.\t2\t1\t3\n100727\tF\tMarried\t1969\tH: 150,000 - 169,999\t7000\t< Bach.\t1\t4-5\t?\t1\t0\t5\n104402\tM\tDivorc.\t1963\tJ: 190,000 - 249,999\t11000\t12th\t0\t2\tCrafts\t4\t0\t4\n101405\tM\tNeverM\t1976\tG: 130,000 - 149,999\t10000\tBach.\t0\t1\tTechSup\t3\t1\t3\n103067\tF\tDivorc.\t1946\tL: 300,000 and above\t11000\tHS-grad\t0\t9+\tCleric.\t6\t0\t4\n103426\tF\tDivorc.\t1955\tG: 130,000 - 149,999\t9000\t< Bach.\t0\t9+\t?\t4\t0\t4\n100269\tF\tDivorc.\t1957\tE: 90,000 - 109,999\t7000\t< Bach.\t0\t2\tCleric.\t5\t0\t4\n102232\tM\tMarried\t1955\tF: 110,000 - 129,999\t7000\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n102151\tF\tNeverM\t1935\tE: 90,000 - 109,999\t5000\tHS-grad\t0\t2\tSales\t7\t0\t4\n102482\tM\tMarried\t1950\tE: 90,000 - 109,999\t3000\t11th\t0\t3\tCrafts\t5\t0\t4\n100549\tM\tMarried\t1977\tG: 130,000 - 149,999\t10000\tBach.\t0\t3\tExec.\t1\t1\t3\n104183\tM\tMarried\t1948\tJ: 190,000 - 249,999\t15000\tBach.\t1\t3\tExec.\t6\t0\t5\n104082\tM\tNeverM\t1979\tI: 170,000 - 189,999\t10000\tBach.\t0\t2\tProf.\t1\t1\t3\n103681\tF\tWidowed\t1961\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tTransp.\t4\t0\t4\n100906\tM\tMarried\t1961\tI: 170,000 - 189,999\t5000\tMasters\t0\t3\tProf.\t4\t0\t4\n100624\tF\tDivorc.\t1971\tH: 150,000 - 169,999\t7000\tHS-grad\t0\t9+\tOther\t3\t0\t4\n100429\tM\tNeverM\t1963\tF: 110,000 - 129,999\t3000\tAssoc-V\t0\t2\tProf.\t4\t0\t4\n103114\tF\tMarried\t1964\tH: 150,000 - 169,999\t1500\tMasters\t0\t4-5\t?\t4\t0\t4\n103916\tM\tMarried\t1939\tH: 150,000 - 169,999\t5000\t1st-4th\t0\t3\tTransp.\t8\t0\t4\n103874\tF\tSepar.\t1957\tF: 110,000 - 129,999\t10000\tHS-grad\t0\t9+\tCrafts\t5\t0\t4\n103234\tF\tNeverM\t1981\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n101251\tM\tMarried\t1939\tH: 150,000 - 169,999\t3000\t1st-4th\t0\t3\tTransp.\t8\t0\t4\n101250\tM\tMarried\t1971\tJ: 190,000 - 249,999\t11000\tProfsc\t0\t3\tSales\t3\t0\t4\n103568\tM\tMarried\t1963\tF: 110,000 - 129,999\t10000\tAssoc-V\t1\t3\tCrafts\t4\t0\t5\n100194\tF\tNeverM\t1981\tC: 50,000 - 69,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n101030\tM\tDivorc.\t1943\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t2\tCrafts\t8\t0\t4\n100348\tM\tNeverM\t1977\tG: 130,000 - 149,999\t9000\tBach.\t0\t2\tProf.\t3\t1\t3\n103786\tM\tMarried\t1958\tJ: 190,000 - 249,999\t10000\tBach.\t0\t3\tExec.\t6\t0\t4\n100153\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t1\t?\t3\t1\t3\n101275\tM\tMarried\t1943\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tProf.\t6\t0\t4\n100324\tF\tMarried\t1964\tH: 150,000 - 169,999\t7000\tMasters\t0\t4-5\t?\t4\t0\t4\n102582\tM\tNeverM\t1977\tL: 300,000 and above\t11000\t5th-6th\t0\t2\tTransp.\t3\t1\t3\n102670\tM\tMarried\t1956\tL: 300,000 and above\t11000\tHS-grad\t1\t3\tTransp.\t6\t0\t5\n103219\tM\tMarried\t1951\tE: 90,000 - 109,999\t7000\tMasters\t1\t3\tExec.\t7\t0\t5\n100179\tM\tMarried\t1951\tE: 90,000 - 109,999\t5000\tMasters\t1\t3\tExec.\t7\t0\t5\n102729\tF\tMarried\t1956\tI: 170,000 - 189,999\t1500\tAssoc-A\t1\t4-5\tCleric.\t5\t0\t5\n100547\tF\tMarried\t1983\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t1\tProf.\t2\t1\t3\n103448\tM\tMarried\t1962\tI: 170,000 - 189,999\t1500\tHS-grad\t1\t3\tTechSup\t5\t0\t5\n103476\tM\tMarried\t1933\tG: 130,000 - 149,999\t7000\tBach.\t0\t3\t?\t7\t0\t4\n102624\tM\tMarried\t1971\tL: 300,000 and above\t11000\tBach.\t1\t3\tExec.\t4\t0\t5\n103693\tM\tNeverM\t1976\tL: 300,000 and above\t15000\tMasters\t0\t2\tProf.\t1\t1\t3\n101639\tF\tDivorc.\t1970\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t2\t?\t3\t0\t4\n102847\tM\tMarried\t1962\tI: 170,000 - 189,999\t9000\t7th-8th\t0\t3\tCrafts\t4\t0\t4\n100945\tM\tNeverM\t1977\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t3\n100281\tM\tMarried\t1958\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tExec.\t6\t0\t5\n104290\tM\tNeverM\t1977\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t3\n102105\tM\tMarried\t1941\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t3\t?\t3\t0\t4\n100681\tM\tMarried\t1933\tG: 130,000 - 149,999\t5000\tBach.\t0\t3\t?\t7\t0\t4\n103071\tM\tMarried\t1958\tH: 150,000 - 169,999\t15000\tBach.\t1\t3\tExec.\t6\t0\t5\n100391\tM\tNeverM\t1976\tL: 300,000 and above\t7000\tMasters\t0\t2\tProf.\t1\t1\t3\n103533\tF\tDivorc.\t1938\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t9+\tCleric.\t10\t0\t4\n102278\tF\tMarried\t1972\tI: 170,000 - 189,999\t1500\tBach.\t0\t4-5\t?\t2\t0\t4\n103316\tM\tNeverM\t1963\tJ: 190,000 - 249,999\t15000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n101738\tF\tDivorc.\t1962\tD: 70,000 - 89,999\t5000\t12th\t0\t2\t?\t4\t0\t4\n101951\tM\tNeverM\t1965\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n101805\tM\tMarried\t1967\tH: 150,000 - 169,999\t15000\tHS-grad\t0\t3\tExec.\t4\t0\t4\n100600\tM\tMarried\t1978\tK: 250,000 - 299,999\t9000\t11th\t0\t3\tTransp.\t3\t1\t3\n101822\tM\tMarried\t1956\tJ: 190,000 - 249,999\t7000\tMasters\t1\t3\tExec.\t5\t0\t5\n102245\tF\tDivorc.\t1966\tE: 90,000 - 109,999\t1500\tAssoc-A\t0\t9+\tProf.\t4\t0\t4\n101367\tM\tMarried\t1973\tH: 150,000 - 169,999\t7000\tAssoc-V\t1\t3\tProf.\t5\t0\t5\n104401\tF\tNeverM\t1980\tB: 30,000 - 49,999\t7000\t< Bach.\t0\t2\tSales\t2\t1\t3\n100884\tM\tMarried\t1959\tB: 30,000 - 49,999\t1500\t< Bach.\t1\t3\tTechSup\t2\t0\t5\n102165\tF\tMarried\t1958\tD: 70,000 - 89,999\t15000\t< Bach.\t1\t4-5\tCleric.\t5\t0\t5\n102567\tM\tNeverM\t1980\tL: 300,000 and above\t9000\t< Bach.\t0\t1\tOther\t2\t1\t3\n102348\tF\tMarried\t1953\tB: 30,000 - 49,999\t7000\tBach.\t1\t4-5\tExec.\t5\t0\t5\n102354\tF\tNeverM\t1978\tL: 300,000 and above\t11000\tHS-grad\t0\t6-8\tCleric.\t3\t1\t3\n103134\tM\tMarried\t1971\tE: 90,000 - 109,999\t1500\tAssoc-V\t1\t3\tTransp.\t4\t0\t5\n103179\tM\tMarried\t1951\tA: Below 30,000\t1500\tBach.\t1\t3\tProtec.\t8\t0\t5\n100989\tM\tMarried\t1970\tI: 170,000 - 189,999\t10000\t< Bach.\t1\t3\tTransp.\t3\t0\t5\n102451\tM\tWidowed\t1925\tJ: 190,000 - 249,999\t9000\tHS-grad\t1\t2\tSales\t10\t0\t5\n100803\tM\tMarried\t1946\tK: 250,000 - 299,999\t11000\t11th\t0\t3\tOther\t7\t0\t4\n104453\tF\tDivorc.\t1954\tJ: 190,000 - 249,999\t11000\tAssoc-A\t0\t2\tExec.\t5\t0\t4\n101073\tM\tMarried\t1966\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t3\tOther\t4\t0\t4\n101167\tM\tMarried\t1968\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t3\tMachine\t4\t0\t4\n102748\tM\tMarried\t1975\tJ: 190,000 - 249,999\t15000\tBach.\t1\t3\tProf.\t4\t1\t5\n104367\tM\tMarried\t1959\tH: 150,000 - 169,999\t10000\tBach.\t1\t3\tExec.\t7\t0\t5\n102114\tF\tDivorc.\t1961\tF: 110,000 - 129,999\t7000\tBach.\t0\t9+\tProf.\t2\t0\t4\n104151\tF\tNeverM\t1973\tK: 250,000 - 299,999\t7000\tBach.\t0\t2\tCleric.\t3\t0\t4\n100762\tM\tMarried\t1954\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n100505\tF\tNeverM\t1983\tJ: 190,000 - 249,999\t15000\t< Bach.\t0\t2\tOther\t2\t1\t3\n101228\tF\tNeverM\t1984\tL: 300,000 and above\t9000\tHS-grad\t0\t2\tSales\t2\t1\t3\n102474\tM\tMarried\t1951\tJ: 190,000 - 249,999\t9000\t11th\t0\t3\tOther\t5\t0\t4\n100181\tF\tNeverM\t1977\tK: 250,000 - 299,999\t15000\t< Bach.\t0\t1\tOther\t1\t1\t3\n103549\tM\tMarried\t1968\tI: 170,000 - 189,999\t9000\tHS-grad\t1\t3\tCrafts\t4\t0\t5\n102629\tF\tMarried\t1957\tI: 170,000 - 189,999\t5000\tHS-grad\t1\t1\tSales\t5\t0\t5\n100878\tM\tMarried\t1953\tJ: 190,000 - 249,999\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5\n102333\tM\tMarried\t1957\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tTechSup\t5\t0\t5\n101004\tM\tNeverM\t1981\tG: 130,000 - 149,999\t5000\tHS-grad\t0\t1\tHandler\t2\t1\t3\n101341\tM\tMarried\t1953\tC: 50,000 - 69,999\t3000\t< Bach.\t1\t3\tSales\t8\t0\t5\n104060\tF\tDivorc.\t1949\tH: 150,000 - 169,999\t5000\tHS-grad\t0\t2\t?\t4\t0\t4\n100972\tM\tMarried\t1948\tJ: 190,000 - 249,999\t11000\tMasters\t1\t3\tProf.\t6\t0\t5\n102950\tM\tMarried\t1961\tJ: 190,000 - 249,999\t9000\tAssoc-A\t1\t3\tCrafts\t5\t0\t5\n100634\tF\tNeverM\t1984\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t2\tHandler\t2\t1\t3\n100180\tM\tNeverM\t1981\tL: 300,000 and above\t7000\t< Bach.\t0\t1\tProf.\t3\t1\t3\n100458\tM\tNeverM\t1982\tH: 150,000 - 169,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n103763\tM\tMarried\t1954\tE: 90,000 - 109,999\t5000\t< Bach.\t1\t3\tProf.\t5\t0\t5\n103881\tF\tNeverM\t1983\tL: 300,000 and above\t11000\t< Bach.\t0\t1\tOther\t1\t1\t3\n100079\tF\tNeverM\t1978\tI: 170,000 - 189,999\t9000\tHS-grad\t0\t6-8\tCrafts\t3\t1\t3\n103107\tM\tNeverM\t1959\tG: 130,000 - 149,999\t15000\tHS-grad\t0\t6-8\tCrafts\t7\t0\t4\n101444\tM\tMarried\t1958\tD: 70,000 - 89,999\t10000\tBach.\t1\t3\tExec.\t6\t0\t5\n103137\tM\tMarried\t1965\tI: 170,000 - 189,999\t11000\tAssoc-V\t1\t3\tExec.\t5\t0\t5\n103749\tM\tMarried\t1976\tI: 170,000 - 189,999\t11000\tBach.\t0\t3\tProf.\t3\t1\t3\n101352\tM\tMarried\t1936\tJ: 190,000 - 249,999\t7000\tBach.\t0\t3\tProf.\t0\t0\t4\n104351\tM\tMarried\t1964\tJ: 190,000 - 249,999\t11000\tProfsc\t1\t3\tProf.\t5\t0\t5\n100978\tM\tMarried\t1964\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tOther\t5\t0\t4\n101574\tM\tMarried\t1951\tG: 130,000 - 149,999\t15000\t< Bach.\t0\t3\tSales\t9\t0\t4\n102236\tF\tMarried\t1979\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t4-5\t?\t2\t1\t3\n102533\tM\tMarried\t1972\tB: 30,000 - 49,999\t1500\tAssoc-V\t0\t3\tCrafts\t3\t0\t4\n101436\tF\tNeverM\t1978\tG: 130,000 - 149,999\t11000\tHS-grad\t0\t1\tCleric.\t3\t1\t3\n103595\tM\tNeverM\t1980\tC: 50,000 - 69,999\t9000\tHS-grad\t0\t1\tSales\t2\t1\t3\n102656\tF\tNeverM\t1964\tF: 110,000 - 129,999\t3000\tBach.\t0\t1\tExec.\t4\t0\t4\n100528\tM\tMarried\t1946\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tTechSup\t6\t0\t5\n102969\tM\tNeverM\t1961\tJ: 190,000 - 249,999\t11000\tMasters\t1\t2\tExec.\t5\t0\t5\n100731\tM\tDivorc.\t1944\tL: 300,000 and above\t9000\tPhD\t1\t9+\tProf.\t7\t0\t5\n102703\tM\tNeverM\t1983\tK: 250,000 - 299,999\t9000\t< Bach.\t0\t1\tCleric.\t2\t1\t3\n103132\tF\tMabsent\t1935\tI: 170,000 - 189,999\t1500\t< Bach.\t0\t9+\tFarming\t5\t0\t4\n103258\tM\tMarried\t1949\tB: 30,000 - 49,999\t5000\tHS-grad\t1\t3\tSales\t7\t0\t5\n100259\tM\tMarried\t1969\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t3\tTechSup\t3\t0\t5\n103334\tF\tNeverM\t1968\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tExec.\t4\t0\t4\n100843\tF\tSepar.\t1971\tJ: 190,000 - 249,999\t9000\tBach.\t1\t2\tProf.\t4\t0\t5\n100724\tM\tNeverM\t1972\tF: 110,000 - 129,999\t9000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n100529\tF\tSepar.\t1954\tF: 110,000 - 129,999\t1500\tHS-grad\t0\t9+\tMachine\t5\t0\t4\n102407\tM\tMarried\t1963\tJ: 190,000 - 249,999\t9000\t9th\t0\t3\tHandler\t4\t0\t4\n102619\tM\tMarried\t1935\tJ: 190,000 - 249,999\t15000\tPhD\t1\t3\tProf.\t10\t0\t5\n100639\tF\tDivorc.\t1944\tD: 70,000 - 89,999\t3000\tHS-grad\t0\t1\tOther\t3\t0\t4\n101979\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\tBach.\t0\t2\tExec.\t3\t1\t3\n103779\tM\tMarried\t1967\tC: 50,000 - 69,999\t5000\tBach.\t1\t3\tSales\t4\t0\t5\n101348\tM\tMarried\t1960\tL: 300,000 and above\t15000\tBach.\t0\t3\tExec.\t4\t0\t4\n102542\tM\tNeverM\t1962\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t2\tTransp.\t4\t0\t4\n103637\tF\tNeverM\t1986\tK: 250,000 - 299,999\t11000\t10th\t0\t1\tCleric.\t1\t1\t3\n100903\tF\tNeverM\t1973\tH: 150,000 - 169,999\t10000\tHS-grad\t0\t1\tCleric.\t3\t0\t4\n101616\tF\tNeverM\t1980\tE: 90,000 - 109,999\t7000\tBach.\t0\t1\tTechSup\t2\t1\t3\n101409\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n100466\tM\tMarried\t1959\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t3\tCrafts\t4\t0\t4\n101892\tM\tMarried\t1955\tL: 300,000 and above\t9000\tHS-grad\t1\t3\tCleric.\t6\t0\t5\n103424\tM\tMarried\t1958\tE: 90,000 - 109,999\t3000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5\n102224\tM\tMarried\t1923\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t3\t?\t2\t0\t4\n102124\tM\tMarried\t1971\tL: 300,000 and above\t11000\t< Bach.\t1\t3\tHandler\t4\t0\t5\n102194\tF\tDivorc.\t1931\tB: 30,000 - 49,999\t7000\t11th\t0\t2\tCleric.\t2\t0\t4\n100521\tM\tNeverM\t1963\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t2\tCrafts\t4\t0\t4\n100723\tF\tDivorc.\t1938\tG: 130,000 - 149,999\t9000\tHS-grad\t0\t9+\tCleric.\t10\t0\t4\n102677\tF\tDivorc.\t1971\tE: 90,000 - 109,999\t7000\tBach.\t0\t9+\tExec.\t3\t0\t4\n100629\tM\tMarried\t1958\tE: 90,000 - 109,999\t9000\tAssoc-V\t1\t3\tCrafts\t5\t0\t5\n101790\tF\tMarried\t1965\tE: 90,000 - 109,999\t7000\t7th-8th\t1\t4-5\tMachine\t5\t0\t5\n102676\tM\tMarried\t1948\tE: 90,000 - 109,999\t1500\t< Bach.\t1\t3\tTechSup\t7\t0\t5\n102773\tM\tMarried\t1953\tB: 30,000 - 49,999\t5000\tHS-grad\t1\t3\tSales\t8\t0\t5\n102858\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tPresch.\t0\t2\tFarming\t2\t1\t3\n100832\tM\tNeverM\t1974\tG: 130,000 - 149,999\t3000\tHS-grad\t0\t2\tCrafts\t3\t1\t3\n100238\tM\tMarried\t1973\tL: 300,000 and above\t15000\tAssoc-V\t0\t3\tHandler\t3\t0\t4\n103206\tF\tMarried\t1961\tJ: 190,000 - 249,999\t9000\t< Bach.\t1\t4-5\tExec.\t4\t0\t5\n101518\tM\tNeverM\t1981\tL: 300,000 and above\t15000\t5th-6th\t0\t6-8\tFarming\t2\t1\t3\n100969\tF\tMabsent\t1957\tJ: 190,000 - 249,999\t9000\t7th-8th\t0\t9+\tHouse-s\t2\t0\t4\n101976\tM\tNeverM\t1968\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t2\tCrafts\t4\t0\t4\n103662\tM\tNeverM\t1981\tH: 150,000 - 169,999\t10000\t9th\t0\t9+\tMachine\t2\t1\t3\n100337\tF\tNeverM\t1978\tJ: 190,000 - 249,999\t7000\t7th-8th\t0\t2\t?\t2\t1\t3\n101177\tM\tSepar.\t1957\tL: 300,000 and above\t9000\t5th-6th\t0\t2\tHandler\t6\t0\t4\n101099\tF\tNeverM\t1986\tJ: 190,000 - 249,999\t15000\t9th\t0\t6-8\tSales\t1\t1\t3\n102945\tM\tMarried\t1965\tJ: 190,000 - 249,999\t15000\t7th-8th\t0\t3\tCrafts\t4\t0\t4\n103879\tM\tMarried\t1955\tJ: 190,000 - 249,999\t15000\tHS-grad\t1\t3\tOther\t5\t0\t5\n102443\tM\tNeverM\t1986\tK: 250,000 - 299,999\t15000\tHS-grad\t0\t6-8\tOther\t2\t1\t3\n101850\tF\tSepar.\t1952\tJ: 190,000 - 249,999\t9000\t5th-6th\t0\t9+\tMachine\t5\t0\t4\n102636\tF\tWidowed\t1946\tL: 300,000 and above\t7000\t< Bach.\t0\t9+\tCleric.\t6\t0\t4\n102691\tF\tSepar.\t1971\tL: 300,000 and above\t11000\t9th\t0\t9+\tOther\t3\t0\t4\n102104\tM\tMarried\t1972\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t3\tProf.\t3\t0\t4\n102412\tF\tNeverM\t1966\tJ: 190,000 - 249,999\t11000\t9th\t0\t2\tHouse-s\t3\t0\t4\n101105\tM\tMarried\t1978\tJ: 190,000 - 249,999\t11000\t5th-6th\t0\t3\tMachine\t3\t1\t3\n103808\tM\tMarried\t1980\tE: 90,000 - 109,999\t1500\t5th-6th\t0\t3\tHandler\t2\t1\t3\n102558\tM\tMarried\t1975\tL: 300,000 and above\t15000\t7th-8th\t0\t3\tFarming\t3\t1\t3\n101305\tM\tMarried\t1971\tL: 300,000 and above\t7000\t5th-6th\t0\t3\tCrafts\t5\t0\t4\n103882\tM\tNeverM\t1975\tH: 150,000 - 169,999\t5000\t5th-6th\t0\t2\tCrafts\t3\t1\t3\n100130\tM\tMarried\t1957\tJ: 190,000 - 249,999\t11000\t5th-6th\t0\t3\tMachine\t5\t0\t4\n102642\tM\tNeverM\t1978\tJ: 190,000 - 249,999\t11000\tHS-grad\t0\t9+\tTransp.\t3\t1\t3\n100199\tF\tWidowed\t1922\tF: 110,000 - 129,999\t1500\t9th\t0\t2\tHouse-s\t2\t0\t4\n104334\tM\tMarried\t1969\tA: Below 30,000\t1500\t< Bach.\t1\t3\tCrafts\t5\t0\t5\n102073\tM\tNeverM\t1984\tK: 250,000 - 299,999\t7000\t< Bach.\t0\t1\tOther\t1\t1\t3\n104105\tM\tMarried\t1936\tG: 130,000 - 149,999\t9000\t7th-8th\t0\t3\tCrafts\t7\t0\t4\n100451\tM\tMarried\t1983\tL: 300,000 and above\t7000\tHS-grad\t0\t3\tCrafts\t2\t1\t3\n102293\tM\tNeverM\t1979\tK: 250,000 - 299,999\t11000\t11th\t0\t2\tOther\t3\t1\t3\n102143\tF\tNeverM\t1973\tJ: 190,000 - 249,999\t9000\tHS-grad\t0\t2\tCleric.\t4\t0\t4\n103362\tM\tNeverM\t1975\tL: 300,000 and above\t7000\tBach.\t0\t2\tCleric.\t3\t1\t3\n101386\tM\tMarried\t1971\tI: 170,000 - 189,999\t1500\tBach.\t1\t3\tExec.\t3\t0\t5\n103110\tF\tNeverM\t1979\tB: 30,000 - 49,999\t3000\t< Bach.\t0\t2\tTechSup\t2\t1\t3\n100048\tM\tNeverM\t1980\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n104065\tF\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\tAssoc-V\t0\t2\tCleric.\t2\t1\t3\n104237\tF\tWidowed\t1935\tH: 150,000 - 169,999\t10000\t10th\t0\t9+\tOther\t3\t0\t4\n103819\tM\tMarried\t1968\tJ: 190,000 - 249,999\t11000\t< Bach.\t0\t3\tProtec.\t4\t0\t4\n100753\tM\tMarried\t1969\tH: 150,000 - 169,999\t5000\t< Bach.\t1\t3\tCrafts\t3\t0\t5\n104066\tM\tMarried\t1956\tE: 90,000 - 109,999\t7000\tBach.\t0\t3\tExec.\t6\t0\t4\n101899\tM\tMarried\t1943\tE: 90,000 - 109,999\t10000\t7th-8th\t0\t3\tSales\t9\t0\t4\n100837\tF\tNeverM\t1983\tI: 170,000 - 189,999\t10000\t< Bach.\t0\t1\tCleric.\t1\t1\t3\n103745\tF\tMarried\t1966\tJ: 190,000 - 249,999\t9000\tBach.\t1\t4-5\tProf.\t3\t0\t5\n104090\tM\tMarried\t1953\tG: 130,000 - 149,999\t7000\tMasters\t1\t3\tProf.\t6\t0\t5\n102634\tM\tMarried\t1971\tA: Below 30,000\t1500\t< Bach.\t1\t3\tMachine\t6\t0\t5\n102442\tM\tNeverM\t1980\tJ: 190,000 - 249,999\t11000\tBach.\t0\t2\tHandler\t2\t1\t3\n100769\tF\tMarried\t1970\tB: 30,000 - 49,999\t1500\tBach.\t1\t4-5\tExec.\t3\t0\t5\n102993\tM\tMarried\t1934\tF: 110,000 - 129,999\t9000\t9th\t0\t3\t?\t3\t0\t4\n102312\tM\tNeverM\t1984\tI: 170,000 - 189,999\t1500\tHS-grad\t0\t1\tSales\t2\t1\t3\n100335\tF\tNeverM\t1986\tK: 250,000 - 299,999\t9000\t10th\t0\t1\tCleric.\t1\t1\t3\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1414212799","id":"20210302-002652_1883166588","dateCreated":"2021-01-16T00:42:44+0000","dateStarted":"2021-03-02T21:14:14+0000","dateFinished":"2021-03-02T21:14:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:77"},{"text":"%md\n\n.\nFinally, view the cluster results using a matplotlib scatterplot. We've selected two predictors to show cluster relationships in two dimensions: YRS_RESIDENCE and CUST_YEAR_OF_BIRTH. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Finally, view the cluster results using a matplotlib scatterplot. We've selected two predictors to show cluster relationships in two dimensions: YRS_RESIDENCE and CUST_YEAR_OF_BIRTH.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_200579279","id":"20210302-002652_827940445","dateCreated":"2021-01-12T22:43:05+0000","dateStarted":"2021-03-02T21:14:15+0000","dateFinished":"2021-03-02T21:14:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:78"},{"text":"%python\n\npred_df = pred[['CUST_ID', 'CLUSTER_ID', 'CUST_YEAR_OF_BIRTH', 'YRS_RESIDENCE', 'CUST_CREDIT_LIMIT']].pull()\n\nfig = plt.figure()\nax=fig.add_axes([0.1,0.1,0.8,0.8])\n\nids = pred_df['CLUSTER_ID']\nclusters = ids.drop_duplicates().values\nhandles = []\nlabs = []\ncolors = ['r', 'b', 'g']\nfor i, c in enumerate(clusters):\n xc = pred_df[pred_df['CLUSTER_ID'] == c]['YRS_RESIDENCE'].values\n yc = pred_df[pred_df['CLUSTER_ID'] == c]['CUST_YEAR_OF_BIRTH'].values\n \n h = ax.scatter(xc, yc, color= colors[i])\n handles.append(h)\n labs.append('CLUSTER' + str(c))\nax.legend(handles, labs)\nplt.title('K-Means Clustering')\n\nplt.grid(True)\n\nplt.xlabel('YRS_RESIDENCE')\nplt.ylabel('CUST_YEAR_OF_BIRTH')\nplt.show()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1906254","id":"20210302-002652_1526184505","dateCreated":"2021-01-12T22:44:56+0000","dateStarted":"2021-03-02T21:14:15+0000","dateFinished":"2021-03-02T21:14:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:79"},{"title":"Step 4: Partitioned Models","text":"%md\n\nOML4Py enables automatically building an ensemble model comprised of multiple sub-models, one for each data partition. Sub-models exist and are used as one model, which results in simplified scoring using the top-level model only. The proper sub-model is chosen by the system based on partition value(s) in the row of data to be scored. Partitioned models achieve potentially better accuracy through multiple targeted models.\n\nIn this lab, we build an *SVM* model to predict the number of years a customer resides at their residence but partitioned on customer gender. The model is then used to predict the target, then predict the target with prediction details.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py enables automatically building an ensemble model comprised of multiple sub-models, one for each data partition. Sub-models exist and are used as one model, which results in simplified scoring using the top-level model only. The proper sub-model is chosen by the system based on partition value(s) in the row of data to be scored. Partitioned models achieve potentially better accuracy through multiple targeted models.

\n

In this lab, we build an SVM model to predict the number of years a customer resides at their residence but partitioned on customer gender. The model is then used to predict the target, then predict the target with prediction details.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_189431231","id":"20210302-002652_1441096651","dateCreated":"2021-01-12T22:09:32+0000","dateStarted":"2021-03-02T21:14:18+0000","dateFinished":"2021-03-02T21:14:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:80"},{"text":"%md\n\n.\nCreate test and train data sets and drop missing values.","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create test and train data sets and drop missing values.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-271210415","id":"20210302-002652_1407638332","dateCreated":"2021-01-13T00:43:17+0000","dateStarted":"2021-03-02T21:14:18+0000","dateFinished":"2021-03-02T21:14:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:81"},{"text":"%python\n\ndat = CUST_DF.split(ratio=(0.8, 0.2), seed = 6218945)\n\ndat[0] = dat[0].dropna()\n\ntrain_x = dat[0].drop('YRS_RESIDENCE')\ntrain_y = dat[0]['YRS_RESIDENCE']\ntest_dat = dat[1]\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_452475622","id":"20210302-002652_683072683","dateCreated":"2021-01-13T00:43:29+0000","dateStarted":"2021-03-02T21:14:19+0000","dateFinished":"2021-03-02T21:14:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:82"},{"text":"%md\n\n.\nBuild Partitioned Model using the *SVM* algorithm to predict *YRS_RESIDENCE*, partitioned by *CUST_GENDER*.","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Build Partitioned Model using the SVM algorithm to predict YRS_RESIDENCE, partitioned by CUST_GENDER.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1252244236","id":"20210302-002652_1333235190","dateCreated":"2021-01-13T00:35:26+0000","dateStarted":"2021-03-02T21:14:20+0000","dateFinished":"2021-03-02T21:14:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:83"},{"text":"%python\n\ntry:\n oml.drop(model = 'SVM_PARTITIONED_REGRESSION_MODEL') \nexcept:\n print(\"No such model\")\n \n\nsetting = {'svms_kernel_function' :'dbms_data_mining.svms_linear', 'odms_partition_columns':'CUST_GENDER'}\nsvm_mod = oml.svm(\"regression\", **setting)\n \nsvm_mod.fit(train_x, train_y , model_name = 'SVM_PARTITIONED_REGRESSION_MODEL')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nModel Name: SVM_PARTITIONED_REGRESSION_MODEL\n\nModel Owner: OMLUSER02\n\nAlgorithm Name: Support Vector Machine\n\nMining Function: REGRESSION\n\nTarget: YRS_RESIDENCE\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_SUPPORT_VECTOR_MACHINES\n1 ODMS_DETAILS ODMS_ENABLE\n2 ODMS_MAX_PARTITIONS 1000\n3 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n4 ODMS_PARTITION_COLUMNS CUST_GENDER\n5 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n6 PREP_AUTO ON\n7 SVMS_CONV_TOLERANCE .0001\n8 SVMS_EPSILON .1\n9 SVMS_KERNEL_FUNCTION SVMS_LINEAR\n\nComputed Settings: \n partition name setting name setting value\n0 F SVMS_COMPLEXITY_FACTOR 3\n1 F SVMS_NUM_ITERATIONS 30\n2 F SVMS_SOLVER SVMS_SOLVER_IPM\n3 M SVMS_COMPLEXITY_FACTOR 3\n4 M SVMS_NUM_ITERATIONS 30\n5 M SVMS_SOLVER SVMS_SOLVER_IPM\n\nGlobal Statistics: \n partition name attribute name attribute value\n0 F CONVERGED YES\n1 F ITERATIONS 15\n2 F NUM_ROWS 1213\n3 M CONVERGED YES\n4 M ITERATIONS 16\n5 M NUM_ROWS 2381\n\nAttributes: \nAFFINITY_CARD\nCUST_CREDIT_LIMIT\nCUST_GENDER\nCUST_ID\nCUST_INCOME_LEVEL\nCUST_MARITAL_STATUS\nCUST_YEAR_OF_BIRTH\nEDUCATION\nHOUSEHOLD_SIZE\nOCCUPATION\nY_BOX_GAMES\n\nPartition: YES\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-22629738","id":"20210302-002652_837965032","dateCreated":"2021-01-13T00:36:05+0000","dateStarted":"2021-03-02T21:14:21+0000","dateFinished":"2021-03-02T21:14:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:84"},{"text":"%md\n\n.\nPredict on the test set and display prediction result - note the use of the top level model only.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Predict on the test set and display prediction result - note the use of the top level model only.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-155605473","id":"20210302-002652_1411925713","dateCreated":"2021-01-13T00:40:09+0000","dateStarted":"2021-03-02T21:14:25+0000","dateFinished":"2021-03-02T21:14:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:85"},{"text":"%python\n\ny_pred_part = svm_mod.predict(test_dat, test_dat)\n\nz.show(y_pred_part[['PARTITION_NAME', 'PREDICTION'] + y_pred_part.columns].round(4).head())\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"PARTITION_NAME":"string","PREDICTION":"string","CUST_ID":"string","CUST_GENDER":"string","CUST_MARITAL_STATUS":"string","CUST_YEAR_OF_BIRTH":"string","CUST_INCOME_LEVEL":"string","CUST_CREDIT_LIMIT":"string","EDUCATION":"string","AFFINITY_CARD":"string","HOUSEHOLD_SIZE":"string","OCCUPATION":"string","YRS_RESIDENCE":"string","Y_BOX_GAMES":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"PARTITION_NAME\tPREDICTION\tCUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\tPREDICTION\tPARTITION_NAME\nF\t4.3611\t100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\t4.3611\tF\nF\t3.4255\t102828\tF\tNeverM\t1967\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t1\tMachine\t4\t0\t3.4255\tF\nM\t3.1581\t103401\tM\tDivorc.\t1975\tI: 170,000 - 189,999\t10000\tHS-grad\t0\t2\tCrafts\t4\t1\t3.1581\tM\nM\t3.6503\t104077\tM\tNeverM\t1975\tL: 300,000 and above\t9000\tProfsc\t0\t2\tProf.\t3\t1\t3.6503\tM\nM\t1.9144\t101940\tM\tNeverM\t1981\tJ: 190,000 - 249,999\t7000\t< Bach.\t0\t1\t?\t2\t1\t1.9144\tM\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1974214625","id":"20210302-002652_1256561531","dateCreated":"2021-01-13T00:40:47+0000","dateStarted":"2021-03-02T21:14:25+0000","dateFinished":"2021-03-02T21:14:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:86"},{"text":"%md\n\n.\nShow model global statistics for each partitioned sub-model. The partition name column contains the values from the partition column. If multiple columns were specified, there would be one column for each with corresponding value. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Show model global statistics for each partitioned sub-model. The partition name column contains the values from the partition column. If multiple columns were specified, there would be one column for each with corresponding value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-655439524","id":"20210302-002652_965650412","dateCreated":"2021-01-13T00:57:38+0000","dateStarted":"2021-03-02T21:14:26+0000","dateFinished":"2021-03-02T21:14:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:87"},{"text":"%python\n\nz.show(svm_mod.global_stats)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"partition name":"string","attribute name":"string","attribute value":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"partition name\tattribute name\tattribute value\nF\tCONVERGED\tYES\nF\tITERATIONS\t15.0\nF\tNUM_ROWS\t1213.0\nM\tCONVERGED\tYES\nM\tITERATIONS\t16.0\nM\tNUM_ROWS\t2381.0\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_136011880","id":"20210302-002652_452522273","dateCreated":"2021-01-13T00:59:10+0000","dateStarted":"2021-03-02T21:14:27+0000","dateFinished":"2021-03-02T21:14:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:88"},{"title":"Materialize the test data","text":"%md\nMaterialize the data to table *TEST_DATA* so it can be queried from SQL.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Materialize the data to table TEST_DATA so it can be queried from SQL.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1368161132","id":"20210302-002652_217068129","dateCreated":"2021-01-13T00:58:14+0000","dateStarted":"2021-03-02T21:14:28+0000","dateFinished":"2021-03-02T21:14:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:89"},{"text":"%python\n\ntry:\n oml.drop(table = 'TEST_DATA')\nexcept:\n print(\"Table not exist\")\n_ = test_dat.materialize(table = 'TEST_DATA')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_-170558745","id":"20210302-002652_1781030599","dateCreated":"2021-01-13T00:58:45+0000","dateStarted":"2021-03-02T21:14:28+0000","dateFinished":"2021-03-02T21:14:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:90"},{"text":"%md\n\n.\nUse SQL to score data and display prediction details.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use SQL to score data and display prediction details.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1053052162","id":"20210302-002652_643114409","dateCreated":"2021-01-13T01:00:27+0000","dateStarted":"2021-03-02T21:14:30+0000","dateFinished":"2021-03-02T21:14:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:91"},{"text":"%sql\n\nSELECT CUST_ID,\n round(PREDICTION_YRS_RES,3) PRED_YRS_RES,\n RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute1\",17,100)),'rank=\"1\"/>') FIRST_ATTRIBUTE,\n RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute2\",17,100)),'rank=\"2\"/>') SECOND_ATTRIBUTE,\n RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute3\",17,100)),'rank=\"3\"/>') THIRD_ATTRIBUTE\nFROM (SELECT CUST_ID,\n PREDICTION(SVM_PARTITIONED_REGRESSION_MODEL USING *) PREDICTION_YRS_RES,\n PREDICTION_DETAILS(SVM_PARTITIONED_REGRESSION_MODEL USING *) PD\n FROM TEST_DATA\n WHERE CUST_ID < 100015\n ORDER BY CUST_ID) OUT,\n XMLTABLE('/Details'\n PASSING OUT.PD\n COLUMNS \n \"Attribute1\" XMLType PATH 'Attribute[1]',\n \"Attribute2\" XMLType PATH 'Attribute[2]',\n \"Attribute3\" XMLType PATH 'Attribute[3]') \n OUTPRED\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":300,"optionOpen":false,"setting":{"table":{"tableGridState":{},"tableColumnTypeState":{"names":{"CUST_ID":"string","PRED_YRS_RES":"string","FIRST_ATTRIBUTE":"string","SECOND_ATTRIBUTE":"string","THIRD_ATTRIBUTE":"string"},"updated":false},"tableOptionSpecHash":"[{\"name\":\"useFilter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable filter for columns\"},{\"name\":\"showPagination\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable pagination for better navigation\"},{\"name\":\"showAggregationFooter\",\"valueType\":\"boolean\",\"defaultValue\":false,\"widget\":\"checkbox\",\"description\":\"Enable a footer for displaying aggregated values\"}]","tableOptionValue":{"useFilter":false,"showPagination":false,"showAggregationFooter":false},"updated":false,"initialized":false}},"commonSetting":{}}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TABLE","data":"CUST_ID\tPRED_YRS_RES\tFIRST_ATTRIBUTE\tSECOND_ATTRIBUTE\tTHIRD_ATTRIBUTE\n100007\t4.092\t\"CUST_YEAR_OF_BIRTH\" actualValue=\"1963\" weight=\".319\" \t\"CUST_INCOME_LEVEL\" actualValue=\"L: 300,000 and above\" weight=\".128\" \t\"CUST_MARITAL_STATUS\" actualValue=\"Divorc.\" weight=\".126\" \n100010\t2.978\t\"CUST_CREDIT_LIMIT\" actualValue=\"9000\" weight=\".004\" \t\"CUST_ID\" actualValue=\"100010\" weight=\"-.001\" \t\"CUST_INCOME_LEVEL\" actualValue=\"L: 300,000 and above\" weight=\"-.033\" \n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1043415282","id":"20210302-002652_2071574971","dateCreated":"2021-01-13T01:00:56+0000","dateStarted":"2021-03-02T21:14:30+0000","dateFinished":"2021-03-02T21:14:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:92"},{"title":" Step 5: Rank attribute importance using Model Explainability","text":"%md\n\nMachine Learning Explainability, *MLX*, supports explaining and interpreting machine learning models. The ***oml.mlx*** module enables understanding a model's behavior and how it ranks predictors when making predictions in an algorithm-agnostic way. MLX currently provides these model-agnostic explanations for classification and regression models where explanations treat the ML model as a black-box, instead of using properties from the model to guide the explanation.\n\nThe Global Feature Importance explainer object is the interface to the MLX permutation importance explainer. It identifies the most important features for a given model and data set. The explainer is model-agnostic and currently supports tabular classification and regression data with both numerical and categorical features.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Machine Learning Explainability, MLX, supports explaining and interpreting machine learning models. The oml.mlx module enables understanding a model's behavior and how it ranks predictors when making predictions in an algorithm-agnostic way. MLX currently provides these model-agnostic explanations for classification and regression models where explanations treat the ML model as a black-box, instead of using properties from the model to guide the explanation.

\n

The Global Feature Importance explainer object is the interface to the MLX permutation importance explainer. It identifies the most important features for a given model and data set. The explainer is model-agnostic and currently supports tabular classification and regression data with both numerical and categorical features.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1409456174","id":"20210302-002652_1981284239","dateCreated":"2021-01-12T22:22:53+0000","dateStarted":"2021-03-02T21:14:46+0000","dateFinished":"2021-03-02T21:14:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:93"},{"text":"%md\n\n.\n\nImport the *GlobalFeatureImportance* explainer, and load the iris data set into the database. The script also adds a unique Case ID column.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Import the GlobalFeatureImportance explainer, and load the iris data set into the database. The script also adds a unique Case ID column.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1451985725","id":"20210302-002652_1591826924","dateCreated":"2021-01-12T22:23:56+0000","dateStarted":"2021-03-02T21:14:47+0000","dateFinished":"2021-03-02T21:14:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:94"},{"text":"%python\n\nfrom oml.mlx import GlobalFeatureImportance\nfrom sklearn import datasets\n\niris_ds = datasets.load_iris()\niris_data = iris_ds.data.astype(float)\nX = pd.DataFrame(iris_data, columns=iris_ds.feature_names)\ny = pd.DataFrame(iris_ds.target, columns=['TARGET'])\nrow_id = pd.DataFrame(np.arange(iris_data.shape[0]), \ncolumns=['CASE_ID'])\n\n\ntry:\n oml.drop(table=\"IRIS_ID\")\nexcept:\n pass\ndf = oml.create(pd.concat([X, y, row_id], axis=1), table='IRIS_ID')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_83527112","id":"20210302-002652_1368807412","dateCreated":"2021-01-13T01:09:25+0000","dateStarted":"2021-03-02T21:14:47+0000","dateFinished":"2021-03-02T21:14:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:95"},{"text":"%md\n\n.\nSplit the data set into train and test sets.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Split the data set into train and test sets.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1100041778","id":"20210302-002652_1729402908","dateCreated":"2021-01-13T01:10:52+0000","dateStarted":"2021-03-02T21:14:48+0000","dateFinished":"2021-03-02T21:14:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:96"},{"text":"%python\n\ntrain, test = df.split(ratio=(0.8, 0.2), hash_cols='CASE_ID', seed=32)\nX, y = train.drop('TARGET'), train['TARGET']\nX_test, y_test = test.drop('TARGET'), test['TARGET']\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_-530478783","id":"20210302-002652_783739126","dateCreated":"2021-01-13T01:19:25+0000","dateStarted":"2021-03-02T21:14:49+0000","dateFinished":"2021-03-02T21:14:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:97"},{"text":"%md\n\n.\nTrain an *SVM* model.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Train an SVM model.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_947680236","id":"20210302-002652_2051861237","dateCreated":"2021-01-13T01:19:51+0000","dateStarted":"2021-03-02T21:14:50+0000","dateFinished":"2021-03-02T21:14:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:98"},{"text":"%python\n\nmodel = oml.algo.svm(ODMS_RANDOM_SEED=32).fit(X, y, case_id='CASE_ID')\n\"SVM accuracy score = {:.2f}\".format(model.score(X_test, y_test))\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"'SVM accuracy score = 0.94'\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1215595016","id":"20210302-002652_419838911","dateCreated":"2021-01-13T01:21:36+0000","dateStarted":"2021-03-02T21:14:51+0000","dateFinished":"2021-03-02T21:14:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:99"},{"text":"%md\n\n.\nCreate the MLX Global Feature Importance explainer *gfi*, using the *f1_weighted metric*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the MLX Global Feature Importance explainer gfi, using the f1_weighted metric.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-1838934359","id":"20210302-002652_1519490299","dateCreated":"2021-01-13T01:21:53+0000","dateStarted":"2021-03-02T21:14:54+0000","dateFinished":"2021-03-02T21:14:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:100"},{"text":"%python\n\ngfi = GlobalFeatureImportance(mining_function='classification', score_metric='f1_weighted', random_state=32, parallel=4)\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_-1657540389","id":"20210302-002652_1132017159","dateCreated":"2021-01-13T01:22:22+0000","dateStarted":"2021-03-02T21:14:54+0000","dateFinished":"2021-03-02T21:14:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:101"},{"text":"%md\n\n.\n\nInvoke ***gfi.explain*** to generate the global feature importance for the provided data. The explainer returns an ordered list of features along with their importance values. Features located at higher ranks have more impact on the model predictions. Importance values also represent relative feature importance. Here we see that petal length is the most important feature. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.

\n

Invoke gfi.explain to generate the global feature importance for the provided data. The explainer returns an ordered list of features along with their importance values. Features located at higher ranks have more impact on the model predictions. Importance values also represent relative feature importance. Here we see that petal length is the most important feature.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1632228361","id":"20210302-002652_1585407967","dateCreated":"2021-01-13T01:22:40+0000","dateStarted":"2021-03-02T21:14:55+0000","dateFinished":"2021-03-02T21:14:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:102"},{"text":"%python\n\nexplanation = gfi.explain(model, X, y,\ncase_id='CASE_ID', n_iter=10)\nexplanation\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:14:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Global Feature Importance: \n\t[0] petal length (cm): Value: 0.3496, Error: 0.0236\n\t[1] petal width (cm): Value: 0.2440, Error: 0.0332\n\t[2] sepal width (cm): Value: 0.0861, Error: 0.0197\n\t[3] sepal length (cm): Value: 0.0108, Error: 0.0124\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_-782370515","id":"20210302-002652_1988916332","dateCreated":"2021-01-13T01:22:58+0000","dateStarted":"2021-03-02T21:14:56+0000","dateFinished":"2021-03-02T21:15:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:103"},{"title":"Try it yourself","text":"%md\nBuild an in-database RandomForest model and compare the model's attribute importance ranking with that from *MLX*.","user":"OMLUSER02","dateUpdated":"2021-03-02T21:15:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Build an in-database RandomForest model and compare the model's attribute importance ranking with that from MLX.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_1752875015","id":"20210302-002652_543948810","dateCreated":"2021-01-20T05:10:19+0000","dateStarted":"2021-03-02T21:15:02+0000","dateFinished":"2021-03-02T21:15:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:104"},{"text":"%python\n\n# Insert code here\n\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:15:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812550_577511151","id":"20210302-002652_707777294","dateCreated":"2021-01-20T05:11:32+0000","dateStarted":"2021-03-02T21:15:02+0000","dateFinished":"2021-03-02T21:15:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:105"},{"text":"%md\n\n# End of Script\n","user":"OMLUSER02","dateUpdated":"2021-03-02T21:15:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812550_559038861","id":"20210302-002652_264964107","dateCreated":"2021-01-13T01:21:25+0000","dateStarted":"2021-03-02T21:15:03+0000","dateFinished":"2021-03-02T21:15:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:106"},{"text":"%md\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:13:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812550_1889791474","id":"20210302-002652_452010634","dateCreated":"2021-02-18T22:50:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:107"}],"name":"Lab 3: OML4Py Algorithms","id":"40636","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 4 OML4Py Datastore.json b/machine-learning/labs/oml4py-live-labs/Lab 4 OML4Py Datastore.json deleted file mode 100644 index e5221713..00000000 --- a/machine-learning/labs/oml4py-live-labs/Lab 4 OML4Py Datastore.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities. \n\nIn this lab, you will learn about the **datastore** feature of OML4Py.\n\nDatastores exist in the user’s Oracle Database schema. A datastore, and the objects it contains, persist in the database until explicitly deleted. By using a datastore, you can store Python objects in a named datastore entry. This named datastore can then be used in subsequent Python sessions, and even be made available to other users or programs by granting/revoking read permissions.\n\nPython objects, including OML DataFrame proxy objects, exist for the duration of the current Python session unless you explicitly save them. You can save one or more Python objects, including OML DataFrame proxy objects, to a named datastore and then load those objects in a later Python session. This is also useful when using embedded Python execution.\n\nBy using a **datastore**, you can:\n\n* Save OML4Py and other Python objects in one Python session and load them in another Python session\n* Pass non-scalar arguments to Python functions for use in embedded Python execution from both the Python, and more importantly, the SQL API where only scalar values can be passed to functions\n* List available datastores and explore the contents of a datastore\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:17+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

In this lab, you will learn about the datastore feature of OML4Py.

\n

Datastores exist in the user’s Oracle Database schema. A datastore, and the objects it contains, persist in the database until explicitly deleted. By using a datastore, you can store Python objects in a named datastore entry. This named datastore can then be used in subsequent Python sessions, and even be made available to other users or programs by granting/revoking read permissions.

\n

Python objects, including OML DataFrame proxy objects, exist for the duration of the current Python session unless you explicitly save them. You can save one or more Python objects, including OML DataFrame proxy objects, to a named datastore and then load those objects in a later Python session. This is also useful when using embedded Python execution.

\n

By using a datastore, you can:

\n
    \n
  • Save OML4Py and other Python objects in one Python session and load them in another Python session
  • \n
  • Pass non-scalar arguments to Python functions for use in embedded Python execution from both the Python, and more importantly, the SQL API where only scalar values can be passed to functions
  • \n
  • List available datastores and explore the contents of a datastore
  • \n
\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1420921598","id":"20210224-211339_155484340","dateCreated":"2021-01-10T19:41:20+0000","dateStarted":"2021-02-24T21:37:17+0000","dateFinished":"2021-02-24T21:37:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:22"},{"title":"Step 1: Import OML4Py and supporting libraries","text":"%md\n\nTo use OML4Py, first import the package *oml*. Import the *Pandas* package to work with oml DataFrames.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To use OML4Py, first import the package oml. Import the Pandas package to work with oml DataFrames.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1108743318","id":"20210224-211339_1894055839","dateCreated":"2021-01-10T19:49:44+0000","dateStarted":"2021-02-24T21:37:20+0000","dateFinished":"2021-02-24T21:37:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:23"},{"text":"%python\n\nimport pandas as pd\nimport oml\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219268_-1825825005","id":"20210224-211339_89120861","dateCreated":"2021-01-10T19:54:18+0000","dateStarted":"2021-02-24T21:37:21+0000","dateFinished":"2021-02-24T21:37:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:24"},{"title":"Step 2: Create Pandas DataFrames and load them into Autonomous Database","text":"%md\n\nIn this section, you will work with three data sets - *IRIS* data set, *Diabetes* data set, and *Boston* data set. \n\nYou will learn how to:\n\n* Get an OML DataFrame proxy object for the IRIS table and display the columns.\n* Create and display the columns for each data set\n* Use the dataframe to explore the datastore functionality\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this section, you will work with three data sets - IRIS data set, Diabetes data set, and Boston data set.

\n

You will learn how to:

\n
    \n
  • Get an OML DataFrame proxy object for the IRIS table and display the columns.
  • \n
  • Create and display the columns for each data set
  • \n
  • Use the dataframe to explore the datastore functionality
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1998054050","id":"20210224-211339_1358926713","dateCreated":"2021-01-10T19:54:47+0000","dateStarted":"2021-02-24T21:37:30+0000","dateFinished":"2021-02-24T21:37:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:25"},{"text":"%md\n\n.\nSync the *IRIS* table in the OMLUSER schema to an OML DataFrame proxy object.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Sync the IRIS table in the OMLUSER schema to an OML DataFrame proxy object.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_2083157262","id":"20210224-211339_2098460914","dateCreated":"2021-01-10T19:58:58+0000","dateStarted":"2021-02-24T21:37:31+0000","dateFinished":"2021-02-24T21:37:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:26"},{"text":"%python\n\nIRIS = oml.sync(view = \"IRIS_VIEW\")\n\nprint(IRIS.columns)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['SEPAL_LENGTH', 'SEPAL_WIDTH', 'PETAL_LENGTH', 'PETAL_WIDTH', 'SPECIES']\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1584745055","id":"20210224-211339_710736072","dateCreated":"2021-01-10T19:59:22+0000","dateStarted":"2021-02-24T21:37:31+0000","dateFinished":"2021-02-24T21:37:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:27"},{"text":"%md\n\n.\nCreate the temporary *diabetes* table.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the temporary diabetes table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_560180362","id":"20210224-211339_1349232854","dateCreated":"2021-01-10T19:59:53+0000","dateStarted":"2021-02-24T21:37:32+0000","dateFinished":"2021-02-24T21:37:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:28"},{"text":"%python\n\nfrom sklearn import datasets\ndiabetes = datasets.load_diabetes()\nx = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)\ny = pd.DataFrame(diabetes.target, columns=['disease_progression'])\n\nDIABETES_TMP = oml.push(pd.concat([x, y], axis=1))\nprint(DIABETES_TMP.columns)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6', 'disease_progression']\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1296854298","id":"20210224-211339_2091093497","dateCreated":"2021-01-10T20:02:17+0000","dateStarted":"2021-02-24T21:37:32+0000","dateFinished":"2021-02-24T21:37:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:29"},{"text":"%md\n\n.\nCreate the temporary *Boston* table.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the temporary Boston table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1958484406","id":"20210224-211339_504708855","dateCreated":"2021-01-10T20:02:32+0000","dateStarted":"2021-02-24T21:37:33+0000","dateFinished":"2021-02-24T21:37:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:30"},{"text":"%python\n\nboston = datasets.load_boston()\nx = pd.DataFrame(boston.data, columns = boston.feature_names.tolist())\ny = pd.DataFrame(boston.target, columns = ['Value'])\n\nBOSTON_TMP = oml.push(pd.concat([x, y], axis=1))\nprint(BOSTON_TMP.columns)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'Value']\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-334605286","id":"20210224-211339_1405230917","dateCreated":"2021-01-10T20:03:05+0000","dateStarted":"2021-02-24T21:37:34+0000","dateFinished":"2021-02-24T21:37:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:31"},{"title":"Step 3: Save Python objects to datastore","text":"%md\n\nSave the *IRIS* data set and the temporary *BOSTON* proxy object to a datastore named *ds_pydata*, overwriting if the named datastore already exists. Note that you can store actual data objects in a datastore, but large data objects should remain as database tables for performance and scalability.\n\nBy storing the *BOSTON_TMP* object, the temporary table will not be deleted when the session terminates.\n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Save the IRIS data set and the temporary BOSTON proxy object to a datastore named ds_pydata, overwriting if the named datastore already exists. Note that you can store actual data objects in a datastore, but large data objects should remain as database tables for performance and scalability.

\n

By storing the BOSTON_TMP object, the temporary table will not be deleted when the session terminates.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_2141784995","id":"20210224-211339_1583489267","dateCreated":"2021-01-10T20:03:28+0000","dateStarted":"2021-02-24T21:37:35+0000","dateFinished":"2021-02-24T21:37:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:32"},{"text":"%md\n\n.\nSave the *IRIS* and *BOSTON* tables in the OML4Py Autonomous Database datastore.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Save the IRIS and BOSTON tables in the OML4Py Autonomous Database datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1930641472","id":"20210224-211339_1053733507","dateCreated":"2021-01-10T20:04:19+0000","dateStarted":"2021-02-24T21:37:35+0000","dateFinished":"2021-02-24T21:37:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:33"},{"text":"%python\n\noml.ds.save(objs={'oml_iris':IRIS, 'oml_boston':BOSTON_TMP},\n name=\"ds_pydata\", description = \"python datasets\",\n overwrite=True)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219268_416600104","id":"20210224-211339_161202475","dateCreated":"2021-01-10T21:08:12+0000","dateStarted":"2021-02-24T21:37:36+0000","dateFinished":"2021-02-24T21:37:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:34"},{"text":"%md\n\n.\nAdd the temporary DIABETES_TMP proxy object to the same datastore. Note the use of *append=True*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Add the temporary DIABETES_TMP proxy object to the same datastore. Note the use of append=True.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_600002483","id":"20210224-211339_1256247146","dateCreated":"2021-01-10T21:08:22+0000","dateStarted":"2021-02-24T21:37:43+0000","dateFinished":"2021-02-24T21:37:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:35"},{"text":"%python\n\noml.ds.save(objs={'oml_diabetes':DIABETES_TMP}, name=\"ds_pydata\", append=True)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219268_-1128108113","id":"20210224-211339_88742781","dateCreated":"2021-01-10T21:10:17+0000","dateStarted":"2021-02-24T21:37:44+0000","dateFinished":"2021-02-24T21:37:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:36"},{"text":"%md\n\n.\nSave the *IRIS* table to a new datastore, and then list the datastores. Notice we see the datastore name, the number of objects in the datastore, the size in bytes consumed, when the datastore was create/updated, and any description provided by the user. Our two datastores *ds_iris_data* and *ds_pydata* are present, with the latter containing the three objects we added\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Save the IRIS table to a new datastore, and then list the datastores. Notice we see the datastore name, the number of objects in the datastore, the size in bytes consumed, when the datastore was create/updated, and any description provided by the user. Our two datastores ds_iris_data and ds_pydata are present, with the latter containing the three objects we added

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-732620779","id":"20210224-211339_1323039741","dateCreated":"2021-01-10T21:11:58+0000","dateStarted":"2021-02-24T21:37:46+0000","dateFinished":"2021-02-24T21:37:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:37"},{"text":"%python\n\noml.ds.save(objs={'IRIS':IRIS},\nname=\"IRIS\", description = \"IRIS dataset\", overwrite=True)\n\noml.ds.dir()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name object_count size date description\n0 IRIS 1 698 2021-02-24 21:37:47 IRIS dataset\n1 ds_pydata 3 2625 2021-02-24 21:37:36 python datasets\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_769182251","id":"20210224-211339_429848980","dateCreated":"2021-01-10T21:16:42+0000","dateStarted":"2021-02-24T21:37:47+0000","dateFinished":"2021-02-24T21:37:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:38"},{"title":"Step 4: Save model objects in a datastore","text":"%md\n\nThis step illustrates how to store other types of objects in datastores. For this, you will create regression models using sklearn and OML4Py.\n\nThe following script builds two regression models - *regr1* and *regr2*. One model (regr1) uses the open source function LinearRegression() and regr2 uses the OML function ***oml.glm***.\n\nNote, this highlights that both open source models and in-database model proxy objects can be stored in a datastore. Like tables created using the ***oml.push*** function, default-named model proxy objects are dropped at the end of the database connection unless they are saved in a datastore.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step illustrates how to store other types of objects in datastores. For this, you will create regression models using sklearn and OML4Py.

\n

The following script builds two regression models - regr1 and regr2. One model (regr1) uses the open source function LinearRegression() and regr2 uses the OML function oml.glm.

\n

Note, this highlights that both open source models and in-database model proxy objects can be stored in a datastore. Like tables created using the oml.push function, default-named model proxy objects are dropped at the end of the database connection unless they are saved in a datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-45603203","id":"20210224-211339_1430908498","dateCreated":"2021-01-10T21:18:16+0000","dateStarted":"2021-02-24T21:37:47+0000","dateFinished":"2021-02-24T21:37:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:39"},{"text":"%python\n\nfrom sklearn import linear_model\n\nregr1 = linear_model.LinearRegression()\nregr1.fit(boston.data, boston.target)\n\nregr2 = oml.glm(\"regression\")\nX = BOSTON_TMP.drop('Value')\ny = BOSTON_TMP['Value']\nregr2 = regr2.fit(X, y)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219268_1199894551","id":"20210224-211339_890485","dateCreated":"2021-01-10T21:19:50+0000","dateStarted":"2021-02-24T21:37:48+0000","dateFinished":"2021-02-24T21:37:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:40"},{"text":"%md\n\n.\nSave the objects *regr1* and *regr2* to the datastore named \"ds_pymodels\" and allow the read privilege to be granted to them.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Save the objects regr1 and regr2 to the datastore named “ds_pymodels” and allow the read privilege to be granted to them.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-754039912","id":"20210224-211339_295207322","dateCreated":"2021-01-10T21:20:32+0000","dateStarted":"2021-02-24T21:37:51+0000","dateFinished":"2021-02-24T21:37:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%python\n\noml.ds.save(objs={'regr1':regr1, 'regr2':regr2},\n name=\"ds_pymodels\", grantable=True, \n overwrite=True)\n\noml.ds.dir()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name object_count size date description\n0 IRIS 1 698 2021-02-24 21:37:47 IRIS dataset\n1 ds_pydata 3 2625 2021-02-24 21:37:36 python datasets\n2 ds_pymodels 2 4069 2021-02-24 21:37:52 None\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1947992827","id":"20210224-211339_2141493348","dateCreated":"2021-01-10T21:21:04+0000","dateStarted":"2021-02-24T21:37:52+0000","dateFinished":"2021-02-24T21:37:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"text":"%md\n.\nGrant the read privilege to all users by specifying *user=None*. Finally, list the datastores to which the read privilege has been granted.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Grant the read privilege to all users by specifying user=None. Finally, list the datastores to which the read privilege has been granted.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1704209324","id":"20210224-211339_1694876348","dateCreated":"2021-01-10T21:21:16+0000","dateStarted":"2021-02-24T21:37:53+0000","dateFinished":"2021-02-24T21:37:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%python\n\noml.grant(name=\"ds_pymodels\", typ=\"datastore\", user=None)\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name grantee\n0 ds_pymodels PUBLIC\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_577758307","id":"20210224-211339_165105239","dateCreated":"2021-01-10T21:21:54+0000","dateStarted":"2021-02-24T21:37:53+0000","dateFinished":"2021-02-24T21:37:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"title":"Step 5: Load datastore objects into memory","text":"%md\n\nLoad all Python objects from a datastore to the global workspace and sort the result by name. Notice that they have the name specified in the dictionary when saved.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Load all Python objects from a datastore to the global workspace and sort the result by name. Notice that they have the name specified in the dictionary when saved.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_2071884467","id":"20210224-211339_1544981158","dateCreated":"2021-01-10T21:22:09+0000","dateStarted":"2021-02-24T21:37:59+0000","dateFinished":"2021-02-24T21:37:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%md\n.\nLoad the objects associated with the datastore named *ds_pydata* into memory\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:37:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Load the objects associated with the datastore named ds_pydata into memory

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-480070041","id":"20210224-211339_128605944","dateCreated":"2021-01-10T21:22:50+0000","dateStarted":"2021-02-24T21:38:00+0000","dateFinished":"2021-02-24T21:38:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%python\n\nsorted(oml.ds.load(name=\"ds_pydata\"))\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['oml_boston', 'oml_diabetes', 'oml_iris']\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1880415182","id":"20210224-211339_1290894483","dateCreated":"2021-01-10T21:23:24+0000","dateStarted":"2021-02-24T21:38:00+0000","dateFinished":"2021-02-24T21:38:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%md\n\n.\nLoad the Python object named *regr2* from the datastore *ds_pymodels* to theglobal workspace. Display the model details for model *regr2*. With the boolean *to_globals* parameter, you can specify whether the objects are loaded to a global workspace or to a dictionary object. If the argument *to_globals* is *True*, then ***oml.ds.load*** function loads the objects into the global workspace. If the argument is *False*, then the function returns a dict object that contains pairs of object names and values.\n\nNote, *True* is the default value for *to_globals*, so it it not necessary to specify this argument explicitly. \n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Load the Python object named regr2 from the datastore ds_pymodels to theglobal workspace. Display the model details for model regr2. With the boolean to_globals parameter, you can specify whether the objects are loaded to a global workspace or to a dictionary object. If the argument to_globals is True, then oml.ds.load function loads the objects into the global workspace. If the argument is False, then the function returns a dict object that contains pairs of object names and values.

\n

Note, True is the default value for to_globals, so it it not necessary to specify this argument explicitly.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_2006554485","id":"20210224-211339_2145859244","dateCreated":"2021-01-10T21:23:40+0000","dateStarted":"2021-02-24T21:38:06+0000","dateFinished":"2021-02-24T21:38:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%python\n\noml.ds.load(name=\"ds_pymodels\", objs=[\"regr2\"], to_globals=True)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['regr2']\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-173054131","id":"20210224-211339_390905932","dateCreated":"2021-01-10T21:24:22+0000","dateStarted":"2021-02-24T21:38:06+0000","dateFinished":"2021-02-24T21:38:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"text":"%python\n\nregr2","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nAlgorithm Name: Generalized Linear Model\n\nMining Function: REGRESSION\n\nTarget: Value\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_GENERALIZED_LINEAR_MODEL\n1 GLMS_CONF_LEVEL .95\n2 GLMS_FTR_GENERATION GLMS_FTR_GENERATION_DISABLE\n3 GLMS_FTR_SELECTION GLMS_FTR_SELECTION_DISABLE\n4 ODMS_DETAILS ODMS_ENABLE\n5 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n6 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n7 PREP_AUTO ON\n\nComputed Settings: \n setting name setting value\n0 GLMS_CONV_TOLERANCE .0000050000000000000004\n1 GLMS_NUM_ITERATIONS 30\n2 GLMS_RIDGE_REGRESSION GLMS_RIDGE_REG_DISABLE\n3 GLMS_SOLVER GLMS_SOLVER_CHOL\n\nGlobal Statistics: \n attribute name attribute value\n0 ADJUSTED_R_SQUARE 0.73379\n1 AIC 1589.64\n2 COEFF_VAR 21.0595\n3 CONVERGED YES\n4 CORRECTED_TOTAL_DF 505\n5 CORRECTED_TOT_SS 42716.3\n6 DEPENDENT_MEAN 22.5328\n7 ERROR_DF 492\n8 ERROR_MEAN_SQUARE 22.5179\n9 ERROR_SUM_SQUARES 11078.8\n10 F_VALUE 108.077\n11 GMSEP 23.1597\n12 HOCKING_SP 0.045861\n13 J_P 23.1409\n14 MODEL_DF 13\n15 MODEL_F_P_VALUE 0\n16 MODEL_MEAN_SQUARE 2433.65\n17 MODEL_SUM_SQUARES 31637.5\n18 NUM_PARAMS 14\n19 NUM_ROWS 506\n20 RANK_DEFICIENCY 0\n21 ROOT_MEAN_SQ 4.7453\n22 R_SQ 0.740643\n23 SBIC 1648.81\n24 VALID_COVARIANCE_MATRIX YES\n\nAttributes: \nAGE\nB\nCHAS\nCRIM\nDIS\nINDUS\nLSTAT\nNOX\nPTRATIO\nRAD\nRM\nTAX\nZN\n\nPartition: NO\n\nCoefficients: \n\n name level estimate\n0 (Intercept) None 36.459488\n1 AGE None 0.000692\n2 B None 0.009312\n3 CHAS None 2.686734\n4 CRIM None -0.108011\n5 DIS None -1.475567\n6 INDUS None 0.020559\n7 LSTAT None -0.524758\n8 NOX None -17.766611\n9 PTRATIO None -0.952747\n10 RAD None 0.306049\n11 RM None 3.809865\n12 TAX None -0.012335\n13 ZN None 0.046420\n\nFit Details: \n\n name value\n0 ADJUSTED_R_SQUARE 0.733790\n1 AIC 1589.642798\n2 COEFF_VAR 21.059508\n3 CORRECTED_TOTAL_DF 505.000000\n4 CORRECTED_TOT_SS 42716.295415\n5 DEPENDENT_MEAN 22.532806\n6 ERROR_DF 492.000000\n7 ERROR_MEAN_SQUARE 22.517855\n8 ERROR_SUM_SQUARES 11078.784578\n9 F_VALUE 108.076666\n10 GMSEP 23.159731\n11 HOCKING_SP 0.045861\n12 J_P 23.140878\n13 MODEL_CONVERGED 1.000000\n14 MODEL_DF 13.000000\n15 MODEL_F_P_VALUE 0.000000\n16 MODEL_MEAN_SQUARE 2433.654680\n17 MODEL_SUM_SQUARES 31637.510837\n18 NUM_PARAMS 14.000000\n19 NUM_ROWS 506.000000\n20 RANK_DEFICIENCY 0.000000\n21 ROOT_MEAN_SQ 4.745298\n22 R_SQ 0.740643\n23 SBIC 1648.814312\n24 VALID_COVARIANCE_MATRIX 1.000000\n\nRank: \n\n14\n\nDeviance: \n\n11078.784578\n\nAIC: \n\n1590\n\nNull Deviance: \n\n42716.295415\n\nDF Residual: \n\n492.0\n\nDF Null: \n\n505.0\n\nConverged: \n\nTrue\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1888765752","id":"20210224-211339_1120145859","dateCreated":"2021-01-16T19:05:32+0000","dateStarted":"2021-02-24T21:38:12+0000","dateFinished":"2021-02-24T21:38:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%md\n\n.\nRun the following command to load the named Python object (regression model) *regr1*, from the datastore to the user's workspace.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Run the following command to load the named Python object (regression model) regr1, from the datastore to the user's workspace.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_69405271","id":"20210224-211339_93776108","dateCreated":"2021-01-10T21:24:46+0000","dateStarted":"2021-02-24T21:38:13+0000","dateFinished":"2021-02-24T21:38:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%python\n\noml.ds.load(name=\"ds_pymodels\", objs=[\"regr1\"], to_globals=False)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"{'regr1': LinearRegression()}\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1844398088","id":"20210224-211339_1132653732","dateCreated":"2021-01-10T21:25:29+0000","dateStarted":"2021-02-24T21:38:13+0000","dateFinished":"2021-02-24T21:38:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"title":"Step 6: View datastores and other details","text":"%md\n\nList the datastores to which other users have been granted the read privilege. Notice that this is shared with PUBLIC, so other users have access to this datastore as well.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

List the datastores to which other users have been granted the read privilege. Notice that this is shared with PUBLIC, so other users have access to this datastore as well.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1707702510","id":"20210224-211339_842861112","dateCreated":"2021-01-10T21:26:16+0000","dateStarted":"2021-02-24T21:38:17+0000","dateFinished":"2021-02-24T21:38:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"text":"%python\n\noml.ds.dir(dstype=\"all\")[['owner', 'datastore_name', 'object_count']]\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" owner datastore_name object_count\n0 OMLUSER IRIS 1\n1 OMLUSER ds_pydata 3\n2 OMLUSER ds_pymodels 2\n3 OMLUSER15 ds_pymodels 2\n4 OMLUSER20 ds_pymodels 2\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1291411684","id":"20210224-211339_1343578037","dateCreated":"2021-01-10T21:42:48+0000","dateStarted":"2021-02-24T21:38:18+0000","dateFinished":"2021-02-24T21:38:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%md\n\n.\nList the datastores to which other users have been granted the read privilege.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the datastores to which other users have been granted the read privilege.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-515373542","id":"20210224-211339_1651907795","dateCreated":"2021-01-10T21:43:05+0000","dateStarted":"2021-02-24T21:38:21+0000","dateFinished":"2021-02-24T21:38:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%python\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name grantee\n0 ds_pymodels PUBLIC\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-911805597","id":"20210224-211339_918895605","dateCreated":"2021-01-10T21:43:33+0000","dateStarted":"2021-02-24T21:38:21+0000","dateFinished":"2021-02-24T21:38:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"title":"Step 7: View contents of a datastore","text":"%md\n\nThis step shows how to view and describe the content of a datastore. This example highlights the *ds_pydata* datastore.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to view and describe the content of a datastore. This example highlights the ds_pydata datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_999039049","id":"20210224-211339_1827904479","dateCreated":"2021-01-10T21:43:47+0000","dateStarted":"2021-02-24T21:38:24+0000","dateFinished":"2021-02-24T21:38:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%md\n\n.\nList the content of datastore *ds_pydata*. The script returns the description of three proxy objects - *iris*, *oml_boston*, and *oml_diabetes*. It lists the class, \nsize, length, row and column count for each object. Notice that the two proxy objects and one Pandas DataFrame are listed.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the content of datastore ds_pydata. The script returns the description of three proxy objects - iris, oml_boston, and oml_diabetes. It lists the class,\n
size, length, row and column count for each object. Notice that the two proxy objects and one Pandas DataFrame are listed.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1334775942","id":"20210224-211339_375490819","dateCreated":"2021-01-10T21:46:30+0000","dateStarted":"2021-02-24T21:38:25+0000","dateFinished":"2021-02-24T21:38:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"text":"%python\n\noml.ds.describe(name='ds_pydata')\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" object_name class size length row_count col_count\n0 oml_boston oml.DataFrame 1019 506 506 14\n1 oml_diabetes oml.DataFrame 909 442 442 11\n2 oml_iris oml.DataFrame 697 150 150 5\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1574821502","id":"20210224-211339_1143185304","dateCreated":"2021-01-10T21:47:49+0000","dateStarted":"2021-02-24T21:38:25+0000","dateFinished":"2021-02-24T21:38:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"title":"Step 8: Manage datastore privileges","text":"%md\n\nThis section shows how to revoke read privilege, show datastores to which read privilege has been granted, and again grant read privilege to a user.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This section shows how to revoke read privilege, show datastores to which read privilege has been granted, and again grant read privilege to a user.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1314716941","id":"20210224-211339_1529220730","dateCreated":"2021-01-10T21:48:14+0000","dateStarted":"2021-02-24T21:38:28+0000","dateFinished":"2021-02-24T21:38:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%md\n\n.\nRevoke the read privilege from every user by specifying *user=None* on the datastore *ds_pymodels*. The result is empty. Notice that the type is *datastore*. In the next lab we'll see that this same function can be used for scripts in the script repository. \n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Revoke the read privilege from every user by specifying user=None on the datastore ds_pymodels. The result is empty. Notice that the type is datastore. In the next lab we'll see that this same function can be used for scripts in the script repository.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1248913539","id":"20210224-211339_737893282","dateCreated":"2021-01-10T21:55:44+0000","dateStarted":"2021-02-24T21:38:28+0000","dateFinished":"2021-02-24T21:38:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%python\n\noml.revoke(name=\"ds_pymodels\", typ=\"datastore\", user=None)\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:38:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Empty DataFrame\nColumns: [datastore_name, grantee]\nIndex: []\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-157560871","id":"20210224-211339_835249743","dateCreated":"2021-01-10T21:56:44+0000","dateStarted":"2021-02-24T21:38:29+0000","dateFinished":"2021-02-24T21:38:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"text":"%md\n\n.\nGrant the read privilege to *PUBLIC* by using *user=None*.\nIf you wanted to grant read privilege to a single user, you can do something like:\n oml.grant(name=\"ds_pymodels\", typ=\"datastore\", user=\"OMLUSER\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:41:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Grant the read privilege to PUBLIC by using user=None.\n
If you wanted to grant read privilege to a single user, you can do something like:

\n
oml.grant(name=\"ds_pymodels\", typ=\"datastore\", user=\"OMLUSER\")\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-2083828285","id":"20210224-211339_1775198385","dateCreated":"2021-01-10T21:57:00+0000","dateStarted":"2021-02-24T21:41:31+0000","dateFinished":"2021-02-24T21:41:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"text":"%python\n\noml.grant(name=\"ds_pymodels\", typ=\"datastore\", user=None)\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:39:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name grantee\n0 ds_pymodels PUBLIC\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_30471799","id":"20210224-211339_41023020","dateCreated":"2021-01-10T21:58:23+0000","dateStarted":"2021-02-24T21:39:12+0000","dateFinished":"2021-02-24T21:39:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"title":"Step 9: Delete datastore contents","text":"%md\n\nThis step shows how to use the ***oml.ds.delete function*** to delete datastores or datastore contents.","user":"OMLUSER03","dateUpdated":"2021-02-05T20:49:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to use the oml.ds.delete function to delete datastores or datastore contents.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_452566083","id":"20210224-211339_1940298635","dateCreated":"2021-01-10T21:58:40+0000","dateStarted":"2021-02-05T20:49:33+0000","dateFinished":"2021-02-05T20:49:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"text":"%md\n\n.\nFirst, delete the contents of datastore *ds_pydata*, then delete the datastore itself. Next, use regular expression pattern matching to delete the datastore *ds_pymodels*.\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:49:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
First, delete the contents of datastore ds_pydata, then delete the datastore itself. Next, use regular expression pattern matching to delete the datastore ds_pymodels.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1385808347","id":"20210224-211339_86696238","dateCreated":"2021-01-10T22:04:02+0000","dateStarted":"2021-02-05T20:49:33+0000","dateFinished":"2021-02-05T20:49:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%python\n\noml.ds.delete(name=\"ds_pydata\", objs=[\"IRIS\", \"oml_boston\"])\n\noml.ds.delete(name=\"ds_pydata\")\n\noml.ds.delete(name=\"_pymodels\", regex_match=True)\n\noml.ds.dir()\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:41:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name object_count size date description\n0 IRIS 1 698 2021-02-24 21:37:47 IRIS dataset\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1297337263","id":"20210224-211339_393401298","dateCreated":"2021-01-10T22:04:31+0000","dateStarted":"2021-02-24T21:41:55+0000","dateFinished":"2021-02-24T21:42:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"title":"Try it yourself","text":"%md\n\nDelete the *IRIS* table from datastore *IRIS*, then delete the entire datastore.","user":"OMLUSER03","dateUpdated":"2021-02-05T20:49:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Delete the IRIS table from datastore IRIS, then delete the entire datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_1205023547","id":"20210224-211339_440371078","dateCreated":"2021-01-21T01:01:48+0000","dateStarted":"2021-02-05T20:49:39+0000","dateFinished":"2021-02-05T20:49:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%python\n\n# Insert code here\n\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:49:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219268_1574340852","id":"20210224-211339_1568812425","dateCreated":"2021-01-21T01:02:59+0000","dateStarted":"2021-02-05T20:49:39+0000","dateFinished":"2021-02-05T20:49:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%md\n\n# End of Script\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:49:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219268_-1773582156","id":"20210224-211339_259232902","dateCreated":"2021-01-17T04:21:30+0000","dateStarted":"2021-02-05T20:49:40+0000","dateFinished":"2021-02-05T20:49:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"text":"%md\n","user":"OMLUSER03","dateUpdated":"2021-02-05T20:49:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614201219268_-1456293100","id":"20210224-211339_236858105","dateCreated":"2021-01-17T04:39:22+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:71"}],"name":"Lab 4: OML4Py Datastore","id":"39709","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 4_ OML4Py Datastore.json b/machine-learning/labs/oml4py-live-labs/Lab 4_ OML4Py Datastore.json new file mode 100755 index 00000000..7f14d772 --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/Lab 4_ OML4Py Datastore.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities. \n\nIn this lab, you will learn about the **datastore** feature of OML4Py.\n\nDatastores exist in the user’s Oracle Database schema. A datastore, and the objects it contains, persist in the database until explicitly deleted. By using a datastore, you can store Python objects in a named datastore entry. This named datastore can then be used in subsequent Python sessions, and even be made available to other users or programs by granting/revoking read permissions.\n\nPython objects, including OML DataFrame proxy objects, exist for the duration of the current Python session unless you explicitly save them. You can save one or more Python objects, including OML DataFrame proxy objects, to a named datastore and then load those objects in a later Python session. This is also useful when using embedded Python execution.\n\nBy using a **datastore**, you can:\n\n* Save OML4Py and other Python objects in one Python session and load them in another Python session\n* Pass non-scalar arguments to Python functions for use in embedded Python execution from both the Python, and more importantly, the SQL API where only scalar values can be passed to functions\n* List available datastores and explore the contents of a datastore\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:40+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

In this lab, you will learn about the datastore feature of OML4Py.

\n

Datastores exist in the user’s Oracle Database schema. A datastore, and the objects it contains, persist in the database until explicitly deleted. By using a datastore, you can store Python objects in a named datastore entry. This named datastore can then be used in subsequent Python sessions, and even be made available to other users or programs by granting/revoking read permissions.

\n

Python objects, including OML DataFrame proxy objects, exist for the duration of the current Python session unless you explicitly save them. You can save one or more Python objects, including OML DataFrame proxy objects, to a named datastore and then load those objects in a later Python session. This is also useful when using embedded Python execution.

\n

By using a datastore, you can:

\n
    \n
  • Save OML4Py and other Python objects in one Python session and load them in another Python session
  • \n
  • Pass non-scalar arguments to Python functions for use in embedded Python execution from both the Python, and more importantly, the SQL API where only scalar values can be passed to functions
  • \n
  • List available datastores and explore the contents of a datastore
  • \n
\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_2142980834","id":"20210302-002652_625392128","dateCreated":"2021-01-10T19:41:20+0000","dateStarted":"2021-03-02T19:16:41+0000","dateFinished":"2021-03-02T19:16:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Step 1: Import OML4Py and supporting libraries","text":"%md\n\nTo use OML4Py, first import the package *oml*. Import the *Pandas* package to work with oml DataFrames.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

To use OML4Py, first import the package oml. Import the Pandas package to work with oml DataFrames.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1470953987","id":"20210302-002652_1068144548","dateCreated":"2021-01-10T19:49:44+0000","dateStarted":"2021-03-02T19:16:41+0000","dateFinished":"2021-03-02T19:16:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%python\n\nimport pandas as pd\nimport oml\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812360_-1849453039","id":"20210302-002652_1201849809","dateCreated":"2021-01-10T19:54:18+0000","dateStarted":"2021-03-02T19:16:42+0000","dateFinished":"2021-03-02T19:16:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"title":"Step 2: Create Pandas DataFrames and load them into Autonomous Database","text":"%md\n\nIn this section, you will work with three data sets - *IRIS* data set, *Diabetes* data set, and *Boston* data set. \n\nYou will learn how to:\n\n* Get an OML DataFrame proxy object for the IRIS table and display the columns.\n* Create and display the columns for each data set\n* Use the dataframe to explore the datastore functionality\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:42+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this section, you will work with three data sets - IRIS data set, Diabetes data set, and Boston data set.

\n

You will learn how to:

\n
    \n
  • Get an OML DataFrame proxy object for the IRIS table and display the columns.
  • \n
  • Create and display the columns for each data set
  • \n
  • Use the dataframe to explore the datastore functionality
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1679436933","id":"20210302-002652_1288303730","dateCreated":"2021-01-10T19:54:47+0000","dateStarted":"2021-03-02T19:16:42+0000","dateFinished":"2021-03-02T19:16:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%md\n\n.\nSync the *IRIS* table in the OMLUSER schema to an OML DataFrame proxy object.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Sync the IRIS table in the OMLUSER schema to an OML DataFrame proxy object.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_648607739","id":"20210302-002652_1557119313","dateCreated":"2021-01-10T19:58:58+0000","dateStarted":"2021-03-02T19:16:43+0000","dateFinished":"2021-03-02T19:16:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%python\n\nIRIS = oml.sync(view = \"IRIS_VIEW\")\n\nprint(IRIS.columns)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['SEPAL_LENGTH', 'SEPAL_WIDTH', 'PETAL_LENGTH', 'PETAL_WIDTH', 'SPECIES']\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-392882792","id":"20210302-002652_926116571","dateCreated":"2021-01-10T19:59:22+0000","dateStarted":"2021-03-02T19:16:43+0000","dateFinished":"2021-03-02T19:16:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%md\n\n.\nCreate the temporary *diabetes* table.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the temporary diabetes table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1518296321","id":"20210302-002652_1718533537","dateCreated":"2021-01-10T19:59:53+0000","dateStarted":"2021-03-02T19:16:44+0000","dateFinished":"2021-03-02T19:16:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%python\n\nfrom sklearn import datasets\ndiabetes = datasets.load_diabetes()\nx = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)\ny = pd.DataFrame(diabetes.target, columns=['disease_progression'])\n\nDIABETES_TMP = oml.push(pd.concat([x, y], axis=1))\nprint(DIABETES_TMP.columns)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6', 'disease_progression']\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1034019276","id":"20210302-002652_1703395194","dateCreated":"2021-01-10T20:02:17+0000","dateStarted":"2021-03-02T19:16:45+0000","dateFinished":"2021-03-02T19:16:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%md\n\n.\nCreate the temporary *Boston* table.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the temporary Boston table.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1105217811","id":"20210302-002652_1197486034","dateCreated":"2021-01-10T20:02:32+0000","dateStarted":"2021-03-02T19:16:46+0000","dateFinished":"2021-03-02T19:16:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%python\n\nboston = datasets.load_boston()\nx = pd.DataFrame(boston.data, columns = boston.feature_names.tolist())\ny = pd.DataFrame(boston.target, columns = ['Value'])\n\nBOSTON_TMP = oml.push(pd.concat([x, y], axis=1))\nprint(BOSTON_TMP.columns)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'Value']\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1878813174","id":"20210302-002652_1797906519","dateCreated":"2021-01-10T20:03:05+0000","dateStarted":"2021-03-02T19:16:46+0000","dateFinished":"2021-03-02T19:16:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"title":"Step 3: Save Python objects to datastore","text":"%md\n\nSave the *IRIS* data set and the temporary *BOSTON* proxy object to a datastore named *ds_pydata*, overwriting if the named datastore already exists. Note that you can store actual data objects in a datastore, but large data objects should remain as database tables for performance and scalability.\n\nBy storing the *BOSTON_TMP* object, the temporary table will not be deleted when the session terminates.\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Save the IRIS data set and the temporary BOSTON proxy object to a datastore named ds_pydata, overwriting if the named datastore already exists. Note that you can store actual data objects in a datastore, but large data objects should remain as database tables for performance and scalability.

\n

By storing the BOSTON_TMP object, the temporary table will not be deleted when the session terminates.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1866664803","id":"20210302-002652_2025442086","dateCreated":"2021-01-10T20:03:28+0000","dateStarted":"2021-03-02T19:16:47+0000","dateFinished":"2021-03-02T19:16:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%md\n\n.\nSave the *IRIS* and *BOSTON* tables in the OML4Py Autonomous Database datastore.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Save the IRIS and BOSTON tables in the OML4Py Autonomous Database datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_755752078","id":"20210302-002652_538822436","dateCreated":"2021-01-10T20:04:19+0000","dateStarted":"2021-03-02T19:16:48+0000","dateFinished":"2021-03-02T19:16:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%python\n\noml.ds.save(objs={'oml_iris':IRIS, 'oml_boston':BOSTON_TMP},\n name=\"ds_pydata\", description = \"python datasets\",\n overwrite=True)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812360_1551386851","id":"20210302-002652_1724211786","dateCreated":"2021-01-10T21:08:12+0000","dateStarted":"2021-03-02T19:16:48+0000","dateFinished":"2021-03-02T19:16:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"text":"%md\n\n.\nAdd the temporary DIABETES_TMP proxy object to the same datastore. Note the use of *append=True*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Add the temporary DIABETES_TMP proxy object to the same datastore. Note the use of append=True.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1006361816","id":"20210302-002652_1112149405","dateCreated":"2021-01-10T21:08:22+0000","dateStarted":"2021-03-02T19:16:55+0000","dateFinished":"2021-03-02T19:16:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"text":"%python\n\noml.ds.save(objs={'oml_diabetes':DIABETES_TMP}, name=\"ds_pydata\", append=True)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812360_390252528","id":"20210302-002652_1956388361","dateCreated":"2021-01-10T21:10:17+0000","dateStarted":"2021-03-02T19:16:56+0000","dateFinished":"2021-03-02T19:16:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%md\n\n.\nSave the *IRIS* table to a new datastore, and then list the datastores. Notice we see the datastore name, the number of objects in the datastore, the size in bytes consumed, when the datastore was create/updated, and any description provided by the user. Our two datastores *ds_iris_data* and *ds_pydata* are present, with the latter containing the three objects we added\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Save the IRIS table to a new datastore, and then list the datastores. Notice we see the datastore name, the number of objects in the datastore, the size in bytes consumed, when the datastore was create/updated, and any description provided by the user. Our two datastores ds_iris_data and ds_pydata are present, with the latter containing the three objects we added

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1867162771","id":"20210302-002652_980865881","dateCreated":"2021-01-10T21:11:58+0000","dateStarted":"2021-03-02T19:16:58+0000","dateFinished":"2021-03-02T19:16:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%python\n\noml.ds.save(objs={'IRIS':IRIS},\nname=\"IRIS\", description = \"IRIS dataset\", overwrite=True)\n\noml.ds.dir()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:16:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name object_count size date description\n0 IRIS 1 700 2021-03-02 19:17:02 IRIS dataset\n1 ds-1 3 1449 2021-03-02 01:12:51 None\n2 ds_pydata 3 2627 2021-03-02 19:16:48 python datasets\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1997625122","id":"20210302-002652_2003575151","dateCreated":"2021-01-10T21:16:42+0000","dateStarted":"2021-03-02T19:16:59+0000","dateFinished":"2021-03-02T19:17:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"title":"Step 4: Save model objects in a datastore","text":"%md\n\nThis step illustrates how to store other types of objects in datastores. For this, you will create regression models using sklearn and OML4Py.\n\nThe following script builds two regression models - *regr1* and *regr2*. One model (regr1) uses the open source function LinearRegression() and regr2 uses the OML function ***oml.glm***.\n\nNote, this highlights that both open source models and in-database model proxy objects can be stored in a datastore. Like tables created using the ***oml.push*** function, default-named model proxy objects are dropped at the end of the database connection unless they are saved in a datastore.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step illustrates how to store other types of objects in datastores. For this, you will create regression models using sklearn and OML4Py.

\n

The following script builds two regression models - regr1 and regr2. One model (regr1) uses the open source function LinearRegression() and regr2 uses the OML function oml.glm.

\n

Note, this highlights that both open source models and in-database model proxy objects can be stored in a datastore. Like tables created using the oml.push function, default-named model proxy objects are dropped at the end of the database connection unless they are saved in a datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1548115155","id":"20210302-002652_1700326650","dateCreated":"2021-01-10T21:18:16+0000","dateStarted":"2021-03-02T19:17:02+0000","dateFinished":"2021-03-02T19:17:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%python\n\nfrom sklearn import linear_model\n\nregr1 = linear_model.LinearRegression()\nregr1.fit(boston.data, boston.target)\n\nregr2 = oml.glm(\"regression\")\nX = BOSTON_TMP.drop('Value')\ny = BOSTON_TMP['Value']\nregr2 = regr2.fit(X, y)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812360_432464009","id":"20210302-002652_1906366990","dateCreated":"2021-01-10T21:19:50+0000","dateStarted":"2021-03-02T19:17:03+0000","dateFinished":"2021-03-02T19:17:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"text":"%md\n\n.\nSave the objects *regr1* and *regr2* to the datastore named \"ds_pymodels\" and allow the read privilege to be granted to them.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Save the objects regr1 and regr2 to the datastore named “ds_pymodels” and allow the read privilege to be granted to them.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-570605193","id":"20210302-002652_2101359480","dateCreated":"2021-01-10T21:20:32+0000","dateStarted":"2021-03-02T19:17:11+0000","dateFinished":"2021-03-02T19:17:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"text":"%python\n\noml.ds.save(objs={'regr1':regr1, 'regr2':regr2},\n name=\"ds_pymodels\", grantable=True, \n overwrite=True)\n\noml.ds.dir()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name object_count size date description\n0 IRIS 1 700 2021-03-02 19:17:02 IRIS dataset\n1 ds-1 3 1449 2021-03-02 01:12:51 None\n2 ds_pydata 3 2627 2021-03-02 19:16:48 python datasets\n3 ds_pymodels 2 4069 2021-03-02 19:17:12 None\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_232401518","id":"20210302-002652_1798378214","dateCreated":"2021-01-10T21:21:04+0000","dateStarted":"2021-03-02T19:17:12+0000","dateFinished":"2021-03-02T19:17:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%md\n.\nGrant the read privilege to all users by specifying *user=None*. Finally, list the datastores to which the read privilege has been granted.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Grant the read privilege to all users by specifying user=None. Finally, list the datastores to which the read privilege has been granted.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-556928957","id":"20210302-002652_1236012102","dateCreated":"2021-01-10T21:21:16+0000","dateStarted":"2021-03-02T19:17:13+0000","dateFinished":"2021-03-02T19:17:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%python\n\noml.grant(name=\"ds_pymodels\", typ=\"datastore\", user=None)\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name grantee\n0 ds_pymodels PUBLIC\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1313717288","id":"20210302-002652_1043062743","dateCreated":"2021-01-10T21:21:54+0000","dateStarted":"2021-03-02T19:17:13+0000","dateFinished":"2021-03-02T19:17:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"title":"Step 5: Load datastore objects into memory","text":"%md\n\nLoad all Python objects from a datastore to the global workspace and sort the result by name. Notice that they have the name specified in the dictionary when saved.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Load all Python objects from a datastore to the global workspace and sort the result by name. Notice that they have the name specified in the dictionary when saved.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_448633542","id":"20210302-002652_1108140185","dateCreated":"2021-01-10T21:22:09+0000","dateStarted":"2021-03-02T19:17:19+0000","dateFinished":"2021-03-02T19:17:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"text":"%md\n.\nLoad the objects associated with the datastore named *ds_pydata* into memory\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Load the objects associated with the datastore named ds_pydata into memory

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1667893135","id":"20210302-002652_566848540","dateCreated":"2021-01-10T21:22:50+0000","dateStarted":"2021-03-02T19:17:20+0000","dateFinished":"2021-03-02T19:17:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"text":"%python\n\nsorted(oml.ds.load(name=\"ds_pydata\"))\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['oml_boston', 'oml_diabetes', 'oml_iris']\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-909449798","id":"20210302-002652_137271903","dateCreated":"2021-01-10T21:23:24+0000","dateStarted":"2021-03-02T19:17:20+0000","dateFinished":"2021-03-02T19:17:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"text":"%md\n\n.\nLoad the Python object named *regr2* from the datastore *ds_pymodels* to theglobal workspace. Display the model details for model *regr2*. With the boolean *to_globals* parameter, you can specify whether the objects are loaded to a global workspace or to a dictionary object. If the argument *to_globals* is *True*, then ***oml.ds.load*** function loads the objects into the global workspace. If the argument is *False*, then the function returns a dict object that contains pairs of object names and values.\n\nNote, *True* is the default value for *to_globals*, so it it not necessary to specify this argument explicitly. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Load the Python object named regr2 from the datastore ds_pymodels to theglobal workspace. Display the model details for model regr2. With the boolean to_globals parameter, you can specify whether the objects are loaded to a global workspace or to a dictionary object. If the argument to_globals is True, then oml.ds.load function loads the objects into the global workspace. If the argument is False, then the function returns a dict object that contains pairs of object names and values.

\n

Note, True is the default value for to_globals, so it it not necessary to specify this argument explicitly.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_818695247","id":"20210302-002652_1746610666","dateCreated":"2021-01-10T21:23:40+0000","dateStarted":"2021-03-02T19:17:26+0000","dateFinished":"2021-03-02T19:17:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%python\n\noml.ds.load(name=\"ds_pymodels\", objs=[\"regr2\"], to_globals=True)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['regr2']\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-2089291841","id":"20210302-002652_1295389784","dateCreated":"2021-01-10T21:24:22+0000","dateStarted":"2021-03-02T19:17:27+0000","dateFinished":"2021-03-02T19:17:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"text":"%python\n\nregr2","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nAlgorithm Name: Generalized Linear Model\n\nMining Function: REGRESSION\n\nTarget: Value\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_GENERALIZED_LINEAR_MODEL\n1 GLMS_CONF_LEVEL .95\n2 GLMS_FTR_GENERATION GLMS_FTR_GENERATION_DISABLE\n3 GLMS_FTR_SELECTION GLMS_FTR_SELECTION_DISABLE\n4 ODMS_DETAILS ODMS_ENABLE\n5 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n6 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n7 PREP_AUTO ON\n\nComputed Settings: \n setting name setting value\n0 GLMS_CONV_TOLERANCE .0000050000000000000004\n1 GLMS_NUM_ITERATIONS 30\n2 GLMS_RIDGE_REGRESSION GLMS_RIDGE_REG_DISABLE\n3 GLMS_SOLVER GLMS_SOLVER_CHOL\n\nGlobal Statistics: \n attribute name attribute value\n0 ADJUSTED_R_SQUARE 0.73379\n1 AIC 1589.64\n2 COEFF_VAR 21.0595\n3 CONVERGED YES\n4 CORRECTED_TOTAL_DF 505\n5 CORRECTED_TOT_SS 42716.3\n6 DEPENDENT_MEAN 22.5328\n7 ERROR_DF 492\n8 ERROR_MEAN_SQUARE 22.5179\n9 ERROR_SUM_SQUARES 11078.8\n10 F_VALUE 108.077\n11 GMSEP 23.1597\n12 HOCKING_SP 0.045861\n13 J_P 23.1409\n14 MODEL_DF 13\n15 MODEL_F_P_VALUE 0\n16 MODEL_MEAN_SQUARE 2433.65\n17 MODEL_SUM_SQUARES 31637.5\n18 NUM_PARAMS 14\n19 NUM_ROWS 506\n20 RANK_DEFICIENCY 0\n21 ROOT_MEAN_SQ 4.7453\n22 R_SQ 0.740643\n23 SBIC 1648.81\n24 VALID_COVARIANCE_MATRIX YES\n\nAttributes: \nAGE\nB\nCHAS\nCRIM\nDIS\nINDUS\nLSTAT\nNOX\nPTRATIO\nRAD\nRM\nTAX\nZN\n\nPartition: NO\n\nCoefficients: \n\n name level estimate\n0 (Intercept) None 36.459488\n1 AGE None 0.000692\n2 B None 0.009312\n3 CHAS None 2.686734\n4 CRIM None -0.108011\n5 DIS None -1.475567\n6 INDUS None 0.020559\n7 LSTAT None -0.524758\n8 NOX None -17.766611\n9 PTRATIO None -0.952747\n10 RAD None 0.306049\n11 RM None 3.809865\n12 TAX None -0.012335\n13 ZN None 0.046420\n\nFit Details: \n\n name value\n0 ADJUSTED_R_SQUARE 0.733790\n1 AIC 1589.642798\n2 COEFF_VAR 21.059508\n3 CORRECTED_TOTAL_DF 505.000000\n4 CORRECTED_TOT_SS 42716.295415\n5 DEPENDENT_MEAN 22.532806\n6 ERROR_DF 492.000000\n7 ERROR_MEAN_SQUARE 22.517855\n8 ERROR_SUM_SQUARES 11078.784578\n9 F_VALUE 108.076666\n10 GMSEP 23.159731\n11 HOCKING_SP 0.045861\n12 J_P 23.140878\n13 MODEL_CONVERGED 1.000000\n14 MODEL_DF 13.000000\n15 MODEL_F_P_VALUE 0.000000\n16 MODEL_MEAN_SQUARE 2433.654680\n17 MODEL_SUM_SQUARES 31637.510837\n18 NUM_PARAMS 14.000000\n19 NUM_ROWS 506.000000\n20 RANK_DEFICIENCY 0.000000\n21 ROOT_MEAN_SQ 4.745298\n22 R_SQ 0.740643\n23 SBIC 1648.814312\n24 VALID_COVARIANCE_MATRIX 1.000000\n\nRank: \n\n14\n\nDeviance: \n\n11078.784578\n\nAIC: \n\n1590\n\nNull Deviance: \n\n42716.295415\n\nDF Residual: \n\n492.0\n\nDF Null: \n\n505.0\n\nConverged: \n\nTrue\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1897570242","id":"20210302-002652_670378094","dateCreated":"2021-01-16T19:05:32+0000","dateStarted":"2021-03-02T19:17:32+0000","dateFinished":"2021-03-02T19:17:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%md\n\n.\nRun the following command to load the named Python object (regression model) *regr1*, from the datastore to the user's workspace.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Run the following command to load the named Python object (regression model) regr1, from the datastore to the user's workspace.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_940685384","id":"20210302-002652_1534436013","dateCreated":"2021-01-10T21:24:46+0000","dateStarted":"2021-03-02T19:17:33+0000","dateFinished":"2021-03-02T19:17:33+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%python\n\noml.ds.load(name=\"ds_pymodels\", objs=[\"regr1\"], to_globals=False)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:33+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"{'regr1': LinearRegression()}\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-129493848","id":"20210302-002652_1779471440","dateCreated":"2021-01-10T21:25:29+0000","dateStarted":"2021-03-02T19:17:34+0000","dateFinished":"2021-03-02T19:17:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"title":"Step 6: View datastores and other details","text":"%md\n\nList the datastores to which other users have been granted the read privilege. Notice that this is shared with PUBLIC, so other users have access to this datastore as well.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

List the datastores to which other users have been granted the read privilege. Notice that this is shared with PUBLIC, so other users have access to this datastore as well.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_932886228","id":"20210302-002652_402246046","dateCreated":"2021-01-10T21:26:16+0000","dateStarted":"2021-03-02T19:17:38+0000","dateFinished":"2021-03-02T19:17:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:71"},{"text":"%python\n\noml.ds.dir(dstype=\"all\")[['owner', 'datastore_name', 'object_count']]\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" owner datastore_name object_count\n0 OMLUSER02 IRIS 1\n1 OMLUSER02 ds-1 3\n2 OMLUSER02 ds_pydata 3\n3 OMLUSER02 ds_pymodels 2\n4 OMLUSER15 ds_pymodels 2\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-636130828","id":"20210302-002652_423703895","dateCreated":"2021-01-10T21:42:48+0000","dateStarted":"2021-03-02T19:17:38+0000","dateFinished":"2021-03-02T19:17:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:72"},{"text":"%md\n\n.\nList the datastores to which other users have been granted the read privilege.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the datastores to which other users have been granted the read privilege.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1883907503","id":"20210302-002652_1868008472","dateCreated":"2021-01-10T21:43:05+0000","dateStarted":"2021-03-02T19:17:41+0000","dateFinished":"2021-03-02T19:17:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:73"},{"text":"%python\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name grantee\n0 ds_pymodels PUBLIC\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1644567153","id":"20210302-002652_25900982","dateCreated":"2021-01-10T21:43:33+0000","dateStarted":"2021-03-02T19:17:41+0000","dateFinished":"2021-03-02T19:17:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:74"},{"title":"Step 7: View contents of a datastore","text":"%md\n\nThis step shows how to view and describe the content of a datastore. This example highlights the *ds_pydata* datastore.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to view and describe the content of a datastore. This example highlights the ds_pydata datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-184201028","id":"20210302-002652_1483189024","dateCreated":"2021-01-10T21:43:47+0000","dateStarted":"2021-03-02T19:17:44+0000","dateFinished":"2021-03-02T19:17:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:75"},{"text":"%md\n\n.\nList the content of datastore *ds_pydata*. The script returns the description of three proxy objects - *iris*, *oml_boston*, and *oml_diabetes*. It lists the class, \nsize, length, row and column count for each object. Notice that the two proxy objects and one Pandas DataFrame are listed.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the content of datastore ds_pydata. The script returns the description of three proxy objects - iris, oml_boston, and oml_diabetes. It lists the class,\n
size, length, row and column count for each object. Notice that the two proxy objects and one Pandas DataFrame are listed.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-990709114","id":"20210302-002652_1209849590","dateCreated":"2021-01-10T21:46:30+0000","dateStarted":"2021-03-02T19:17:45+0000","dateFinished":"2021-03-02T19:17:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:76"},{"text":"%python\n\noml.ds.describe(name='ds_pydata')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" object_name class size length row_count col_count\n0 oml_boston oml.DataFrame 1019 506 506 14\n1 oml_diabetes oml.DataFrame 909 442 442 11\n2 oml_iris oml.DataFrame 699 150 150 5\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-373668768","id":"20210302-002652_460891297","dateCreated":"2021-01-10T21:47:49+0000","dateStarted":"2021-03-02T19:17:45+0000","dateFinished":"2021-03-02T19:17:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:77"},{"title":"Step 8: Manage datastore privileges","text":"%md\n\nThis section shows how to revoke read privilege, show datastores to which read privilege has been granted, and again grant read privilege to a user.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This section shows how to revoke read privilege, show datastores to which read privilege has been granted, and again grant read privilege to a user.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_199041878","id":"20210302-002652_1133909759","dateCreated":"2021-01-10T21:48:14+0000","dateStarted":"2021-03-02T19:17:48+0000","dateFinished":"2021-03-02T19:17:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:78"},{"text":"%md\n\n.\nRevoke the read privilege from every user by specifying *user=None* on the datastore *ds_pymodels*. The result is empty. Notice that the type is *datastore*. In the next lab we'll see that this same function can be used for scripts in the script repository. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Revoke the read privilege from every user by specifying user=None on the datastore ds_pymodels. The result is empty. Notice that the type is datastore. In the next lab we'll see that this same function can be used for scripts in the script repository.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1343062964","id":"20210302-002652_642620166","dateCreated":"2021-01-10T21:55:44+0000","dateStarted":"2021-03-02T19:17:48+0000","dateFinished":"2021-03-02T19:17:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:79"},{"text":"%python\n\noml.revoke(name=\"ds_pymodels\", typ=\"datastore\", user=None)\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Empty DataFrame\nColumns: [datastore_name, grantee]\nIndex: []\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1078173114","id":"20210302-002652_138957407","dateCreated":"2021-01-10T21:56:44+0000","dateStarted":"2021-03-02T19:17:49+0000","dateFinished":"2021-03-02T19:17:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:80"},{"text":"%md\n\n.\nGrant the read privilege to *OMLUSER*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Grant the read privilege to OMLUSER.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1403620594","id":"20210302-002652_1456190043","dateCreated":"2021-01-10T21:57:00+0000","dateStarted":"2021-03-02T19:17:50+0000","dateFinished":"2021-03-02T19:17:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:81"},{"text":"%python\n\noml.grant(name=\"ds_pymodels\", typ=\"datastore\", user=\"OMLUSER\")\n\noml.ds.dir(dstype=\"grant\")\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name grantee\n0 ds_pymodels OMLUSER\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1642175100","id":"20210302-002652_630814611","dateCreated":"2021-01-10T21:58:23+0000","dateStarted":"2021-03-02T19:17:50+0000","dateFinished":"2021-03-02T19:17:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:82"},{"title":"Step 9: Delete datastore contents","text":"%md\n\nThis step shows how to use the ***oml.ds.delete function*** to delete datastores or datastore contents.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to use the oml.ds.delete function to delete datastores or datastore contents.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-1811829762","id":"20210302-002652_1866878349","dateCreated":"2021-01-10T21:58:40+0000","dateStarted":"2021-03-02T19:17:51+0000","dateFinished":"2021-03-02T19:17:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:83"},{"text":"%md\n\n.\nFirst, delete the contents of datastore *ds_pydata*, then delete the datastore itself. Next, use regular expression pattern matching to delete the datastore *ds_pymodels*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
First, delete the contents of datastore ds_pydata, then delete the datastore itself. Next, use regular expression pattern matching to delete the datastore ds_pymodels.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-539729735","id":"20210302-002652_626405520","dateCreated":"2021-01-10T22:04:02+0000","dateStarted":"2021-03-02T19:17:51+0000","dateFinished":"2021-03-02T19:17:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:84"},{"text":"%python\n\noml.ds.delete(name=\"ds_pydata\", objs=[\"IRIS\", \"oml_boston\"])\n\noml.ds.delete(name=\"ds_pydata\")\n\noml.ds.delete(name=\"_pymodels\", regex_match=True)\n\noml.ds.dir()\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:17:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" datastore_name object_count size date description\n0 IRIS 1 700 2021-03-02 19:17:02 IRIS dataset\n1 ds-1 3 1449 2021-03-02 01:12:51 None\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_1167964408","id":"20210302-002652_772019979","dateCreated":"2021-01-10T22:04:31+0000","dateStarted":"2021-03-02T19:17:52+0000","dateFinished":"2021-03-02T19:18:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:85"},{"title":"Try it yourself","text":"%md\n\nDelete the *IRIS* table from datastore *IRIS*, then delete the entire datastore.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:18:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Delete the IRIS table from datastore IRIS, then delete the entire datastore.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-531069746","id":"20210302-002652_1087359159","dateCreated":"2021-01-21T01:01:48+0000","dateStarted":"2021-03-02T19:18:01+0000","dateFinished":"2021-03-02T19:18:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:86"},{"text":"%python\n\n# Insert code here\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:18:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812360_1825073012","id":"20210302-002652_498650886","dateCreated":"2021-01-21T01:02:59+0000","dateStarted":"2021-03-02T19:18:01+0000","dateFinished":"2021-03-02T19:18:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:87"},{"text":"%md\n\n# End of Script\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:18:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812360_-2043112205","id":"20210302-002652_159297169","dateCreated":"2021-01-17T04:21:30+0000","dateStarted":"2021-03-02T19:18:02+0000","dateFinished":"2021-03-02T19:18:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:88"},{"text":"%md\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:18:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812360_426084788","id":"20210302-002652_122445050","dateCreated":"2021-01-17T04:39:22+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:89"}],"name":"Lab 4: OML4Py Datastore","id":"40634","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 5 OML4Py Embedded Python Execution.json b/machine-learning/labs/oml4py-live-labs/Lab 5 OML4Py Embedded Python Execution.json deleted file mode 100644 index b04f072b..00000000 --- a/machine-learning/labs/oml4py-live-labs/Lab 5 OML4Py Embedded Python Execution.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python - Embedded Python Execution\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nIn this notebook, we highlight using OML4Py embedded Python execution and the Python script repository. \n\nOML4Py stores named user-defined functions called scripts in the script repository. With the script repository, users can:\n\n* Create and store user-defined Python functions as scripts in Oracle Database\n* Grant or revoke the read/run privilege to a script\n* List available scripts\n* Load a script function into the Python environment\n* Drop a script from the script repository\n\nThe OML4Py script repository functions are:\n\n* ***oml.script.create*** - Creates a script, which contains a single Python function definition, in the script repository.\n* ***oml.script.dir*** - Lists the scripts present in the script repository.\n* ***oml.script.drop*** - Drops a script from the script repository.\n* ***oml.script.load*** - Loads a script from the script repository into a Python session.\n* ***oml.grant*** - Grants read privilege permission to another user to a datastore or script owned by the current user.\n* ***oml.revoke*** - Revokes the read privilege permission that was granted to another user to a datastore or script owned by the current user.\n\n\nEmbedded Python execution enables you to run user-defined Python functions in Python engines spawned in the Autonomous Database environment. These engines run alongside an OML Notebooks Python interpreter session. On Autonomous Database, OML4Py provides both a Python interface and a REST API interface for embedded Python execution. Use the OML4Py embedded Python execution REST API to query and invoke user-defined Python functions saved in the datastore. The result of the REST execution is a JSON representation of the value returned from the Python script. \n\nThe OML4Py embedded Python execution functions are:\n\n* ***oml.do_eval*** - Calls a Python function in Python engines spawned by the Autonomous Database environment.\n* ***oml.group_apply*** - Partitions a database table by the values in one or more columns and runs the provided user-defined Python function on each partition.\n* ***oml.index_apply*** - Calls a Python function multiple times, passing in a unique index of the invocation to the user-defined function.\n* ***oml.row_apply*** - Partitions a database table into sets of rows and runs the provided user-defined Python function on the data in each set.\n* ***oml.table_apply*** - calls a Python function on data in the database as a single pandas.DataFrame in a single Python engine.\n\nDownload the REST API notebook from Github to view examples here:\n\n###### [OML4Py REST API](https://github.com/oracle/oracle-db-examples/blob/master/machine-learning/notebooks/python)\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)\n---","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:40+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python - Embedded Python Execution

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

In this notebook, we highlight using OML4Py embedded Python execution and the Python script repository.

\n

OML4Py stores named user-defined functions called scripts in the script repository. With the script repository, users can:

\n
    \n
  • Create and store user-defined Python functions as scripts in Oracle Database
  • \n
  • Grant or revoke the read/run privilege to a script
  • \n
  • List available scripts
  • \n
  • Load a script function into the Python environment
  • \n
  • Drop a script from the script repository
  • \n
\n

The OML4Py script repository functions are:

\n
    \n
  • oml.script.create - Creates a script, which contains a single Python function definition, in the script repository.
  • \n
  • oml.script.dir - Lists the scripts present in the script repository.
  • \n
  • oml.script.drop - Drops a script from the script repository.
  • \n
  • oml.script.load - Loads a script from the script repository into a Python session.
  • \n
  • oml.grant - Grants read privilege permission to another user to a datastore or script owned by the current user.
  • \n
  • oml.revoke - Revokes the read privilege permission that was granted to another user to a datastore or script owned by the current user.
  • \n
\n

Embedded Python execution enables you to run user-defined Python functions in Python engines spawned in the Autonomous Database environment. These engines run alongside an OML Notebooks Python interpreter session. On Autonomous Database, OML4Py provides both a Python interface and a REST API interface for embedded Python execution. Use the OML4Py embedded Python execution REST API to query and invoke user-defined Python functions saved in the datastore. The result of the REST execution is a JSON representation of the value returned from the Python script.

\n

The OML4Py embedded Python execution functions are:

\n
    \n
  • oml.do_eval - Calls a Python function in Python engines spawned by the Autonomous Database environment.
  • \n
  • oml.group_apply - Partitions a database table by the values in one or more columns and runs the provided user-defined Python function on each partition.
  • \n
  • oml.index_apply - Calls a Python function multiple times, passing in a unique index of the invocation to the user-defined function.
  • \n
  • oml.row_apply - Partitions a database table into sets of rows and runs the provided user-defined Python function on the data in each set.
  • \n
  • oml.table_apply - calls a Python function on data in the database as a single pandas.DataFrame in a single Python engine.
  • \n
\n

Download the REST API notebook from Github to view examples here:

\n
OML4Py REST API
\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614201220119_-1281971559","id":"20210224-211340_1744000880","dateCreated":"2021-01-11T17:41:53+0000","dateStarted":"2021-02-24T21:52:40+0000","dateFinished":"2021-02-24T21:52:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:22"},{"title":"Step 1: Import the OML4Py library","text":"%md\n\nImport the **oml** library.","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Import the oml library.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220119_1789229012","id":"20210224-211340_1175270679","dateCreated":"2021-01-11T17:53:16+0000","dateStarted":"2021-02-24T21:52:41+0000","dateFinished":"2021-02-24T21:52:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:23"},{"text":"%python\n\nimport oml\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_-575338175","id":"20210224-211340_1595400719","dateCreated":"2021-01-11T19:05:58+0000","dateStarted":"2021-02-24T21:52:42+0000","dateFinished":"2021-02-24T21:52:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:24"},{"text":"%md\n.\nCreate the *iris* data.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the iris data.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1639053385","id":"20210224-211340_88956399","dateCreated":"2021-01-11T19:08:57+0000","dateStarted":"2021-02-24T21:52:51+0000","dateFinished":"2021-02-24T21:52:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:25"},{"text":"%python\n\nfrom sklearn import datasets\nfrom sklearn import linear_model\nimport pandas as pd\n\niris = datasets.load_iris()\nx = pd.DataFrame(iris.data, columns = ['SEPAL_LENGTH','SEPAL_WIDTH','PETAL_LENGTH','PETAL_WIDTH'])\ny = pd.DataFrame(list(map(lambda x: {0: 'setosa', 1: 'versicolor',2:'virginica'}[x], iris.target)), columns = ['SPECIES'])\n\ntry:\n oml.drop(table='IRIS')\nexcept:\n pass\n\nIRIS = oml.create(pd.concat([x, y], axis=1), table = 'IRIS')\niris_df = pd.concat([x, y], axis=1)\nprint(IRIS.columns)\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['SEPAL_LENGTH', 'SEPAL_WIDTH', 'PETAL_LENGTH', 'PETAL_WIDTH', 'SPECIES']\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-506625375","id":"20210224-211340_2029572833","dateCreated":"2021-01-11T19:10:05+0000","dateStarted":"2021-02-24T21:52:52+0000","dateFinished":"2021-02-24T21:52:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:26"},{"title":"Step 2: Build and score a linear model ","text":"%md\n\nWhen working with embedded Python execution, a typical workflow is:\n\n* Create a a user-defined Python script \n* Validate the function in Python\n* Adapt the function to use datastore as needed\n* Store the function in the script repository\n* Run the function using the Python API for embedded Python execution.\n* Run the function using the REST API for embedded Python execution prior to providing it to application developers\n\nIn this section, you will validate your Python script, validate the user-defined function before invoking the embedded Python APIs. You will also build a linear regression model *LinearRegression*.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

When working with embedded Python execution, a typical workflow is:

\n
    \n
  • Create a a user-defined Python script
  • \n
  • Validate the function in Python
  • \n
  • Adapt the function to use datastore as needed
  • \n
  • Store the function in the script repository
  • \n
  • Run the function using the Python API for embedded Python execution.
  • \n
  • Run the function using the REST API for embedded Python execution prior to providing it to application developers
  • \n
\n

In this section, you will validate your Python script, validate the user-defined function before invoking the embedded Python APIs. You will also build a linear regression model LinearRegression.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1558926798","id":"20210224-211340_1467151716","dateCreated":"2021-01-11T19:10:25+0000","dateStarted":"2021-02-24T21:52:53+0000","dateFinished":"2021-02-24T21:52:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:27"},{"text":"%md\n.\nRun the following script to create a linear model with sklearn.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Run the following script to create a linear model with sklearn.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-230799562","id":"20210224-211340_932536863","dateCreated":"2021-01-11T19:11:07+0000","dateStarted":"2021-02-24T21:52:53+0000","dateFinished":"2021-02-24T21:52:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:28"},{"text":"%python\n\nfrom sklearn import linear_model\n\nlm = linear_model.LinearRegression()\nX = iris_df[[\"PETAL_WIDTH\"]]\ny = iris_df[[\"PETAL_LENGTH\"]]\nmod = lm.fit(X, y)\nprint(\"Model:\",mod)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Model: LinearRegression()\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-2065029665","id":"20210224-211340_1490613031","dateCreated":"2021-01-11T19:12:36+0000","dateStarted":"2021-02-24T21:52:54+0000","dateFinished":"2021-02-24T21:52:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:29"},{"text":"%md\n.\nPredict the petal width using the ***predict*** function.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Predict the petal width using the predict function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1288392610","id":"20210224-211340_1711885575","dateCreated":"2021-01-11T19:13:09+0000","dateStarted":"2021-02-24T21:52:55+0000","dateFinished":"2021-02-24T21:52:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:30"},{"text":"%python\n\npred = mod.predict(iris_df[[\"PETAL_WIDTH\"]])\npred[0:10]\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"array([[1.52954613],\n [1.52954613],\n [1.52954613],\n [1.52954613],\n [1.52954613],\n [1.97553423],\n [1.75254018],\n [1.52954613],\n [1.52954613],\n [1.30655208]])\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1559123483","id":"20210224-211340_638606711","dateCreated":"2021-01-11T19:20:47+0000","dateStarted":"2021-02-24T21:52:56+0000","dateFinished":"2021-02-24T21:52:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:31"},{"text":"%md\n.\nAssess model quality using mean squared error and R^2.","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Assess model quality using mean squared error and R^2.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-431403760","id":"20210224-211340_982074928","dateCreated":"2021-01-11T19:21:06+0000","dateStarted":"2021-02-24T21:52:56+0000","dateFinished":"2021-02-24T21:52:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:32"},{"text":"%python\n\nfrom sklearn.metrics import mean_squared_error, r2_score\n\nprint('Coefficients: \\n', mod.coef_)\nprint(\"Mean squared error: %.2f\"\n% mean_squared_error(iris_df[[\"PETAL_LENGTH\"]], pred))\n\nprint('Variance score (1 is perfect prediction): %.2f' % r2_score(iris_df[[\"PETAL_LENGTH\"]], pred))\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Coefficients: \n [[2.2299405]]\nMean squared error: 0.23\nVariance score (1 is perfect prediction): 0.93\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_495186803","id":"20210224-211340_626510733","dateCreated":"2021-01-11T19:21:46+0000","dateStarted":"2021-02-24T21:52:57+0000","dateFinished":"2021-02-24T21:52:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:33"},{"text":"%md\n.\nGenerate a scatterplot of the data along with a plot of the regression line.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Generate a scatterplot of the data along with a plot of the regression line.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-440543745","id":"20210224-211340_161139541","dateCreated":"2021-01-11T19:22:18+0000","dateStarted":"2021-02-24T21:52:58+0000","dateFinished":"2021-02-24T21:52:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:34"},{"text":"%python\n\nimport matplotlib.pyplot as plt\n\nplt.scatter(iris_df.loc[:,\"PETAL_WIDTH\"], iris_df.loc[:,\"PETAL_LENGTH\"])\nplt.plot(iris_df[[\"PETAL_WIDTH\"]], pred, color='blue', linewidth=3)\nplt.grid(True)\nplt.title('Prediction of Petal Length')\nplt.xlabel('Petal Width')\nplt.ylabel('Petal Length')\n\nplt.show()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1584177285","id":"20210224-211340_767939828","dateCreated":"2021-01-11T19:22:41+0000","dateStarted":"2021-02-24T21:52:58+0000","dateFinished":"2021-02-24T21:52:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:35"},{"title":"Step 3: Build the model using Embedded Python Execution","text":"%md\n\nIn this step, you will build the same linear model, but using the embedded Python execution Python engines under control of the Autonomous Database environment. You will perform the following tasks:\n\n* Define the function *build_lm_1*, that returns the model as the result. This is referred to as a user-defined function\n* Score the training data and plot the model against the data points\n\nNote, in the Python API, the embedded Python execution functions accept a function object or named string as input, and can return images as well as structured content.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:52:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this step, you will build the same linear model, but using the embedded Python execution Python engines under control of the Autonomous Database environment. You will perform the following tasks:

\n
    \n
  • Define the function build_lm_1, that returns the model as the result. This is referred to as a user-defined function
  • \n
  • Score the training data and plot the model against the data points
  • \n
\n

Note, in the Python API, the embedded Python execution functions accept a function object or named string as input, and can return images as well as structured content.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1979551073","id":"20210224-211340_1561182138","dateCreated":"2021-01-11T19:22:58+0000","dateStarted":"2021-02-24T21:53:00+0000","dateFinished":"2021-02-24T21:53:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:36"},{"text":"%md\n.\nDefine the user-defined function *build_lm_1*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the user-defined function build_lm_1.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1499589034","id":"20210224-211340_1176308789","dateCreated":"2021-01-11T19:24:55+0000","dateStarted":"2021-02-24T21:53:01+0000","dateFinished":"2021-02-24T21:53:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:37"},{"text":"%python\n\ndef build_lm_1(dat):\n import oml\n from sklearn import linear_model\n import matplotlib.pyplot as plt\n\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n mod = lm.fit(X, y)\n\n pred = mod.predict(dat[[\"PETAL_WIDTH\"]])\n plt.scatter(dat.loc[:,\"PETAL_WIDTH\"], dat.loc[:,\"PETAL_LENGTH\"])\n plt.plot(dat[[\"PETAL_WIDTH\"]], pred, color='blue', linewidth=3)\n plt.grid(True)\n plt.title('Prediction of Petal Length')\n\n plt.xlabel('Petal Width')\n plt.ylabel('Petal Length')\n plt.show()\n return mod\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_1834353254","id":"20210224-211340_419608512","dateCreated":"2021-01-11T19:27:55+0000","dateStarted":"2021-02-24T21:53:01+0000","dateFinished":"2021-02-24T21:53:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:38"},{"text":"%md\n.\nInvoke your user-defined function to build the model and plot the petal length predictions.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Invoke your user-defined function to build the model and plot the petal length predictions.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-279403199","id":"20210224-211340_451125856","dateCreated":"2021-01-11T19:28:20+0000","dateStarted":"2021-02-24T21:53:02+0000","dateFinished":"2021-02-24T21:53:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:39"},{"text":"%python\n\nbuild_lm_1(iris_df)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\nLinearRegression()\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_2072438510","id":"20210224-211340_715337449","dateCreated":"2021-01-11T19:30:12+0000","dateStarted":"2021-02-24T21:53:03+0000","dateFinished":"2021-02-24T21:53:04+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:40"},{"title":"Use the table_apply function","text":"%md\n\n***oml.table_apply*** takes the OML DataFrame proxy object *IRIS* as input data and loads that data to the user-defined function as a pandas DataFrame. In this example, the user-defined function is passed as a Python string. You see that the model comes back as an OML object, which you can pull to the client to view the the linear model.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:04+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

oml.table_apply takes the OML DataFrame proxy object IRIS as input data and loads that data to the user-defined function as a pandas DataFrame. In this example, the user-defined function is passed as a Python string. You see that the model comes back as an OML object, which you can pull to the client to view the the linear model.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1605768357","id":"20210224-211340_82965292","dateCreated":"2021-01-11T19:31:10+0000","dateStarted":"2021-02-24T21:53:04+0000","dateFinished":"2021-02-24T21:53:04+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%python\n\nimport inspect\n\nbuild_lm_1 = \"\"\"def build_lm_1(dat):\n import oml\n from sklearn import linear_model\n import matplotlib.pyplot as plt\n\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n mod = lm.fit(X, y)\n\n pred = mod.predict(dat[[\"PETAL_WIDTH\"]])\n plt.scatter(dat.loc[:,\"PETAL_WIDTH\"], dat.loc[:,\"PETAL_LENGTH\"])\n plt.plot(dat[[\"PETAL_WIDTH\"]], pred, color='blue', linewidth=3)\n plt.grid(True)\n plt.title('Prediction of Petal Length')\n\n plt.xlabel('Petal Width')\n plt.ylabel('Petal Length')\n plt.show()\n return mod\"\"\"","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:05+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_-2074547962","id":"20210224-211340_138541253","dateCreated":"2021-01-11T19:40:26+0000","dateStarted":"2021-02-24T21:53:05+0000","dateFinished":"2021-02-24T21:53:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"text":"%md\n.\nBy invoking **table_apply**, a Python engine is spawned and the user-defined function *build_lm_1* is invoked on that engine with the data referenced by *IRIS* being passed in as a pandas DataFrame. Part of the return value is the image, which is automatically displayed. In this example, we are passing the function object to the ***table_apply*** function.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:05+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
By invoking table_apply, a Python engine is spawned and the user-defined function build_lm_1 is invoked on that engine with the data referenced by IRIS being passed in as a pandas DataFrame. Part of the return value is the image, which is automatically displayed. In this example, we are passing the function object to the table_apply function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_681349860","id":"20210224-211340_255240975","dateCreated":"2021-01-11T19:42:38+0000","dateStarted":"2021-02-24T21:53:06+0000","dateFinished":"2021-02-24T21:53:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%python\n\nmod = oml.table_apply(data=IRIS, func = build_lm_1)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_968458884","id":"20210224-211340_1020332134","dateCreated":"2021-01-11T19:46:34+0000","dateStarted":"2021-02-24T21:53:06+0000","dateFinished":"2021-02-24T21:53:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%python\n\nprint(\"Model:\",mod)\nprint(\"Type:\",type(mod))\nprint(\"Coefficient\", mod.coef_)","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Model: LinearRegression()\nType: \nCoefficient [[2.2299405]]\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1115727826","id":"20210224-211340_926082115","dateCreated":"2021-01-12T05:00:01+0000","dateStarted":"2021-02-24T21:53:08+0000","dateFinished":"2021-02-24T21:53:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"title":"Use the row_apply function.","text":"%md\n\nUse the embedded Python execution function ***oml.row_apply*** to run a user-defined function on chunks of rows, which is useful to perform scoring in parallel for native Python models. In this example, we pass the function to **row_apply** as a Python function object.\n\nDefine the user-defined function *score_lm_1* to make predictions (score data) using the data set and model passed in as arguments. It returns the predictions as a DataFrame object.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the embedded Python execution function oml.row_apply to run a user-defined function on chunks of rows, which is useful to perform scoring in parallel for native Python models. In this example, we pass the function to row_apply as a Python function object.

\n

Define the user-defined function score_lm_1 to make predictions (score data) using the data set and model passed in as arguments. It returns the predictions as a DataFrame object.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1053858263","id":"20210224-211340_817018288","dateCreated":"2021-01-11T19:46:53+0000","dateStarted":"2021-02-24T21:53:09+0000","dateFinished":"2021-02-24T21:53:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%python\n\ndef score_lm_1(dat, model):\n import pandas as pd\n from sklearn import linear_model\n pred = model.predict(dat[[\"PETAL_WIDTH\"]])\n return pd.concat([dat[['SPECIES', 'PETAL_LENGTH']], \n pd.DataFrame(pred, columns=['PRED_PETAL_LENGTH'])], axis=1)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_1946860142","id":"20210224-211340_182849146","dateCreated":"2021-01-11T19:47:49+0000","dateStarted":"2021-02-24T21:53:10+0000","dateFinished":"2021-02-24T21:53:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%md\n.\nUse ***row_apply*** to invoke this user-defined function and return a single OML DataFrame proxy object as the result. The ***row_apply*** function takes as arguments the proxy object *IRIS*, that we want 10 rows scored at a time (resulting in 15 function invocations), the user-defined function, the linear model object, and that we want the result to be returned as a single table by specifying the table definition.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use row_apply to invoke this user-defined function and return a single OML DataFrame proxy object as the result. The row_apply function takes as arguments the proxy object IRIS, that we want 10 rows scored at a time (resulting in 15 function invocations), the user-defined function, the linear model object, and that we want the result to be returned as a single table by specifying the table definition.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-32185798","id":"20210224-211340_1044424056","dateCreated":"2021-01-11T19:49:42+0000","dateStarted":"2021-02-24T21:53:11+0000","dateFinished":"2021-02-24T21:53:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%python\n\nres = oml.row_apply(IRIS, rows=10, func=score_lm_1, model=mod, \n func_value=pd.DataFrame([('a', 1, 1)], \n columns=['SPECIES', 'PETAL_LENGTH', 'PRED_PETAL_LENGTH']))\nres.head()\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SPECIES PETAL_LENGTH PRED_PETAL_LENGTH\n0 setosa 1.3 1.75254\n1 setosa 1.3 1.75254\n2 setosa 1.4 1.75254\n3 setosa 1.4 1.75254\n4 setosa 1.4 1.75254\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1113773362","id":"20210224-211340_519065103","dateCreated":"2021-01-11T19:50:25+0000","dateStarted":"2021-02-24T21:53:11+0000","dateFinished":"2021-02-24T21:53:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"title":"Step 4: Build one model per Species using the group_apply function","text":"%md\n\nThis step shows how to use the ***oml.group_apply*** function for model building. The ***group_apply*** apply function passes the OML DataFrame specified by the data argument to the user-defined func function as its first argument. The index argument specifies the columns of oml.DataFrame by which the database groups the data for processing by the user-defined Python function. The ***group_apply*** function can use data-parallel execution, in which one or more Python engines perform the same Python function on different groups of data.\n\nIn this step, you build three models, one specific to each species and return them as a dictionary. These models are indexed by their corresponding index value.\n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to use the oml.group_apply function for model building. The group_apply apply function passes the OML DataFrame specified by the data argument to the user-defined func function as its first argument. The index argument specifies the columns of oml.DataFrame by which the database groups the data for processing by the user-defined Python function. The group_apply function can use data-parallel execution, in which one or more Python engines perform the same Python function on different groups of data.

\n

In this step, you build three models, one specific to each species and return them as a dictionary. These models are indexed by their corresponding index value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_142337800","id":"20210224-211340_994735956","dateCreated":"2021-01-11T19:51:46+0000","dateStarted":"2021-02-24T21:53:13+0000","dateFinished":"2021-02-24T21:53:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%python\n\ndef build_lm_g(dat):\n import oml\n from sklearn import linear_model\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n mod = lm.fit(X, y)\n return mod\n\nmod = oml.group_apply(IRIS[:,[\"PETAL_LENGTH\",\"PETAL_WIDTH\",\"SPECIES\"]], \n index=oml.DataFrame(IRIS['SPECIES']), \n func=build_lm_g, \n parallel=2)\n \nprint(\"Type:\",type(mod))\nmod\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Type: \n{'virginica': LinearRegression(), 'setosa': LinearRegression(), 'versicolor': LinearRegression()}\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-2104207823","id":"20210224-211340_31800217","dateCreated":"2021-01-11T19:52:40+0000","dateStarted":"2021-02-24T21:53:14+0000","dateFinished":"2021-02-24T21:53:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%md\n.\nModify the user-defined function to save the resulting model in the same named datastore. A datastore allows storing Python objects in the database under a provided name. The stored Python object assumes the variable name assigned in the Python environment. Here, we construct a name concatenating *mod_* as a prefix and the corresponding Species value.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Modify the user-defined function to save the resulting model in the same named datastore. A datastore allows storing Python objects in the database under a provided name. The stored Python object assumes the variable name assigned in the Python environment. Here, we construct a name concatenating mod_ as a prefix and the corresponding Species value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1594905369","id":"20210224-211340_984954296","dateCreated":"2021-01-11T19:54:32+0000","dateStarted":"2021-02-24T21:53:15+0000","dateFinished":"2021-02-24T21:53:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"text":"%python\n\ndef build_lm_2(dat, dsname):\n import oml\n from sklearn import linear_model\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n lm.fit(X, y)\n name = \"mod_\" + dat.loc[dat.index[0],'SPECIES']\n oml.ds.save(objs = {name: lm}, name=dsname, append=True) \n return name\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_2025862987","id":"20210224-211340_640255191","dateCreated":"2021-01-11T19:57:07+0000","dateStarted":"2021-02-24T21:53:16+0000","dateFinished":"2021-02-24T21:53:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"text":"%md\n.\nUse ***group_apply*** to invoke the user-defined function and list the resulting models, which are a dictionary of three elements each assigned the model object name. The ***group_apply*** function takes the data, the index parameter that specifies the column or columns to partition on, the user-defined function, and that we wish to automatically connect to the database from the Python engine. Connecting to the database is necessary when using the datastore functionality.\n\nNote, if the datastore exists, then delete it so that the ***group_apply*** function completes successfully. \n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use group_apply to invoke the user-defined function and list the resulting models, which are a dictionary of three elements each assigned the model object name. The group_apply function takes the data, the index parameter that specifies the column or columns to partition on, the user-defined function, and that we wish to automatically connect to the database from the Python engine. Connecting to the database is necessary when using the datastore functionality.

\n

Note, if the datastore exists, then delete it so that the group_apply function completes successfully.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1454615086","id":"20210224-211340_1320265617","dateCreated":"2021-01-11T19:59:30+0000","dateStarted":"2021-02-24T21:53:16+0000","dateFinished":"2021-02-24T21:53:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%python\n\ntry:\n oml.ds.delete('ds-1')\nexcept:\n print(\"Datastore not found\")\n\nres = oml.group_apply(IRIS[:,[\"PETAL_LENGTH\",\"PETAL_WIDTH\",\"SPECIES\"]], \n index=oml.DataFrame(IRIS['SPECIES']), \n func=build_lm_2, dsname=\"ds-1\")\n\nprint(\"Outcome:\",res)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Datastore not found\nOutcome: {'virginica': 'mod_virginica', 'setosa': 'mod_setosa', 'versicolor': 'mod_versicolor'}\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-319938624","id":"20210224-211340_1721787437","dateCreated":"2021-01-11T20:00:33+0000","dateStarted":"2021-02-24T21:53:17+0000","dateFinished":"2021-02-24T21:53:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%md\n.\nHere, the model object names are *mod_versicolor*, *mod_virginica*, and *mod_setosa*. When you load the datastore, you get the three models loaded into the client Python engine, assigned to their respective variables.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Here, the model object names are mod_versicolor, mod_virginica, and mod_setosa. When you load the datastore, you get the three models loaded into the client Python engine, assigned to their respective variables.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-79000037","id":"20210224-211340_1965786548","dateCreated":"2021-01-11T20:02:14+0000","dateStarted":"2021-02-24T21:53:21+0000","dateFinished":"2021-02-24T21:53:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"title":"Try it yourself","text":"%md\n\nUse the ***group_apply*** function to count the number of each species in the data set.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the group_apply function to count the number of each species in the data set.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1167221733","id":"20210224-211340_525248762","dateCreated":"2021-01-11T20:06:56+0000","dateStarted":"2021-02-24T21:53:21+0000","dateFinished":"2021-02-24T21:53:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%python\n\n# Insert code here\n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_-1676074025","id":"20210224-211340_1543510445","dateCreated":"2021-01-11T20:07:51+0000","dateStarted":"2021-02-24T21:53:22+0000","dateFinished":"2021-02-24T21:53:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"title":"Step 5: Invoke a function N times","text":"%md\n\nThe ***index_apply*** function allows the same function to be invoked a specified number of times. The first argument to the user-defined function is an index number for the function execution. For example, if the ***times*** argument is 10, each function invocation will receive a distinct value between 1 and 10. This can be used, e.g., for selecting behavior within the function or setting a random seed for Monte Carlo analysis.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

The index_apply function allows the same function to be invoked a specified number of times. The first argument to the user-defined function is an index number for the function execution. For example, if the times argument is 10, each function invocation will receive a distinct value between 1 and 10. This can be used, e.g., for selecting behavior within the function or setting a random seed for Monte Carlo analysis.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_695207631","id":"20210224-211340_971284236","dateCreated":"2021-01-11T20:05:15+0000","dateStarted":"2021-02-24T21:53:23+0000","dateFinished":"2021-02-24T21:53:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"text":"%python\n\ndef compute_random_mean(index):\n import numpy as np\n import scipy\n from statistics import mean \n np.random.seed(index)\n res = np.random.random((100,1))*10\n return mean(res[1])\n \nprint(\"Test: \", compute_random_mean(3))\n\nres = oml.index_apply(times=12, func=compute_random_mean)\nres\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Test: 7.081478226181048\n[7.203244934421581, 0.25926231827891333, 7.081478226181048, 5.4723224917572235, 8.707323061773764, 3.3197980530117723, 7.7991879224011464, 9.68540662820932, 5.018745921487388, 0.207519493594015, 0.19475241487624584, 7.400496965154048]\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1859571265","id":"20210224-211340_273398689","dateCreated":"2021-01-11T20:06:34+0000","dateStarted":"2021-02-24T21:53:23+0000","dateFinished":"2021-02-24T21:53:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"title":"Step 6: Return multiple images from Embedded Python Execution","text":"%md\n\nThis step shows how to create a function *RandomRedDots* that creates and returns a simple DataFrame and generates two scatterplots of random red dots. First, create *RandomRedDots* and save it in the Python Script Repository, and then define and run the native Python function.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to create a function RandomRedDots that creates and returns a simple DataFrame and generates two scatterplots of random red dots. First, create RandomRedDots and save it in the Python Script Repository, and then define and run the native Python function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-236484182","id":"20210224-211340_2057885738","dateCreated":"2021-01-11T20:11:27+0000","dateStarted":"2021-02-24T21:53:24+0000","dateFinished":"2021-02-24T21:53:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%python\n\nRandomRedDots = \"\"\"def RandomRedDots (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n plt.scatter(range(0,num_dots_1), np.random.rand(100),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n plt.scatter(range(0,num_dots_2), np.random.rand(10),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n return df\"\"\"\n\n\noml.script.create(\"RandomRedDots\", func=RandomRedDots, is_global=True, overwrite=True)\n\nprint(RandomRedDots)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"def RandomRedDots (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n plt.scatter(range(0,num_dots_1), np.random.rand(100),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n plt.scatter(range(0,num_dots_2), np.random.rand(10),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n return df\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-463658455","id":"20210224-211340_641297315","dateCreated":"2021-01-11T20:38:19+0000","dateStarted":"2021-02-24T21:53:25+0000","dateFinished":"2021-02-24T21:53:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"text":"%python\n\ndef RandomRedDots (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n plt.scatter(range(0,num_dots_1), np.random.rand(100),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n plt.scatter(range(0,num_dots_2), np.random.rand(10),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n return df","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_-1487351964","id":"20210224-211340_993561751","dateCreated":"2021-01-18T04:06:24+0000","dateStarted":"2021-02-24T21:53:26+0000","dateFinished":"2021-02-24T21:53:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"text":"%python\n\nRandomRedDots()","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"},{"type":"HTML","data":"
\n id val\n0 1 0.01\n1 2 0.02\n2 3 0.03\n3 4 0.04\n4 5 0.05\n5 6 0.06\n6 7 0.07\n7 8 0.08\n8 9 0.09\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1733413995","id":"20210224-211340_1986244322","dateCreated":"2021-01-18T04:06:36+0000","dateStarted":"2021-02-24T21:53:26+0000","dateFinished":"2021-02-24T21:53:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"text":"%md\n.\nUse the ***oml.do_eval*** function to invoke the function *RandomRedDots*. The ***do_eval*** function does not automatically pass data to the function, it merely invokes it. Here, we show accepting the default argument values for *RandomRedDots*.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.do_eval function to invoke the function RandomRedDots. The do_eval function does not automatically pass data to the function, it merely invokes it. Here, we show accepting the default argument values for RandomRedDots.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-58393121","id":"20210224-211340_1245073804","dateCreated":"2021-01-18T03:41:30+0000","dateStarted":"2021-02-24T21:53:28+0000","dateFinished":"2021-02-24T21:53:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"text":"%python\n\nres = oml.do_eval(func=\"RandomRedDots\")\nprint(\"Type: \", type(res))\n\nres\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"},{"type":"HTML","data":"
\nType: \n id val\n0 1 0.01\n1 2 0.02\n2 3 0.03\n3 4 0.04\n4 5 0.05\n5 6 0.06\n6 7 0.07\n7 8 0.08\n8 9 0.09\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1711261749","id":"20210224-211340_666853146","dateCreated":"2021-01-18T03:42:53+0000","dateStarted":"2021-02-24T21:53:29+0000","dateFinished":"2021-02-24T21:53:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%md\n.\nIn this next example, we modify the function to use subplots, thereby creating separate figure objects for the scatter plots. Store this in the script repository as *RandomRedDots2* and invoke the function to see the results. As expected, you get both plots.\n\nNote, when you call *RandomRedDots2* using embedded Python execution, you will get both plots as shown in the result.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
In this next example, we modify the function to use subplots, thereby creating separate figure objects for the scatter plots. Store this in the script repository as RandomRedDots2 and invoke the function to see the results. As expected, you get both plots.

\n

Note, when you call RandomRedDots2 using embedded Python execution, you will get both plots as shown in the result.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_889702079","id":"20210224-211340_1478243150","dateCreated":"2021-01-18T04:05:28+0000","dateStarted":"2021-02-24T21:53:30+0000","dateFinished":"2021-02-24T21:53:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"text":"%md\n.\nDefine the *RandomRedDots2* function that generates two scatter plots, and returns a 2 column DataFrame. Note that we can pass arguments to these functions, here, *num_dots_1* and *num_dots_2*.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the RandomRedDots2 function that generates two scatter plots, and returns a 2 column DataFrame. Note that we can pass arguments to these functions, here, num_dots_1 and num_dots_2.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-458025003","id":"20210224-211340_870547985","dateCreated":"2021-01-18T03:47:00+0000","dateStarted":"2021-02-24T21:53:31+0000","dateFinished":"2021-02-24T21:53:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%python\n\nRandomRedDots2 = \"\"\"def RandomRedDots2 (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n fig = plt.figure(1)\n ax = fig.add_subplot(111)\n ax.scatter(range(0,num_dots_1), np.random.rand(num_dots_1),c='r')\n fig.suptitle(\"Random Red Dots\")\n\n fig2 = plt.figure(2)\n ax2 = fig2.add_subplot(111)\n ax2.scatter(range(0,num_dots_2), np.random.rand(num_dots_2),c='r')\n fig2.suptitle(\"Random Red Dots\")\n return df\"\"\"\n\noml.script.create(\"RandomRedDots2\", func=RandomRedDots2, is_global=True, overwrite=True)\n\nprint(RandomRedDots2)\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"def RandomRedDots2 (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n fig = plt.figure(1)\n ax = fig.add_subplot(111)\n ax.scatter(range(0,num_dots_1), np.random.rand(num_dots_1),c='r')\n fig.suptitle(\"Random Red Dots\")\n fig2 = plt.figure(2)\n ax2 = fig2.add_subplot(111)\n ax2.scatter(range(0,num_dots_2), np.random.rand(num_dots_2),c='r')\n fig2.suptitle(\"Random Red Dots\")\n return df\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-750357791","id":"20210224-211340_1260457936","dateCreated":"2021-01-18T03:48:08+0000","dateStarted":"2021-02-24T21:53:32+0000","dateFinished":"2021-02-24T21:53:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%md\n.\nUse the ***oml.do_eval*** function to call the function *RandomRedDots2*. In this invocation, we're specifying arguments to do_eval for *num_dots_1* and *num_dots_2*. These are specified as you would any other argument to ***do_eval***. This applies to the other embedded Python functions as well.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.do_eval function to call the function RandomRedDots2. In this invocation, we're specifying arguments to do_eval for num_dots_1 and num_dots_2. These are specified as you would any other argument to do_eval. This applies to the other embedded Python functions as well.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_605799019","id":"20210224-211340_381406753","dateCreated":"2021-01-18T03:43:33+0000","dateStarted":"2021-02-24T21:53:32+0000","dateFinished":"2021-02-24T21:53:32+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"text":"%python\n\nres = oml.do_eval(func=\"RandomRedDots2\", num_dots_1 = 600, num_dots_2 = 200)\ntype(res)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:32+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\n"},{"type":"HTML","data":"
\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1830745430","id":"20210224-211340_788797947","dateCreated":"2021-01-18T03:44:11+0000","dateStarted":"2021-02-24T21:53:33+0000","dateFinished":"2021-02-24T21:53:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:71"},{"title":"Step 7: Using the Python script repository","text":"%md\n\nOML4Py stores named user-defined functions called scripts in the script repository. You can make scripts either private or global. A private script is available only to the owner. A global script is available to any user. For private scripts, the owner of the script may grant the read privilege to other users or revoke that privilege.\n\nTo illustrate using the Python Script Repository, you will define a function *build_lm_str* that will fit a regression model. Using this function, you will then create a script named *MyLM_function*.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py stores named user-defined functions called scripts in the script repository. You can make scripts either private or global. A private script is available only to the owner. A global script is available to any user. For private scripts, the owner of the script may grant the read privilege to other users or revoke that privilege.

\n

To illustrate using the Python Script Repository, you will define a function build_lm_str that will fit a regression model. Using this function, you will then create a script named MyLM_function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1902009689","id":"20210224-211340_14218496","dateCreated":"2021-01-18T01:54:21+0000","dateStarted":"2021-02-24T21:53:34+0000","dateFinished":"2021-02-24T21:53:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:72"},{"text":"%md\n.\nTo store a user-defined function in the script repository, it must be presented as a named string. Define the function as a string, *build_lm_str*. Note the use of triple quotes to enable formatting. ","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
To store a user-defined function in the script repository, it must be presented as a named string. Define the function as a string, build_lm_str. Note the use of triple quotes to enable formatting.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-530672881","id":"20210224-211340_1136932164","dateCreated":"2021-01-18T02:07:51+0000","dateStarted":"2021-02-24T21:53:35+0000","dateFinished":"2021-02-24T21:53:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:73"},{"text":"%python\n\nbuild_lm_str = \"\"\"def build_lm_str(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n import pandas as pd\n dat = pd.get_dummies(dat, drop_first=True)\n X = dat[[\"SEPAL_WIDTH\", \"PETAL_LENGTH\", \"PETAL_WIDTH\", \"SPECIES_versicolor\", \"SPECIES_virginica\"]]\n y = dat[[\"SEPAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\"\"\"","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_136958252","id":"20210224-211340_189145563","dateCreated":"2021-01-18T02:07:33+0000","dateStarted":"2021-02-24T21:53:36+0000","dateFinished":"2021-02-24T21:53:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:74"},{"text":"%md\n.\nView the string that you just created.\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
View the string that you just created.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1396803441","id":"20210224-211340_67254921","dateCreated":"2021-01-18T02:06:45+0000","dateStarted":"2021-02-24T21:53:36+0000","dateFinished":"2021-02-24T21:53:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:75"},{"text":"%python\n\nprint(build_lm_str)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"def build_lm_str(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n import pandas as pd\n dat = pd.get_dummies(dat, drop_first=True)\n X = dat[[\"SEPAL_WIDTH\", \"PETAL_LENGTH\", \"PETAL_WIDTH\", \"SPECIES_versicolor\", \"SPECIES_virginica\"]]\n y = dat[[\"SEPAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1691556905","id":"20210224-211340_1127596028","dateCreated":"2021-01-18T02:09:27+0000","dateStarted":"2021-02-24T21:53:37+0000","dateFinished":"2021-02-24T21:53:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:76"},{"title":"Step 8: Create scripts in the repository","text":"%md\nUse the function ***oml.script.create*** to create a script *MyLM_function*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the function oml.script.create to create a script MyLM_function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1774042471","id":"20210224-211340_565824715","dateCreated":"2021-01-18T02:10:27+0000","dateStarted":"2021-02-24T21:53:38+0000","dateFinished":"2021-02-24T21:53:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:77"},{"text":"%md\n.\nYou can use the ***oml.script.drop*** function to drop a named script, here shown in a try-except block. Then, use the ***oml.script.create*** function to create the script *MyLM_function*. Note that we have the *overwrite* argument set to *True* in case the function already exists.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
You can use the oml.script.drop function to drop a named script, here shown in a try-except block. Then, use the oml.script.create function to create the script MyLM_function. Note that we have the overwrite argument set to True in case the function already exists.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1835975831","id":"20210224-211340_457927134","dateCreated":"2021-01-18T02:11:22+0000","dateStarted":"2021-02-24T21:53:38+0000","dateFinished":"2021-02-24T21:53:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:78"},{"text":"%python\n\ntry:\n oml.script.drop(\"MyLM_function\")\nexcept:\n pass\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_-1970968988","id":"20210224-211340_243846732","dateCreated":"2021-01-18T02:11:38+0000","dateStarted":"2021-02-24T21:53:39+0000","dateFinished":"2021-02-24T21:53:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:79"},{"text":"%python\n\noml.script.create(\"MyLM_function\", func=build_lm_str, overwrite=True)","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_-1908419809","id":"20210224-211340_1621908030","dateCreated":"2021-01-18T02:12:10+0000","dateStarted":"2021-02-24T21:53:40+0000","dateFinished":"2021-02-24T21:53:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:80"},{"text":"%md\n\nList the scripts that are available only to the current user with ***oml.script.dir*** with sctype set to *user*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

List the scripts that are available only to the current user with oml.script.dir with sctype set to user.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1209338535","id":"20210224-211340_253496692","dateCreated":"2021-01-18T02:14:33+0000","dateStarted":"2021-02-24T21:53:40+0000","dateFinished":"2021-02-24T21:53:40+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:81"},{"text":"%python\n\noml.script.dir(sctype='user')\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:40+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" name ... date\n0 MyLM_function ... 2021-02-24 21:53:40\n\n[1 rows x 4 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-1857865118","id":"20210224-211340_1331265744","dateCreated":"2021-01-18T02:15:16+0000","dateStarted":"2021-02-24T21:53:41+0000","dateFinished":"2021-02-24T21:53:41+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:82"},{"text":"%md\n.\nGrant the read privilege on the *MyLM_function* script to PUBLIC with ***oml.grant***. \nNotice that the type is specified as *pyqscript*. This same function is used to grant privileges on datastores. \n\nIf you wanted to grant read privilege to a specific user, you would use something like:\n oml.grant(name=\"MyLM_function\", typ=\"pyqscript\", user=\"OMLUSER\")\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:41+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Grant the read privilege on the MyLM_function script to PUBLIC with oml.grant.\n
Notice that the type is specified as pyqscript. This same function is used to grant privileges on datastores.

\n

If you wanted to grant read privilege to a specific user, you would use something like:

\n
oml.grant(name=\"MyLM_function\", typ=\"pyqscript\", user=\"OMLUSER\")\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1363451369","id":"20210224-211340_132894169","dateCreated":"2021-01-18T02:15:39+0000","dateStarted":"2021-02-24T21:53:42+0000","dateFinished":"2021-02-24T21:53:42+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:83"},{"text":"%python\n\noml.grant(name=\"MyLM_function\", typ=\"pyqscript\", user=None)","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:42+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220120_308002286","id":"20210224-211340_85199536","dateCreated":"2021-01-18T02:16:03+0000","dateStarted":"2021-02-24T21:53:42+0000","dateFinished":"2021-02-24T21:53:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:84"},{"text":"%md\n.\nList the scripts to which the read privilege has been granted using ***oml.script.dir*** and *sctype* set to *grant*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the scripts to which the read privilege has been granted using oml.script.dir and sctype set to grant.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_1392451730","id":"20210224-211340_1779224779","dateCreated":"2021-01-18T02:16:21+0000","dateStarted":"2021-02-24T21:53:43+0000","dateFinished":"2021-02-24T21:53:43+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:85"},{"text":"%python\n\noml.script.dir(sctype=\"grant\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:43+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" name grantee\n0 MyLM_function PUBLIC\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_-832402479","id":"20210224-211340_1766883930","dateCreated":"2021-01-18T02:17:13+0000","dateStarted":"2021-02-24T21:53:44+0000","dateFinished":"2021-02-24T21:53:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:86"},{"text":"%md\n.\nLoad the named function into the Python engine for use as a typical Python function using ***oml.script.load***. ","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Load the named function into the Python engine for use as a typical Python function using oml.script.load.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220120_914366743","id":"20210224-211340_806096812","dateCreated":"2021-01-18T02:17:40+0000","dateStarted":"2021-02-24T21:53:45+0000","dateFinished":"2021-02-24T21:53:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:87"},{"text":"%python\n\nimport inspect\n\nMyLM_function = oml.script.load(\"MyLM_function\")\nprint(\"Type\", type(MyLM_function))\nMyLM_function.get_source()\nprint(str(MyLM_function))\nprint(MyLM_function.get_source().read())\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Type \n\ndef build_lm_str(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n import pandas as pd\n dat = pd.get_dummies(dat, drop_first=True)\n X = dat[[\"SEPAL_WIDTH\", \"PETAL_LENGTH\", \"PETAL_WIDTH\", \"SPECIES_versicolor\", \"SPECIES_virginica\"]]\n y = dat[[\"SEPAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_-1726694702","id":"20210224-211340_367579799","dateCreated":"2021-01-18T02:18:07+0000","dateStarted":"2021-02-24T21:53:45+0000","dateFinished":"2021-02-24T21:53:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:88"},{"text":"%md\n.\nExtract the function text string from the function object and use this to save in the script repository using ***oml.script_create***.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Extract the function text string from the function object and use this to save in the script repository using oml.script_create.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_-1336662510","id":"20210224-211340_426693225","dateCreated":"2021-01-18T02:18:54+0000","dateStarted":"2021-02-24T21:53:46+0000","dateFinished":"2021-02-24T21:53:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:89"},{"text":"%python\n\nloaded_str = MyLM_function.get_source().read()\ntype(loaded_str)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_1564663399","id":"20210224-211340_1958854988","dateCreated":"2021-01-18T02:19:11+0000","dateStarted":"2021-02-24T21:53:46+0000","dateFinished":"2021-02-24T21:53:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:90"},{"text":"%python\n\noml.script.create(\"MyTEST_function\", func=loaded_str, overwrite=True)","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220125_2062930162","id":"20210224-211340_610320663","dateCreated":"2021-01-19T01:58:20+0000","dateStarted":"2021-02-24T21:53:47+0000","dateFinished":"2021-02-24T21:53:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:91"},{"text":"%md\n\nUse the function ***oml.script.dir*** to list all the available scripts.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the function oml.script.dir to list all the available scripts.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_-639598540","id":"20210224-211340_2001720166","dateCreated":"2021-01-18T02:19:45+0000","dateStarted":"2021-02-24T21:53:48+0000","dateFinished":"2021-02-24T21:53:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:92"},{"text":"%python\n\noml.script.dir(sctype=\"all\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" owner name ... description date\n0 OMLUSER MyLM_function ... None 2021-02-24 21:53:40\n1 OMLUSER MyTEST_function ... None 2021-02-24 21:53:47\n2 PYQSYS RandomRedDots ... None 2021-02-24 21:53:25\n3 PYQSYS RandomRedDots2 ... None 2021-02-24 21:53:32\n\n[4 rows x 5 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_-1499548891","id":"20210224-211340_417184380","dateCreated":"2021-01-18T02:20:01+0000","dateStarted":"2021-02-24T21:53:49+0000","dateFinished":"2021-02-24T21:53:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:93"},{"text":"%md\n.\nInvoke ***table_apply*** on *build_lm_str* and *loaded_str*. Recall that these strings represent the same function - *build_lm_str* was saved to the script repository after assigning the function to a string object. *loaded_str* is the string representation of the function extracted using ***get_source().read()***.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Invoke table_apply on build_lm_str and loaded_str. Recall that these strings represent the same function - build_lm_str was saved to the script repository after assigning the function to a string object. loaded_str is the string representation of the function extracted using get_source().read().

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_-1871400000","id":"20210224-211340_1659687818","dateCreated":"2021-01-21T00:39:42+0000","dateStarted":"2021-02-24T21:53:49+0000","dateFinished":"2021-02-24T21:53:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:94"},{"text":"%python\n\nmod1 = oml.table_apply(data=IRIS, func = build_lm_str)\nmod1.coef_\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"array([[ 0.49588894, 0.82924391, -0.31515517, -0.72356196, -1.02349781]])\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_2146683712","id":"20210224-211340_1084677817","dateCreated":"2021-01-21T00:41:21+0000","dateStarted":"2021-02-24T21:53:50+0000","dateFinished":"2021-02-24T21:53:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:95"},{"text":"%python\n\nmod2 = oml.table_apply(data=IRIS, func = loaded_str)\nmod2.coef_","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"array([[ 0.49588894, 0.82924391, -0.31515517, -0.72356196, -1.02349781]])\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_1926909684","id":"20210224-211340_1232859432","dateCreated":"2021-01-21T00:43:16+0000","dateStarted":"2021-02-24T21:53:51+0000","dateFinished":"2021-02-24T21:53:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:96"},{"title":"Step 9: Store a function as a global function","text":"%md\n\nA global function is one that can be accessed by any user.\n\nIn this step, you will define and save a global function *build_lm3*. You will then call function *build_lm3* to build another model.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

A global function is one that can be accessed by any user.

\n

In this step, you will define and save a global function build_lm3. You will then call function build_lm3 to build another model.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_-1624606786","id":"20210224-211340_1015069729","dateCreated":"2021-01-18T02:20:18+0000","dateStarted":"2021-02-24T21:53:52+0000","dateFinished":"2021-02-24T21:53:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:97"},{"text":"%md\n.\nDefine the function *build_lm3* as a named string and save it to the script repository.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the function build_lm3 as a named string and save it to the script repository.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_1221742664","id":"20210224-211340_947144888","dateCreated":"2021-01-18T02:21:19+0000","dateStarted":"2021-02-24T21:53:52+0000","dateFinished":"2021-02-24T21:53:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:98"},{"text":"%python\n\nbuild_lm3 = \"\"\"def build_lm3(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\"\"\"\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220125_2114087699","id":"20210224-211340_1322326553","dateCreated":"2021-01-18T02:21:31+0000","dateStarted":"2021-02-24T21:53:53+0000","dateFinished":"2021-02-24T21:53:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:99"},{"text":"%python\n\noml.script.create(\"MyGlobalLM_function\", func=build_lm3, is_global=True, overwrite=True)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201220125_-1801219011","id":"20210224-211340_1479888986","dateCreated":"2021-01-18T03:06:57+0000","dateStarted":"2021-02-24T21:53:54+0000","dateFinished":"2021-02-24T21:53:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:100"},{"text":"%md\n.\nUse the ***oml.table_apply*** function to invoke this function with the *IRIS* table. The ***oml.table_apply*** function spawns a Python engine, loads the specified user-defined function, and passes the data referenced by the *IRIS* proxy object as a pandas DataFrame in the first argument of the user-defined function. The resulting scikit-learn linear model is returned in *res*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.table_apply function to invoke this function with the IRIS table. The oml.table_apply function spawns a Python engine, loads the specified user-defined function, and passes the data referenced by the IRIS proxy object as a pandas DataFrame in the first argument of the user-defined function. The resulting scikit-learn linear model is returned in res.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_1536377958","id":"20210224-211340_1634569929","dateCreated":"2021-01-18T02:22:18+0000","dateStarted":"2021-02-24T21:53:55+0000","dateFinished":"2021-02-24T21:53:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:101"},{"text":"%python\n\nres = oml.table_apply(IRIS, func=\"MyGlobalLM_function\", oml_input_type=\"pandas.DataFrame\")\nprint(res)\nprint(res.coef_)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"LinearRegression()\n[[2.2299405]]\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_-819218142","id":"20210224-211340_2068200404","dateCreated":"2021-01-18T02:22:35+0000","dateStarted":"2021-02-24T21:53:55+0000","dateFinished":"2021-02-24T21:53:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:102"},{"title":"Step 10: Drop scripts from the repository","text":"%md\n\nIn this step, you will perform the following:\n\n* Drop one of the private scripts\n* Drop the global script\n* List the available scripts again","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this step, you will perform the following:

\n
    \n
  • Drop one of the private scripts
  • \n
  • Drop the global script
  • \n
  • List the available scripts again
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_1124781325","id":"20210224-211340_1031923575","dateCreated":"2021-01-18T02:22:54+0000","dateStarted":"2021-02-24T21:53:56+0000","dateFinished":"2021-02-24T21:53:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:103"},{"text":"%md\n.\nFirst drop the private script *MyLM_function*, then drop the global script *MyGlobalML_function*, and finally list the available scripts.","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
First drop the private script MyLM_function, then drop the global script MyGlobalML_function, and finally list the available scripts.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_198279319","id":"20210224-211340_1338296093","dateCreated":"2021-01-18T02:23:37+0000","dateStarted":"2021-02-24T21:53:57+0000","dateFinished":"2021-02-24T21:53:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:104"},{"text":"%python\n\noml.script.drop(\"MyLM_function\")\noml.script.drop(\"MyGlobalLM_function\", is_global=True)\noml.script.dir(sctype=\"all\")\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" owner name ... description date\n0 OMLUSER MyTEST_function ... None 2021-02-24 21:53:47\n1 PYQSYS RandomRedDots ... None 2021-02-24 21:53:25\n2 PYQSYS RandomRedDots2 ... None 2021-02-24 21:53:32\n\n[3 rows x 5 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_1434608898","id":"20210224-211340_1121063914","dateCreated":"2021-01-18T02:23:36+0000","dateStarted":"2021-02-24T21:53:57+0000","dateFinished":"2021-02-24T21:53:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:105"},{"text":"%md\n\n# End of Script\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:53:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614201220125_941155346","id":"20210224-211340_134224127","dateCreated":"2021-01-11T20:58:16+0000","dateStarted":"2021-02-24T21:53:58+0000","dateFinished":"2021-02-24T21:53:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:106"},{"text":"%md\n","user":"OMLUSER03","dateUpdated":"2021-02-06T19:39:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614201220125_-1057078852","id":"20210224-211340_973667543","dateCreated":"2021-01-11T23:19:23+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:107"}],"name":"Lab 5: OML4Py Embedded Python Execution","id":"39719","noteParams":{},"noteForms":{},"angularObjects":{"ORA96849F3DDA:shared_process":[],"ORA7A60DC9B32:shared_process":[],"ORA7CC90ACC73:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 5_ OML4Py Embedded Python Execution.json b/machine-learning/labs/oml4py-live-labs/Lab 5_ OML4Py Embedded Python Execution.json new file mode 100755 index 00000000..07d3fc9f --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/Lab 5_ OML4Py Embedded Python Execution.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python - Embedded Python Execution\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nIn this notebook, we highlight using OML4Py embedded Python execution and the Python script repository. \n\nOML4Py stores named user-defined functions called scripts in the script repository. With the script repository, users can:\n\n* Create and store user-defined Python functions as scripts in Oracle Database\n* Grant or revoke the read/run privilege to a script\n* List available scripts\n* Load a script function into the Python environment\n* Drop a script from the script repository\n\nThe OML4Py script repository functions are:\n\n* ***oml.script.create*** - Creates a script, which contains a single Python function definition, in the script repository.\n* ***oml.script.dir*** - Lists the scripts present in the script repository.\n* ***oml.script.drop*** - Drops a script from the script repository.\n* ***oml.script.load*** - Loads a script from the script repository into a Python session.\n* ***oml.grant*** - Grants read privilege permission to another user to a datastore or script owned by the current user.\n* ***oml.revoke*** - Revokes the read privilege permission that was granted to another user to a datastore or script owned by the current user.\n\n\nEmbedded Python execution enables you to run user-defined Python functions in Python engines spawned in the Autonomous Database environment. These engines run alongside an OML Notebooks Python interpreter session. On Autonomous Database, OML4Py provides both a Python interface and a REST API interface for embedded Python execution. Use the OML4Py embedded Python execution REST API to query and invoke user-defined Python functions saved in the datastore. The result of the REST execution is a JSON representation of the value returned from the Python script. \n\nThe OML4Py embedded Python execution functions are:\n\n* ***oml.do_eval*** - Calls a Python function in Python engines spawned by the Autonomous Database environment.\n* ***oml.group_apply*** - Partitions a database table by the values in one or more columns and runs the provided user-defined Python function on each partition.\n* ***oml.index_apply*** - Calls a Python function multiple times, passing in a unique index of the invocation to the user-defined function.\n* ***oml.row_apply*** - Partitions a database table into sets of rows and runs the provided user-defined Python function on the data in each set.\n* ***oml.table_apply*** - calls a Python function on data in the database as a single pandas.DataFrame in a single Python engine.\n\nDownload the REST API notebook from Github to view examples here:\n\n###### [OML4Py REST API](https://github.com/oracle/oracle-db-examples/blob/master/machine-learning/notebooks/python)\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)\n---","user":"OMLUSER02","dateUpdated":"2021-03-02T19:22:57+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python - Embedded Python Execution

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

In this notebook, we highlight using OML4Py embedded Python execution and the Python script repository.

\n

OML4Py stores named user-defined functions called scripts in the script repository. With the script repository, users can:

\n
    \n
  • Create and store user-defined Python functions as scripts in Oracle Database
  • \n
  • Grant or revoke the read/run privilege to a script
  • \n
  • List available scripts
  • \n
  • Load a script function into the Python environment
  • \n
  • Drop a script from the script repository
  • \n
\n

The OML4Py script repository functions are:

\n
    \n
  • oml.script.create - Creates a script, which contains a single Python function definition, in the script repository.
  • \n
  • oml.script.dir - Lists the scripts present in the script repository.
  • \n
  • oml.script.drop - Drops a script from the script repository.
  • \n
  • oml.script.load - Loads a script from the script repository into a Python session.
  • \n
  • oml.grant - Grants read privilege permission to another user to a datastore or script owned by the current user.
  • \n
  • oml.revoke - Revokes the read privilege permission that was granted to another user to a datastore or script owned by the current user.
  • \n
\n

Embedded Python execution enables you to run user-defined Python functions in Python engines spawned in the Autonomous Database environment. These engines run alongside an OML Notebooks Python interpreter session. On Autonomous Database, OML4Py provides both a Python interface and a REST API interface for embedded Python execution. Use the OML4Py embedded Python execution REST API to query and invoke user-defined Python functions saved in the datastore. The result of the REST execution is a JSON representation of the value returned from the Python script.

\n

The OML4Py embedded Python execution functions are:

\n
    \n
  • oml.do_eval - Calls a Python function in Python engines spawned by the Autonomous Database environment.
  • \n
  • oml.group_apply - Partitions a database table by the values in one or more columns and runs the provided user-defined Python function on each partition.
  • \n
  • oml.index_apply - Calls a Python function multiple times, passing in a unique index of the invocation to the user-defined function.
  • \n
  • oml.row_apply - Partitions a database table into sets of rows and runs the provided user-defined Python function on the data in each set.
  • \n
  • oml.table_apply - calls a Python function on data in the database as a single pandas.DataFrame in a single Python engine.
  • \n
\n

Download the REST API notebook from Github to view examples here:

\n
OML4Py REST API
\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-2067330281","id":"20210302-002652_2145182865","dateCreated":"2021-01-11T17:41:53+0000","dateStarted":"2021-03-02T19:22:58+0000","dateFinished":"2021-03-02T19:23:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Step 1: Import the OML4Py library","text":"%md\n\nImport the **oml** library.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Import the oml library.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1951267739","id":"20210302-002652_1281186904","dateCreated":"2021-01-11T17:53:16+0000","dateStarted":"2021-03-02T19:23:01+0000","dateFinished":"2021-03-02T19:23:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%python\n\nimport oml\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_1667702196","id":"20210302-002652_1686303762","dateCreated":"2021-01-11T19:05:58+0000","dateStarted":"2021-03-02T19:23:01+0000","dateFinished":"2021-03-02T19:23:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"text":"%md\n.\nCreate the *iris* data.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Create the iris data.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1394392232","id":"20210302-002652_1226630012","dateCreated":"2021-01-11T19:08:57+0000","dateStarted":"2021-03-02T19:23:11+0000","dateFinished":"2021-03-02T19:23:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%python\n\nfrom sklearn import datasets\nfrom sklearn import linear_model\nimport pandas as pd\n\niris = datasets.load_iris()\nx = pd.DataFrame(iris.data, columns = ['SEPAL_LENGTH','SEPAL_WIDTH','PETAL_LENGTH','PETAL_WIDTH'])\ny = pd.DataFrame(list(map(lambda x: {0: 'setosa', 1: 'versicolor',2:'virginica'}[x], iris.target)), columns = ['SPECIES'])\n\ntry:\n oml.drop(table='IRIS')\nexcept:\n pass\n\nIRIS = oml.create(pd.concat([x, y], axis=1), table = 'IRIS')\niris_df = pd.concat([x, y], axis=1)\nprint(IRIS.columns)\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"['SEPAL_LENGTH', 'SEPAL_WIDTH', 'PETAL_LENGTH', 'PETAL_WIDTH', 'SPECIES']\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-250429630","id":"20210302-002652_1375501986","dateCreated":"2021-01-11T19:10:05+0000","dateStarted":"2021-03-02T19:23:11+0000","dateFinished":"2021-03-02T19:23:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"title":"Step 2: Build and score a linear model ","text":"%md\n\nWhen working with embedded Python execution, a typical workflow is:\n\n* Develop your Python script interactively using the Python command line\n* Transform your script into a user-defined Python function\n* Validate your function by running it in Python\n* Adapt the function to use datastore, as needed\n* Run your function by passing it as an argument to the embedded Python execution API\n* Store your function in the script repository\n* Run your function using the Python API for embedded Python execution\n* Run your function using the REST API for embedded Python execution prior to providing it to application developers\n\nIn this section, you will validate your Python script, validate your user-defined function before invoking the embedded Python APIs. You'll do this using a script that builds a linear regression model.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

When working with embedded Python execution, a typical workflow is:

\n
    \n
  • Develop your Python script interactively using the Python command line
  • \n
  • Transform your script into a user-defined Python function
  • \n
  • Validate your function by running it in Python
  • \n
  • Adapt the function to use datastore, as needed
  • \n
  • Run your function by passing it as an argument to the embedded Python execution API
  • \n
  • Store your function in the script repository
  • \n
  • Run your function using the Python API for embedded Python execution
  • \n
  • Run your function using the REST API for embedded Python execution prior to providing it to application developers
  • \n
\n

In this section, you will validate your Python script, validate your user-defined function before invoking the embedded Python APIs. You'll do this using a script that builds a linear regression model.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1609796590","id":"20210302-002652_2011518809","dateCreated":"2021-01-11T19:10:25+0000","dateStarted":"2021-03-02T19:23:13+0000","dateFinished":"2021-03-02T19:23:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%md\n.\nRun the following script to create a linear model with sklearn.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Run the following script to create a linear model with sklearn.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1888161340","id":"20210302-002652_70520787","dateCreated":"2021-01-11T19:11:07+0000","dateStarted":"2021-03-02T19:23:14+0000","dateFinished":"2021-03-02T19:23:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%python\n\nfrom sklearn import linear_model\n\nlm = linear_model.LinearRegression()\nX = iris_df[[\"PETAL_WIDTH\"]]\ny = iris_df[[\"PETAL_LENGTH\"]]\nmod = lm.fit(X, y)\nprint(\"Model:\",mod)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Model: LinearRegression()\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1190428327","id":"20210302-002652_714935082","dateCreated":"2021-01-11T19:12:36+0000","dateStarted":"2021-03-02T19:23:14+0000","dateFinished":"2021-03-02T19:23:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%md\n.\nPredict the petal length using the ***predict*** function.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Predict the petal length using the predict function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_972137707","id":"20210302-002652_405174709","dateCreated":"2021-01-11T19:13:09+0000","dateStarted":"2021-03-02T19:23:15+0000","dateFinished":"2021-03-02T19:23:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:48"},{"text":"%python\n\npred = mod.predict(iris_df[[\"PETAL_WIDTH\"]])\npred[0:10]\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"array([[1.52954613],\n [1.52954613],\n [1.52954613],\n [1.52954613],\n [1.52954613],\n [1.97553423],\n [1.75254018],\n [1.52954613],\n [1.52954613],\n [1.30655208]])\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1097112412","id":"20210302-002652_1168423543","dateCreated":"2021-01-11T19:20:47+0000","dateStarted":"2021-03-02T19:23:16+0000","dateFinished":"2021-03-02T19:23:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:49"},{"text":"%md\n.\nAssess model quality using mean squared error and R^2.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Assess model quality using mean squared error and R^2.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_748237188","id":"20210302-002652_1632272263","dateCreated":"2021-01-11T19:21:06+0000","dateStarted":"2021-03-02T19:23:17+0000","dateFinished":"2021-03-02T19:23:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:50"},{"text":"%python\n\nfrom sklearn.metrics import mean_squared_error, r2_score\n\nprint('Coefficients: \\n', mod.coef_)\nprint(\"Mean squared error: %.2f\"\n% mean_squared_error(iris_df[[\"PETAL_LENGTH\"]], pred))\n\nprint('Variance score (1 is perfect prediction): %.2f' % r2_score(iris_df[[\"PETAL_LENGTH\"]], pred))\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Coefficients: \n [[2.2299405]]\nMean squared error: 0.23\nVariance score (1 is perfect prediction): 0.93\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_393556415","id":"20210302-002652_600632543","dateCreated":"2021-01-11T19:21:46+0000","dateStarted":"2021-03-02T19:23:17+0000","dateFinished":"2021-03-02T19:23:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:51"},{"text":"%md\n.\nGenerate a scatterplot of the data along with a plot of the regression line.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Generate a scatterplot of the data along with a plot of the regression line.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1578455207","id":"20210302-002652_135058114","dateCreated":"2021-01-11T19:22:18+0000","dateStarted":"2021-03-02T19:23:18+0000","dateFinished":"2021-03-02T19:23:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:52"},{"text":"%python\n\nimport matplotlib.pyplot as plt\n\nplt.scatter(iris_df.loc[:,\"PETAL_WIDTH\"], iris_df.loc[:,\"PETAL_LENGTH\"])\nplt.plot(iris_df[[\"PETAL_WIDTH\"]], pred, color='blue', linewidth=3)\nplt.grid(True)\nplt.title('Prediction of Petal Length')\nplt.xlabel('Petal Width')\nplt.ylabel('Petal Length')\n\nplt.show()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1765669618","id":"20210302-002652_1755031222","dateCreated":"2021-01-11T19:22:41+0000","dateStarted":"2021-03-02T19:23:19+0000","dateFinished":"2021-03-02T19:23:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:53"},{"title":"Step 3: Build the model using Embedded Python Execution","text":"%md\n\nIn this step, you will build the same linear model, but using the embedded Python execution Python engines under control of the Autonomous Database environment. You will perform the following tasks:\n\n* Define the function *build_lm_1*, that returns the model as the result. This is referred to as a user-defined function\n* Score the training data and plot the model against the data points\n\nNote, in the Python API, the embedded Python execution functions accept a function object or named string as input, and can return images as well as structured content.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this step, you will build the same linear model, but using the embedded Python execution Python engines under control of the Autonomous Database environment. You will perform the following tasks:

\n
    \n
  • Define the function build_lm_1, that returns the model as the result. This is referred to as a user-defined function
  • \n
  • Score the training data and plot the model against the data points
  • \n
\n

Note, in the Python API, the embedded Python execution functions accept a function object or named string as input, and can return images as well as structured content.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_324731957","id":"20210302-002652_1512000101","dateCreated":"2021-01-11T19:22:58+0000","dateStarted":"2021-03-02T19:23:20+0000","dateFinished":"2021-03-02T19:23:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:54"},{"text":"%md\n.\nDefine the user-defined function *build_lm_1*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the user-defined function build_lm_1.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-450076684","id":"20210302-002652_519172077","dateCreated":"2021-01-11T19:24:55+0000","dateStarted":"2021-03-02T19:23:21+0000","dateFinished":"2021-03-02T19:23:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:55"},{"text":"%python\n\ndef build_lm_1(dat):\n import oml\n from sklearn import linear_model\n import matplotlib.pyplot as plt\n\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n mod = lm.fit(X, y)\n\n pred = mod.predict(dat[[\"PETAL_WIDTH\"]])\n plt.scatter(dat.loc[:,\"PETAL_WIDTH\"], dat.loc[:,\"PETAL_LENGTH\"])\n plt.plot(dat[[\"PETAL_WIDTH\"]], pred, color='blue', linewidth=3)\n plt.grid(True)\n plt.title('Prediction of Petal Length')\n\n plt.xlabel('Petal Width')\n plt.ylabel('Petal Length')\n plt.show()\n return mod\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_-433391157","id":"20210302-002652_1879417907","dateCreated":"2021-01-11T19:27:55+0000","dateStarted":"2021-03-02T19:23:22+0000","dateFinished":"2021-03-02T19:23:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:56"},{"text":"%md\n.\nInvoke your user-defined function to build the model and plot the petal length predictions.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Invoke your user-defined function to build the model and plot the petal length predictions.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1088824209","id":"20210302-002652_1167983251","dateCreated":"2021-01-11T19:28:20+0000","dateStarted":"2021-03-02T19:23:22+0000","dateFinished":"2021-03-02T19:23:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:57"},{"text":"%python\n\nbuild_lm_1(iris_df)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\nLinearRegression()\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-741214212","id":"20210302-002652_1710371879","dateCreated":"2021-01-11T19:30:12+0000","dateStarted":"2021-03-02T19:23:23+0000","dateFinished":"2021-03-02T19:23:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:58"},{"title":"Use the table_apply function","text":"%md\n\n***oml.table_apply*** takes the OML DataFrame proxy object *IRIS* as input data and loads that data to the user-defined function as a pandas DataFrame. In this example, the user-defined function is passed as a Python string. You see that the model comes back as an OML object, which you can pull to the client to view the the linear model.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

oml.table_apply takes the OML DataFrame proxy object IRIS as input data and loads that data to the user-defined function as a pandas DataFrame. In this example, the user-defined function is passed as a Python string. You see that the model comes back as an OML object, which you can pull to the client to view the the linear model.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-212806346","id":"20210302-002652_1953309171","dateCreated":"2021-01-11T19:31:10+0000","dateStarted":"2021-03-02T19:23:25+0000","dateFinished":"2021-03-02T19:23:25+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:59"},{"text":"%python\n\nimport inspect\n\nbuild_lm_1 = \"\"\"def build_lm_1(dat):\n import oml\n from sklearn import linear_model\n import matplotlib.pyplot as plt\n\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n mod = lm.fit(X, y)\n\n pred = mod.predict(dat[[\"PETAL_WIDTH\"]])\n plt.scatter(dat.loc[:,\"PETAL_WIDTH\"], dat.loc[:,\"PETAL_LENGTH\"])\n plt.plot(dat[[\"PETAL_WIDTH\"]], pred, color='blue', linewidth=3)\n plt.grid(True)\n plt.title('Prediction of Petal Length')\n\n plt.xlabel('Petal Width')\n plt.ylabel('Petal Length')\n plt.show()\n return mod\"\"\"","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:25+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_1141787690","id":"20210302-002652_697575281","dateCreated":"2021-01-11T19:40:26+0000","dateStarted":"2021-03-02T19:23:25+0000","dateFinished":"2021-03-02T19:23:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:60"},{"text":"%md\n.\nBy invoking **table_apply**, a Python engine is spawned and the user-defined function *build_lm_1* is invoked on that engine with the data referenced by *IRIS* being passed in as a pandas DataFrame. Part of the return value is the image, which is automatically displayed. In this example, we are passing the function object to the ***table_apply*** function.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
By invoking table_apply, a Python engine is spawned and the user-defined function build_lm_1 is invoked on that engine with the data referenced by IRIS being passed in as a pandas DataFrame. Part of the return value is the image, which is automatically displayed. In this example, we are passing the function object to the table_apply function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-241653931","id":"20210302-002652_472592970","dateCreated":"2021-01-11T19:42:38+0000","dateStarted":"2021-03-02T19:23:26+0000","dateFinished":"2021-03-02T19:23:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:61"},{"text":"%python\n\nmod = oml.table_apply(data=IRIS, func = build_lm_1)\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-498671931","id":"20210302-002652_1745645284","dateCreated":"2021-01-11T19:46:34+0000","dateStarted":"2021-03-02T19:23:27+0000","dateFinished":"2021-03-02T19:23:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:62"},{"text":"%python\n\nprint(\"Model:\",mod)\nprint(\"Type:\",type(mod))\nprint(\"Coefficient\", mod.coef_)","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Model: LinearRegression()\nType: \nCoefficient [[2.2299405]]\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_239876753","id":"20210302-002652_1978906799","dateCreated":"2021-01-12T05:00:01+0000","dateStarted":"2021-03-02T19:23:29+0000","dateFinished":"2021-03-02T19:23:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:63"},{"title":"Use the row_apply function.","text":"%md\n\nUse the embedded Python execution function ***oml.row_apply*** to run a user-defined function on chunks of rows, which is useful to perform scoring in parallel for native Python models. In this example, we pass the function to **row_apply** as a Python function object.\n\nDefine the user-defined function *score_lm_1* to make predictions (score data) using the data set and model passed in as arguments. It returns the predictions as a DataFrame object.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the embedded Python execution function oml.row_apply to run a user-defined function on chunks of rows, which is useful to perform scoring in parallel for native Python models. In this example, we pass the function to row_apply as a Python function object.

\n

Define the user-defined function score_lm_1 to make predictions (score data) using the data set and model passed in as arguments. It returns the predictions as a DataFrame object.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-432540894","id":"20210302-002652_2111088335","dateCreated":"2021-01-11T19:46:53+0000","dateStarted":"2021-03-02T19:23:30+0000","dateFinished":"2021-03-02T19:23:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:64"},{"text":"%python\n\ndef score_lm_1(dat, model):\n import pandas as pd\n from sklearn import linear_model\n pred = model.predict(dat[[\"PETAL_WIDTH\"]])\n return pd.concat([dat[['SPECIES', 'PETAL_LENGTH']], \n pd.DataFrame(pred, columns=['PRED_PETAL_LENGTH'])], axis=1)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_-406771513","id":"20210302-002652_942174813","dateCreated":"2021-01-11T19:47:49+0000","dateStarted":"2021-03-02T19:23:30+0000","dateFinished":"2021-03-02T19:23:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:65"},{"text":"%md\n.\nUse ***row_apply*** to invoke this user-defined function and return a single OML DataFrame proxy object as the result. The ***row_apply*** function takes as arguments the proxy object *IRIS*, that we want 10 rows scored at a time (resulting in 15 function invocations), the user-defined function, the linear model object, and that we want the result to be returned as a single table by specifying the table definition.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use row_apply to invoke this user-defined function and return a single OML DataFrame proxy object as the result. The row_apply function takes as arguments the proxy object IRIS, that we want 10 rows scored at a time (resulting in 15 function invocations), the user-defined function, the linear model object, and that we want the result to be returned as a single table by specifying the table definition.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-337977985","id":"20210302-002652_861421810","dateCreated":"2021-01-11T19:49:42+0000","dateStarted":"2021-03-02T19:23:31+0000","dateFinished":"2021-03-02T19:23:31+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:66"},{"text":"%python\n\nres = oml.row_apply(IRIS, rows=10, func=score_lm_1, model=mod, \n func_value=pd.DataFrame([('a', 1, 1)], \n columns=['SPECIES', 'PETAL_LENGTH', 'PRED_PETAL_LENGTH']))\nres.head()\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:31+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" SPECIES PETAL_LENGTH PRED_PETAL_LENGTH\n0 setosa 1.3 1.75254\n1 setosa 1.3 1.75254\n2 setosa 1.4 1.75254\n3 setosa 1.4 1.75254\n4 setosa 1.4 1.75254\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_748178086","id":"20210302-002652_1527165174","dateCreated":"2021-01-11T19:50:25+0000","dateStarted":"2021-03-02T19:23:32+0000","dateFinished":"2021-03-02T19:23:34+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:67"},{"title":"Step 4: Build one model per Species using the group_apply function","text":"%md\n\nThis step shows how to use the ***oml.group_apply*** function for model building. The ***group_apply*** apply function passes the OML DataFrame specified by the data argument to the user-defined func function as its first argument. The index argument specifies the columns of oml.DataFrame by which the database groups the data for processing by the user-defined Python function. The ***group_apply*** function can use data-parallel execution, in which one or more Python engines perform the same Python function on different groups of data.\n\nIn this step, you build three models, one specific to each species and return them as a dictionary. These models are indexed by their corresponding index value.\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:34+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to use the oml.group_apply function for model building. The group_apply apply function passes the OML DataFrame specified by the data argument to the user-defined func function as its first argument. The index argument specifies the columns of oml.DataFrame by which the database groups the data for processing by the user-defined Python function. The group_apply function can use data-parallel execution, in which one or more Python engines perform the same Python function on different groups of data.

\n

In this step, you build three models, one specific to each species and return them as a dictionary. These models are indexed by their corresponding index value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_632144300","id":"20210302-002652_54298503","dateCreated":"2021-01-11T19:51:46+0000","dateStarted":"2021-03-02T19:23:35+0000","dateFinished":"2021-03-02T19:23:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:68"},{"text":"%python\n\ndef build_lm_g(dat):\n import oml\n from sklearn import linear_model\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n mod = lm.fit(X, y)\n return mod\n\nmod = oml.group_apply(IRIS[:,[\"PETAL_LENGTH\",\"PETAL_WIDTH\",\"SPECIES\"]], \n index=oml.DataFrame(IRIS['SPECIES']), \n func=build_lm_g, \n parallel=2)\n \nprint(\"Type:\",type(mod))\nmod\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Type: \n{'virginica': LinearRegression(), 'setosa': LinearRegression(), 'versicolor': LinearRegression()}\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1163536454","id":"20210302-002652_2029893415","dateCreated":"2021-01-11T19:52:40+0000","dateStarted":"2021-03-02T19:23:35+0000","dateFinished":"2021-03-02T19:23:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:69"},{"text":"%md\n.\nModify the user-defined function to save the resulting model in the same named datastore. A datastore allows storing Python objects in the database under a provided name. The stored Python object assumes the variable name assigned in the Python environment. Here, we construct a name concatenating *mod_* as a prefix and the corresponding Species value.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Modify the user-defined function to save the resulting model in the same named datastore. A datastore allows storing Python objects in the database under a provided name. The stored Python object assumes the variable name assigned in the Python environment. Here, we construct a name concatenating mod_ as a prefix and the corresponding Species value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-388605700","id":"20210302-002652_156444442","dateCreated":"2021-01-11T19:54:32+0000","dateStarted":"2021-03-02T19:23:37+0000","dateFinished":"2021-03-02T19:23:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:70"},{"text":"%python\n\ndef build_lm_2(dat, dsname):\n import oml\n from sklearn import linear_model\n lm = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n lm.fit(X, y)\n name = \"mod_\" + dat.loc[dat.index[0],'SPECIES']\n oml.ds.save(objs = {name: lm}, name=dsname, append=True) \n return name\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_1892086439","id":"20210302-002652_1740416966","dateCreated":"2021-01-11T19:57:07+0000","dateStarted":"2021-03-02T19:23:38+0000","dateFinished":"2021-03-02T19:23:38+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:71"},{"text":"%md\n.\nUse ***group_apply*** to invoke the user-defined function and list the resulting models, which are a dictionary of three elements each assigned the model object name. The ***group_apply*** function takes the data, the index parameter that specifies the column or columns to partition on, the user-defined function, and that we wish to automatically connect to the database from the Python engine. Connecting to the database is necessary when using the datastore functionality.\n\nNote, if the datastore exists, then delete it so that the ***group_apply*** function completes successfully. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:38+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use group_apply to invoke the user-defined function and list the resulting models, which are a dictionary of three elements each assigned the model object name. The group_apply function takes the data, the index parameter that specifies the column or columns to partition on, the user-defined function, and that we wish to automatically connect to the database from the Python engine. Connecting to the database is necessary when using the datastore functionality.

\n

Note, if the datastore exists, then delete it so that the group_apply function completes successfully.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1419333425","id":"20210302-002652_14357513","dateCreated":"2021-01-11T19:59:30+0000","dateStarted":"2021-03-02T19:23:39+0000","dateFinished":"2021-03-02T19:23:39+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:72"},{"text":"%python\n\ntry:\n oml.ds.delete('ds-1')\nexcept:\n print(\"Datastore not found\")\n\nres = oml.group_apply(IRIS[:,[\"PETAL_LENGTH\",\"PETAL_WIDTH\",\"SPECIES\"]], \n index=oml.DataFrame(IRIS['SPECIES']), \n func=build_lm_2, dsname=\"ds-1\")\n\nprint(\"Outcome:\",res)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:39+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Outcome: {'virginica': 'mod_virginica', 'setosa': 'mod_setosa', 'versicolor': 'mod_versicolor'}\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1299417018","id":"20210302-002652_361422778","dateCreated":"2021-01-11T20:00:33+0000","dateStarted":"2021-03-02T19:23:39+0000","dateFinished":"2021-03-02T19:23:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:73"},{"text":"%md\n.\nHere, the model object names are *mod_versicolor*, *mod_virginica*, and *mod_setosa*. When you load the datastore, you get the three models loaded into the client Python engine, assigned to their respective variables.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Here, the model object names are mod_versicolor, mod_virginica, and mod_setosa. When you load the datastore, you get the three models loaded into the client Python engine, assigned to their respective variables.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1792606588","id":"20210302-002652_91308518","dateCreated":"2021-01-11T20:02:14+0000","dateStarted":"2021-03-02T19:23:45+0000","dateFinished":"2021-03-02T19:23:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:74"},{"title":"Try it yourself","text":"%md\n\nUse the ***group_apply*** function to count the number of each species in the data set.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the group_apply function to count the number of each species in the data set.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_281288725","id":"20210302-002652_124863513","dateCreated":"2021-01-11T20:06:56+0000","dateStarted":"2021-03-02T19:23:46+0000","dateFinished":"2021-03-02T19:23:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:75"},{"text":"%python\n\n# Insert code here\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_1851522511","id":"20210302-002652_1607623586","dateCreated":"2021-01-11T20:07:51+0000","dateStarted":"2021-03-02T19:23:46+0000","dateFinished":"2021-03-02T19:23:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:76"},{"title":"Step 5: Invoke a function N times","text":"%md\n\nThe ***index_apply*** function allows the same function to be invoked a specified number of times. The first argument to the user-defined function is an index number for the function execution. For example, if the ***times*** argument is 10, each function invocation will receive a distinct value between 1 and 10. This can be used, e.g., for selecting behavior within the function or setting a random seed for Monte Carlo analysis.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

The index_apply function allows the same function to be invoked a specified number of times. The first argument to the user-defined function is an index number for the function execution. For example, if the times argument is 10, each function invocation will receive a distinct value between 1 and 10. This can be used, e.g., for selecting behavior within the function or setting a random seed for Monte Carlo analysis.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_41349087","id":"20210302-002652_484835565","dateCreated":"2021-01-11T20:05:15+0000","dateStarted":"2021-03-02T19:23:47+0000","dateFinished":"2021-03-02T19:23:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:77"},{"text":"%python\n\ndef compute_random_mean(index):\n import numpy as np\n import scipy\n from statistics import mean \n np.random.seed(index)\n res = np.random.random((100,1))*10\n return mean(res[1])\n \nprint(\"Test: \", compute_random_mean(3))\n\nres = oml.index_apply(times=12, func=compute_random_mean)\nres\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Test: 7.081478226181048\n[7.203244934421581, 0.25926231827891333, 7.081478226181048, 5.4723224917572235, 8.707323061773764, 3.3197980530117723, 7.7991879224011464, 9.68540662820932, 5.018745921487388, 0.207519493594015, 0.19475241487624584, 7.400496965154048]\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1049996132","id":"20210302-002652_328670438","dateCreated":"2021-01-11T20:06:34+0000","dateStarted":"2021-03-02T19:23:48+0000","dateFinished":"2021-03-02T19:23:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:78"},{"title":"Step 6: Return multiple images from Embedded Python Execution","text":"%md\n\nThis step shows how to create a function *RandomRedDots* that creates and returns a simple DataFrame and generates two scatterplots of random red dots. First, create *RandomRedDots* and save it in the Python Script Repository, and then define and run the native Python function.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

This step shows how to create a function RandomRedDots that creates and returns a simple DataFrame and generates two scatterplots of random red dots. First, create RandomRedDots and save it in the Python Script Repository, and then define and run the native Python function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-861244375","id":"20210302-002652_508285697","dateCreated":"2021-01-11T20:11:27+0000","dateStarted":"2021-03-02T19:23:49+0000","dateFinished":"2021-03-02T19:23:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:79"},{"text":"%python\n\nRandomRedDots = \"\"\"def RandomRedDots (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n plt.scatter(range(0,num_dots_1), np.random.rand(100),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n plt.scatter(range(0,num_dots_2), np.random.rand(10),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n return df\"\"\"\n\n\noml.script.create(\"RandomRedDots\", func=RandomRedDots, is_global=True, overwrite=True)\n\nprint(RandomRedDots)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"def RandomRedDots (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n plt.scatter(range(0,num_dots_1), np.random.rand(100),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n plt.scatter(range(0,num_dots_2), np.random.rand(10),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n return df\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-681100817","id":"20210302-002652_1388866585","dateCreated":"2021-01-11T20:38:19+0000","dateStarted":"2021-03-02T19:23:49+0000","dateFinished":"2021-03-02T19:23:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:80"},{"text":"%python\n\ndef RandomRedDots (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n plt.scatter(range(0,num_dots_1), np.random.rand(100),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n plt.scatter(range(0,num_dots_2), np.random.rand(10),c='r')\n plt.title(\"Random Red Dots\")\n plt.show()\n return df","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_-167802659","id":"20210302-002652_2122706885","dateCreated":"2021-01-18T04:06:24+0000","dateStarted":"2021-03-02T19:23:50+0000","dateFinished":"2021-03-02T19:23:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:81"},{"text":"%python\n\nRandomRedDots()","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"},{"type":"HTML","data":"
\n id val\n0 1 0.01\n1 2 0.02\n2 3 0.03\n3 4 0.04\n4 5 0.05\n5 6 0.06\n6 7 0.07\n7 8 0.08\n8 9 0.09\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1841709555","id":"20210302-002652_1440656607","dateCreated":"2021-01-18T04:06:36+0000","dateStarted":"2021-03-02T19:23:51+0000","dateFinished":"2021-03-02T19:23:52+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:82"},{"text":"%md\n.\nUse the ***oml.do_eval*** function to invoke the function *RandomRedDots*. The ***do_eval*** function does not automatically pass data to the function, it merely invokes it. Here, we show accepting the default argument values for *RandomRedDots*.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:52+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.do_eval function to invoke the function RandomRedDots. The do_eval function does not automatically pass data to the function, it merely invokes it. Here, we show accepting the default argument values for RandomRedDots.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_757411827","id":"20210302-002652_357416638","dateCreated":"2021-01-18T03:41:30+0000","dateStarted":"2021-03-02T19:23:53+0000","dateFinished":"2021-03-02T19:23:53+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:83"},{"text":"%python\n\nres = oml.do_eval(func=\"RandomRedDots\")\nprint(\"Type: \", type(res))\n\nres\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:53+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"},{"type":"HTML","data":"
\nType: \n id val\n0 1 0.01\n1 2 0.02\n2 3 0.03\n3 4 0.04\n4 5 0.05\n5 6 0.06\n6 7 0.07\n7 8 0.08\n8 9 0.09\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_258310273","id":"20210302-002652_83140778","dateCreated":"2021-01-18T03:42:53+0000","dateStarted":"2021-03-02T19:23:53+0000","dateFinished":"2021-03-02T19:23:54+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:84"},{"text":"%md\n.\nIn this next example, we modify the function to use subplots, thereby creating separate figure objects for the scatter plots. Store this in the script repository as *RandomRedDots2* and invoke the function to see the results. As expected, you get both plots.\n\nNote, when you call *RandomRedDots2* using embedded Python execution, you will get both plots as shown in the result.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
In this next example, we modify the function to use subplots, thereby creating separate figure objects for the scatter plots. Store this in the script repository as RandomRedDots2 and invoke the function to see the results. As expected, you get both plots.

\n

Note, when you call RandomRedDots2 using embedded Python execution, you will get both plots as shown in the result.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_596172479","id":"20210302-002652_1440648246","dateCreated":"2021-01-18T04:05:28+0000","dateStarted":"2021-03-02T19:23:55+0000","dateFinished":"2021-03-02T19:23:55+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:85"},{"text":"%md\n.\nDefine the *RandomRedDots2* function that generates two scatter plots, and returns a 2 column DataFrame. Note that we can pass arguments to these functions, here, *num_dots_1* and *num_dots_2*.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:55+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the RandomRedDots2 function that generates two scatter plots, and returns a 2 column DataFrame. Note that we can pass arguments to these functions, here, num_dots_1 and num_dots_2.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1629825012","id":"20210302-002652_1967548934","dateCreated":"2021-01-18T03:47:00+0000","dateStarted":"2021-03-02T19:23:56+0000","dateFinished":"2021-03-02T19:23:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:86"},{"text":"%python\n\nRandomRedDots2 = \"\"\"def RandomRedDots2 (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n fig = plt.figure(1)\n ax = fig.add_subplot(111)\n ax.scatter(range(0,num_dots_1), np.random.rand(num_dots_1),c='r')\n fig.suptitle(\"Random Red Dots\")\n\n fig2 = plt.figure(2)\n ax2 = fig2.add_subplot(111)\n ax2.scatter(range(0,num_dots_2), np.random.rand(num_dots_2),c='r')\n fig2.suptitle(\"Random Red Dots\")\n return df\"\"\"\n\noml.script.create(\"RandomRedDots2\", func=RandomRedDots2, is_global=True, overwrite=True)\n\nprint(RandomRedDots2)\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"def RandomRedDots2 (num_dots_1 = 100, num_dots_2 = 10):\n import numpy as np\n import pandas as pd\n import matplotlib.pyplot as plt\n d = {'id': range(1,10), 'val': [x/100 for x in range(1,10)]}\n df = pd.DataFrame(data=d)\n fig = plt.figure(1)\n ax = fig.add_subplot(111)\n ax.scatter(range(0,num_dots_1), np.random.rand(num_dots_1),c='r')\n fig.suptitle(\"Random Red Dots\")\n fig2 = plt.figure(2)\n ax2 = fig2.add_subplot(111)\n ax2.scatter(range(0,num_dots_2), np.random.rand(num_dots_2),c='r')\n fig2.suptitle(\"Random Red Dots\")\n return df\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-2044529524","id":"20210302-002652_218534494","dateCreated":"2021-01-18T03:48:08+0000","dateStarted":"2021-03-02T19:23:56+0000","dateFinished":"2021-03-02T19:23:56+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:87"},{"text":"%md\n.\nUse the ***oml.do_eval*** function to call the function *RandomRedDots2*. In this invocation, we're specifying arguments to do_eval for *num_dots_1* and *num_dots_2*. These are specified as you would any other argument to ***do_eval***. This applies to the other embedded Python functions as well.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.do_eval function to call the function RandomRedDots2. In this invocation, we're specifying arguments to do_eval for num_dots_1 and num_dots_2. These are specified as you would any other argument to do_eval. This applies to the other embedded Python functions as well.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1863504271","id":"20210302-002652_752255652","dateCreated":"2021-01-18T03:43:33+0000","dateStarted":"2021-03-02T19:23:57+0000","dateFinished":"2021-03-02T19:23:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:88"},{"text":"%python\n\nres = oml.do_eval(func=\"RandomRedDots2\", num_dots_1 = 600, num_dots_2 = 200)\ntype(res)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\n"},{"type":"HTML","data":"
\n
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1790323357","id":"20210302-002652_231216180","dateCreated":"2021-01-18T03:44:11+0000","dateStarted":"2021-03-02T19:23:58+0000","dateFinished":"2021-03-02T19:23:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:89"},{"title":"Step 7: Using the Python script repository","text":"%md\n\nOML4Py stores named user-defined functions called scripts in the script repository. You can make scripts either private or global. A private script is available only to the owner. A global script is available to any user. For private scripts, the owner of the script may grant the read privilege to other users or revoke that privilege.\n\nTo illustrate using the Python Script Repository, you will define a function *build_lm_str* that will fit a regression model. Using this function, you will then create a script named *MyLM_function*.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

OML4Py stores named user-defined functions called scripts in the script repository. You can make scripts either private or global. A private script is available only to the owner. A global script is available to any user. For private scripts, the owner of the script may grant the read privilege to other users or revoke that privilege.

\n

To illustrate using the Python Script Repository, you will define a function build_lm_str that will fit a regression model. Using this function, you will then create a script named MyLM_function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-355652399","id":"20210302-002652_1268275665","dateCreated":"2021-01-18T01:54:21+0000","dateStarted":"2021-03-02T19:23:59+0000","dateFinished":"2021-03-02T19:23:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:90"},{"text":"%md\n.\nTo store a user-defined function in the script repository, it must be presented as a named string. Define the function as a string, *build_lm_str*. Note the use of triple quotes to enable formatting. ","user":"OMLUSER02","dateUpdated":"2021-03-02T19:23:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
To store a user-defined function in the script repository, it must be presented as a named string. Define the function as a string, build_lm_str. Note the use of triple quotes to enable formatting.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1478764420","id":"20210302-002652_1924507294","dateCreated":"2021-01-18T02:07:51+0000","dateStarted":"2021-03-02T19:24:00+0000","dateFinished":"2021-03-02T19:24:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:91"},{"text":"%python\n\nbuild_lm_str = \"\"\"def build_lm_str(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n import pandas as pd\n dat = pd.get_dummies(dat, drop_first=True)\n X = dat[[\"SEPAL_WIDTH\", \"PETAL_LENGTH\", \"PETAL_WIDTH\", \"SPECIES_versicolor\", \"SPECIES_virginica\"]]\n y = dat[[\"SEPAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\"\"\"","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_1696734346","id":"20210302-002652_1785649614","dateCreated":"2021-01-18T02:07:33+0000","dateStarted":"2021-03-02T19:24:01+0000","dateFinished":"2021-03-02T19:24:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:92"},{"text":"%md\n.\nView the string that you just created.\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
View the string that you just created.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_380592441","id":"20210302-002652_659167491","dateCreated":"2021-01-18T02:06:45+0000","dateStarted":"2021-03-02T19:24:01+0000","dateFinished":"2021-03-02T19:24:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:93"},{"text":"%python\n\nprint(build_lm_str)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"def build_lm_str(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n import pandas as pd\n dat = pd.get_dummies(dat, drop_first=True)\n X = dat[[\"SEPAL_WIDTH\", \"PETAL_LENGTH\", \"PETAL_WIDTH\", \"SPECIES_versicolor\", \"SPECIES_virginica\"]]\n y = dat[[\"SEPAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1947866009","id":"20210302-002652_781552362","dateCreated":"2021-01-18T02:09:27+0000","dateStarted":"2021-03-02T19:24:02+0000","dateFinished":"2021-03-02T19:24:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:94"},{"title":"Step 8: Create scripts in the repository","text":"%md\nUse the function ***oml.script.create*** to create a script *MyLM_function*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the function oml.script.create to create a script MyLM_function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-353403783","id":"20210302-002652_1900763376","dateCreated":"2021-01-18T02:10:27+0000","dateStarted":"2021-03-02T19:24:03+0000","dateFinished":"2021-03-02T19:24:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:95"},{"text":"%md\n.\nYou can use the ***oml.script.drop*** function to drop a named script, here shown in a try-except block. Then, use the ***oml.script.create*** function to create the script *MyLM_function*. Note that we have the *overwrite* argument set to *True* in case the function already exists.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
You can use the oml.script.drop function to drop a named script, here shown in a try-except block. Then, use the oml.script.create function to create the script MyLM_function. Note that we have the overwrite argument set to True in case the function already exists.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_891153271","id":"20210302-002652_1836539838","dateCreated":"2021-01-18T02:11:22+0000","dateStarted":"2021-03-02T19:24:03+0000","dateFinished":"2021-03-02T19:24:03+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:96"},{"text":"%python\n\ntry:\n oml.script.drop(\"MyLM_function\")\nexcept:\n pass\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:03+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_-1260363838","id":"20210302-002652_436388114","dateCreated":"2021-01-18T02:11:38+0000","dateStarted":"2021-03-02T19:24:04+0000","dateFinished":"2021-03-02T19:24:04+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:97"},{"text":"%python\n\noml.script.create(\"MyLM_function\", func=build_lm_str, overwrite=True)","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:04+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_-614763519","id":"20210302-002652_407034466","dateCreated":"2021-01-18T02:12:10+0000","dateStarted":"2021-03-02T19:24:05+0000","dateFinished":"2021-03-02T19:24:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:98"},{"text":"%md\n\nList the scripts that are available only to the current user with ***oml.script.dir*** with sctype set to *user*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:05+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

List the scripts that are available only to the current user with oml.script.dir with sctype set to user.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1031024361","id":"20210302-002652_870686018","dateCreated":"2021-01-18T02:14:33+0000","dateStarted":"2021-03-02T19:24:05+0000","dateFinished":"2021-03-02T19:24:05+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:99"},{"text":"%python\n\noml.script.dir(sctype='user')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" name ... date\n0 MyLM_function ... 2021-03-02 19:24:05\n1 MyTEST_function ... 2021-03-02 01:13:23\n\n[2 rows x 4 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1977845062","id":"20210302-002652_1681436207","dateCreated":"2021-01-18T02:15:16+0000","dateStarted":"2021-03-02T19:24:06+0000","dateFinished":"2021-03-02T19:24:06+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:100"},{"text":"%md\n.\nGrant the read privilege on the *MyLM_function* script to user OMLUSER with ***oml.grant***. Notice that the type is specified as *pyqscript*. This same function is used to grant privileges on datastores. \n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:06+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Grant the read privilege on the MyLM_function script to user OMLUSER with oml.grant. Notice that the type is specified as pyqscript. This same function is used to grant privileges on datastores.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1904303260","id":"20210302-002652_1748953579","dateCreated":"2021-01-18T02:15:39+0000","dateStarted":"2021-03-02T19:24:07+0000","dateFinished":"2021-03-02T19:24:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:101"},{"text":"%python\n\noml.grant(name=\"MyLM_function\", typ=\"pyqscript\", user=\"OMLUSER\")","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_1655578581","id":"20210302-002652_1713483588","dateCreated":"2021-01-18T02:16:03+0000","dateStarted":"2021-03-02T19:24:08+0000","dateFinished":"2021-03-02T19:24:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:102"},{"text":"%md\n.\nList the scripts to which the read privilege has been granted using ***oml.script.dir*** and *sctype* set to *grant*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the scripts to which the read privilege has been granted using oml.script.dir and sctype set to grant.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_2008138893","id":"20210302-002652_2041651535","dateCreated":"2021-01-18T02:16:21+0000","dateStarted":"2021-03-02T19:24:09+0000","dateFinished":"2021-03-02T19:24:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:103"},{"text":"%python\n\noml.script.dir(sctype=\"grant\")\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" name grantee\n0 MyLM_function OMLUSER\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1579532065","id":"20210302-002652_1490657664","dateCreated":"2021-01-18T02:17:13+0000","dateStarted":"2021-03-02T19:24:09+0000","dateFinished":"2021-03-02T19:24:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:104"},{"text":"%md\n.\nLoad the named function into the Python engine for use as a typical Python function using ***oml.script.load***. ","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Load the named function into the Python engine for use as a typical Python function using oml.script.load.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-433545694","id":"20210302-002652_1203206849","dateCreated":"2021-01-18T02:17:40+0000","dateStarted":"2021-03-02T19:24:10+0000","dateFinished":"2021-03-02T19:24:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:105"},{"text":"%python\n\nimport inspect\n\nMyLM_function = oml.script.load(\"MyLM_function\")\nprint(\"Type\", type(MyLM_function))\nMyLM_function.get_source()\nprint(str(MyLM_function))\nprint(MyLM_function.get_source().read())\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Type \n\ndef build_lm_str(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n import pandas as pd\n dat = pd.get_dummies(dat, drop_first=True)\n X = dat[[\"SEPAL_WIDTH\", \"PETAL_LENGTH\", \"PETAL_WIDTH\", \"SPECIES_versicolor\", \"SPECIES_virginica\"]]\n y = dat[[\"SEPAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-241116970","id":"20210302-002652_747091708","dateCreated":"2021-01-18T02:18:07+0000","dateStarted":"2021-03-02T19:24:11+0000","dateFinished":"2021-03-02T19:24:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:106"},{"text":"%md\n.\nExtract the function text string from the function object and use this to save in the script repository using ***oml.script_create***.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Extract the function text string from the function object and use this to save in the script repository using oml.script_create.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-102332584","id":"20210302-002652_1548501370","dateCreated":"2021-01-18T02:18:54+0000","dateStarted":"2021-03-02T19:24:11+0000","dateFinished":"2021-03-02T19:24:11+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:107"},{"text":"%python\n\nloaded_str = MyLM_function.get_source().read()\ntype(loaded_str)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:11+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1316538850","id":"20210302-002652_1233923794","dateCreated":"2021-01-18T02:19:11+0000","dateStarted":"2021-03-02T19:24:12+0000","dateFinished":"2021-03-02T19:24:12+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:108"},{"text":"%python\n\noml.script.create(\"MyTEST_function\", func=loaded_str, overwrite=True)","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:12+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_2022489904","id":"20210302-002652_898704464","dateCreated":"2021-01-19T01:58:20+0000","dateStarted":"2021-03-02T19:24:13+0000","dateFinished":"2021-03-02T19:24:13+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:109"},{"text":"%md\n\nUse the function ***oml.script.dir*** to list all the available scripts.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:13+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Use the function oml.script.dir to list all the available scripts.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_909356291","id":"20210302-002652_607147080","dateCreated":"2021-01-18T02:19:45+0000","dateStarted":"2021-03-02T19:24:14+0000","dateFinished":"2021-03-02T19:24:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:110"},{"text":"%python\n\noml.script.dir(sctype=\"all\")\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" owner name ... description date\n0 OMLUSER02 MyLM_function ... None 2021-03-02 19:24:05\n1 OMLUSER02 MyTEST_function ... None 2021-03-02 19:24:13\n2 PYQSYS RandomRedDots ... None 2021-03-02 19:23:49\n3 PYQSYS RandomRedDots2 ... None 2021-03-02 19:23:56\n\n[4 rows x 5 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_1105985058","id":"20210302-002652_449414693","dateCreated":"2021-01-18T02:20:01+0000","dateStarted":"2021-03-02T19:24:14+0000","dateFinished":"2021-03-02T19:24:14+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:111"},{"text":"%md\n.\nInvoke ***table_apply*** on *build_lm_str* and *loaded_str*. Recall that these strings represent the same function - *build_lm_str* was saved to the script repository after assigning the function to a string object. *loaded_str* is the string representation of the function extracted using ***get_source().read()***.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Invoke table_apply on build_lm_str and loaded_str. Recall that these strings represent the same function - build_lm_str was saved to the script repository after assigning the function to a string object. loaded_str is the string representation of the function extracted using get_source().read().

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-187454340","id":"20210302-002652_849072400","dateCreated":"2021-01-21T00:39:42+0000","dateStarted":"2021-03-02T19:24:15+0000","dateFinished":"2021-03-02T19:24:15+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:112"},{"text":"%python\n\nmod1 = oml.table_apply(data=IRIS, func = build_lm_str)\nmod1.coef_\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:15+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"array([[ 0.49588894, 0.82924391, -0.31515517, -0.72356196, -1.02349781]])\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-377564699","id":"20210302-002652_236241079","dateCreated":"2021-01-21T00:41:21+0000","dateStarted":"2021-03-02T19:24:16+0000","dateFinished":"2021-03-02T19:24:16+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:113"},{"text":"%python\n\nmod2 = oml.table_apply(data=IRIS, func = loaded_str)\nmod2.coef_","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"array([[ 0.49588894, 0.82924391, -0.31515517, -0.72356196, -1.02349781]])\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-204488506","id":"20210302-002652_673204009","dateCreated":"2021-01-21T00:43:16+0000","dateStarted":"2021-03-02T19:24:17+0000","dateFinished":"2021-03-02T19:24:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:114"},{"title":"Step 9: Store a function as a global function","text":"%md\n\nA global function is one that can be accessed by any user.\n\nIn this step, you will define and save a global function *build_lm3*. You will then call function *build_lm3* to build another model.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

A global function is one that can be accessed by any user.

\n

In this step, you will define and save a global function build_lm3. You will then call function build_lm3 to build another model.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-930880299","id":"20210302-002652_2114847910","dateCreated":"2021-01-18T02:20:18+0000","dateStarted":"2021-03-02T19:24:17+0000","dateFinished":"2021-03-02T19:24:17+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:115"},{"text":"%md\n.\nDefine the function *build_lm3* as a named string and save it to the script repository.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the function build_lm3 as a named string and save it to the script repository.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_-1746516217","id":"20210302-002652_317802790","dateCreated":"2021-01-18T02:21:19+0000","dateStarted":"2021-03-02T19:24:18+0000","dateFinished":"2021-03-02T19:24:18+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:116"},{"text":"%python\n\nbuild_lm3 = \"\"\"def build_lm3(dat):\n from sklearn import linear_model\n regr = linear_model.LinearRegression()\n X = dat[[\"PETAL_WIDTH\"]]\n y = dat[[\"PETAL_LENGTH\"]]\n regr.fit(X, y)\n return regr\"\"\"\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:18+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_-1496533563","id":"20210302-002652_977810103","dateCreated":"2021-01-18T02:21:31+0000","dateStarted":"2021-03-02T19:24:19+0000","dateFinished":"2021-03-02T19:24:19+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:117"},{"text":"%python\n\noml.script.create(\"MyGlobalLM_function\", func=build_lm3, is_global=True, overwrite=True)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812115_1780780790","id":"20210302-002652_284894168","dateCreated":"2021-01-18T03:06:57+0000","dateStarted":"2021-03-02T19:24:20+0000","dateFinished":"2021-03-02T19:24:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:118"},{"text":"%md\n.\nUse the ***oml.table_apply*** function to invoke this function with the *IRIS* table. The ***oml.table_apply*** function spawns a Python engine, loads the specified user-defined function, and passes the data referenced by the *IRIS* proxy object as a pandas DataFrame in the first argument of the user-defined function. The resulting scikit-learn linear model is returned in *res*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.table_apply function to invoke this function with the IRIS table. The oml.table_apply function spawns a Python engine, loads the specified user-defined function, and passes the data referenced by the IRIS proxy object as a pandas DataFrame in the first argument of the user-defined function. The resulting scikit-learn linear model is returned in res.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_170273484","id":"20210302-002652_517877333","dateCreated":"2021-01-18T02:22:18+0000","dateStarted":"2021-03-02T19:24:20+0000","dateFinished":"2021-03-02T19:24:20+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:119"},{"text":"%python\n\nres = oml.table_apply(IRIS, func=\"MyGlobalLM_function\", oml_input_type=\"pandas.DataFrame\")\nprint(res)\nprint(res.coef_)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:20+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"LinearRegression()\n[[2.2299405]]\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_196331479","id":"20210302-002652_108985553","dateCreated":"2021-01-18T02:22:35+0000","dateStarted":"2021-03-02T19:24:21+0000","dateFinished":"2021-03-02T19:24:21+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:120"},{"title":"Step 10: Drop scripts from the repository","text":"%md\n\nIn this step, you will perform the following:\n\n* Drop one of the private scripts\n* Drop the global script\n* List the available scripts again","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:21+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this step, you will perform the following:

\n
    \n
  • Drop one of the private scripts
  • \n
  • Drop the global script
  • \n
  • List the available scripts again
  • \n
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_2075604186","id":"20210302-002652_2111355683","dateCreated":"2021-01-18T02:22:54+0000","dateStarted":"2021-03-02T19:24:22+0000","dateFinished":"2021-03-02T19:24:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:121"},{"text":"%md\n.\nFirst drop the private script *MyLM_function*, then drop the global script *MyGlobalML_function*, and finally list the available scripts.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
First drop the private script MyLM_function, then drop the global script MyGlobalML_function, and finally list the available scripts.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_832097555","id":"20210302-002652_880059043","dateCreated":"2021-01-18T02:23:37+0000","dateStarted":"2021-03-02T19:24:22+0000","dateFinished":"2021-03-02T19:24:22+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:122"},{"text":"%python\n\noml.script.drop(\"MyLM_function\")\noml.script.drop(\"MyGlobalLM_function\", is_global=True)\noml.script.dir(sctype=\"all\")\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:22+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":false},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":" owner name ... description date\n0 OMLUSER02 MyTEST_function ... None 2021-03-02 19:24:13\n1 PYQSYS RandomRedDots ... None 2021-03-02 19:23:49\n2 PYQSYS RandomRedDots2 ... None 2021-03-02 19:23:56\n\n[3 rows x 5 columns]\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_469628395","id":"20210302-002652_1538760446","dateCreated":"2021-01-18T02:23:36+0000","dateStarted":"2021-03-02T19:24:23+0000","dateFinished":"2021-03-02T19:24:23+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:123"},{"text":"%md\n\n# End of Script\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:23+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812115_849895588","id":"20210302-002652_710830381","dateCreated":"2021-01-11T20:58:16+0000","dateStarted":"2021-03-02T19:24:24+0000","dateFinished":"2021-03-02T19:24:24+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:124"},{"text":"%md\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:24:24+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812115_-226843444","id":"20210302-002652_308797158","dateCreated":"2021-01-11T23:19:23+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:125"}],"name":"Lab 5: OML4Py Embedded Python Execution","id":"40629","noteParams":{},"noteForms":{},"angularObjects":{"ORA7A60DC9B32:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 6 OML4Py AutoML.json b/machine-learning/labs/oml4py-live-labs/Lab 6 OML4Py AutoML.json deleted file mode 100644 index cab1b5a2..00000000 --- a/machine-learning/labs/oml4py-live-labs/Lab 6 OML4Py AutoML.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nAutoML (Automatic Machine Learning) provides built-in data science expertise about data analytics and modeling that you can employ to build machine learning models. \n\nIn this lab, we highlight the AutoML workflow using OML4Py:\n\n* Automatic algorithm selection - identify the most appropriate algorithm\n* Automatic feature selection - select the features (predictors) that best support that algorithm\n* Automatic model tuning - tune the model using algorithm hyperparameters and the selected features\n* Automatic model selection - identify the most appropriate algorithm and tune the model in a single step\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER","dateUpdated":"2021-02-24T21:56:55+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

AutoML (Automatic Machine Learning) provides built-in data science expertise about data analytics and modeling that you can employ to build machine learning models.

\n

In this lab, we highlight the AutoML workflow using OML4Py:

\n
    \n
  • Automatic algorithm selection - identify the most appropriate algorithm
  • \n
  • Automatic feature selection - select the features (predictors) that best support that algorithm
  • \n
  • Automatic model tuning - tune the model using algorithm hyperparameters and the selected features
  • \n
  • Automatic model selection - identify the most appropriate algorithm and tune the model in a single step
  • \n
\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_221556374","id":"20210224-211339_148106411","dateCreated":"2021-01-11T17:42:39+0000","dateStarted":"2021-02-24T21:56:56+0000","dateFinished":"2021-02-24T21:56:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:22"},{"title":"Step 1: Import the OML4Py and supporting libraries","text":"%md\n\nImport the *oml* package, *Pandas* package, and *automl* module.","user":"OMLUSER","dateUpdated":"2021-02-24T21:56:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Import the oml package, Pandas package, and automl module.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-1507520381","id":"20210224-211339_742285688","dateCreated":"2021-01-11T21:41:23+0000","dateStarted":"2021-02-24T21:56:58+0000","dateFinished":"2021-02-24T21:56:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:23"},{"text":"%python\n\nimport pandas as pd\nimport oml\nfrom oml import automl\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:56:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219696_1148333566","id":"20210224-211339_767246765","dateCreated":"2021-01-11T21:46:41+0000","dateStarted":"2021-02-24T21:56:59+0000","dateFinished":"2021-02-24T21:57:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:24"},{"text":"%md\n.\nUse the ***oml.sync*** function to create an OML Dataframe as a proxy for the database table *WINE*.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:57:07+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.sync function to create an OML Dataframe as a proxy for the database table WINE.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_1189461541","id":"20210224-211339_403679307","dateCreated":"2021-01-11T21:45:11+0000","dateStarted":"2021-02-24T21:57:08+0000","dateFinished":"2021-02-24T21:57:08+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:25"},{"text":"%python\n\nWINE = oml.sync(table = \"WINE\")\nprint(WINE.shape)\nprint(WINE.dtypes)","user":"OMLUSER","dateUpdated":"2021-02-24T21:57:08+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(178, 14)\nalcohol \nmalic_acid \nash \nalcalinity_of_ash \nmagnesium \ntotal_phenols \nflavanoids \nnonflavanoid_phenols \nproanthocyanins \ncolor_intensity \nhue \nod280/od315_of_diluted_wines \nproline \ntarget \ndtype: object\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-1706513726","id":"20210224-211339_254716245","dateCreated":"2021-01-18T16:55:30+0000","dateStarted":"2021-02-24T21:57:08+0000","dateFinished":"2021-02-24T21:57:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:26"},{"title":"Step 2: Automatic algorithm selection","text":"%md\n\nPrepare the wine data set by separating predictors from the target as conventional for Python model building. This produces two new proxy objects that will be used in AutoML functions.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:57:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Prepare the wine data set by separating predictors from the target as conventional for Python model building. This produces two new proxy objects that will be used in AutoML functions.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-1683593003","id":"20210224-211339_1355033705","dateCreated":"2021-01-11T21:50:51+0000","dateStarted":"2021-02-24T21:57:09+0000","dateFinished":"2021-02-24T21:57:09+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:27"},{"text":"%python\n\nWINE_X_cl,WINE_y_cl = WINE.drop('target'), WINE['target']\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:57:09+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219696_690437826","id":"20210224-211339_663075317","dateCreated":"2021-01-11T23:29:52+0000","dateStarted":"2021-02-24T21:57:10+0000","dateFinished":"2021-02-24T21:57:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:28"},{"text":"%md\n.\nUse AutoML to select the top classification algorithms for predicting the WINE data target. Display the top ranked algorithms and their accuracy. SVM Gaussian is ranked first and we'll use that in subsequent AutoML function invocations.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:57:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use AutoML to select the top classification algorithms for predicting the WINE data target. Display the top ranked algorithms and their accuracy. SVM Gaussian is ranked first and we'll use that in subsequent AutoML function invocations.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_149189565","id":"20210224-211339_1118638270","dateCreated":"2021-01-11T23:30:08+0000","dateStarted":"2021-02-24T21:57:10+0000","dateFinished":"2021-02-24T21:57:10+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:29"},{"text":"%python\n\nas_wine_cl = automl.AlgorithmSelection(mining_function='classification', score_metric='accuracy', parallel=2)\n\nwine_alg_ranking_cl = as_wine_cl.select(WINE_X_cl, WINE_y_cl, k=4)\n\nprint(\"Ranked algorithms:\\n\", wine_alg_ranking_cl)\n\nselected_wine_alg_cl = next(iter(dict(wine_alg_ranking_cl).keys()))\nprint(\"Best algorithm: \", selected_wine_alg_cl)\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:57:10+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Ranked algorithms:\n [('svm_gaussian', 0.9825515947467167), ('svm_linear', 0.9727954971857411), ('nn', 0.9670812114714554), ('rf', 0.9495470383275262)]\nBest algorithm: svm_gaussian\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-123831727","id":"20210224-211339_942894527","dateCreated":"2021-01-11T23:30:42+0000","dateStarted":"2021-02-24T21:57:11+0000","dateFinished":"2021-02-24T21:58:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:30"},{"title":"Step 3: Automatic feature selection","text":"%md\n\nIn this step, you determine the features that best support the selected algorithm. First define a *FeatureSelection* object with score metric accuracy and then invoke the ***reduce*** function and specify the desired algorithm, in this case as determined above and stored in variable *selected_wine_alg_cl*. Also specify the train and test OML DataFrame proxy objects.\n\nThe set of selected columns is returned.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:58:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this step, you determine the features that best support the selected algorithm. First define a FeatureSelection object with score metric accuracy and then invoke the reduce function and specify the desired algorithm, in this case as determined above and stored in variable selected_wine_alg_cl. Also specify the train and test OML DataFrame proxy objects.

\n

The set of selected columns is returned.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_465239578","id":"20210224-211339_1239787956","dateCreated":"2021-01-11T23:31:05+0000","dateStarted":"2021-02-24T21:58:29+0000","dateFinished":"2021-02-24T21:58:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:31"},{"text":"%md\n.\nDefine the Feature Selection object *fs_wine_cl* and invoke reduce with the selected algorithms and *WINE* proxy objects.\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:58:29+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the Feature Selection object fs_wine_cl and invoke reduce with the selected algorithms and WINE proxy objects.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-1372994245","id":"20210224-211339_1126562668","dateCreated":"2021-01-11T23:33:33+0000","dateStarted":"2021-02-24T21:58:29+0000","dateFinished":"2021-02-24T21:58:29+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:32"},{"text":"%python\n\nfs_wine_cl = automl.FeatureSelection(mining_function = 'classification', score_metric = 'accuracy', parallel=2)\n\nselected_wine_features_cl = fs_wine_cl.reduce(selected_wine_alg_cl, WINE_X_cl, WINE_y_cl)\n\nWINE_X_reduced_cl = WINE_X_cl[:,selected_wine_features_cl]\n\nprint(\"Selected columns:\", WINE_X_reduced_cl.columns)\nprint(\"Number of columns:\")\n\"{} reduced to {}\".format(len(WINE_X_cl.columns), len(selected_wine_features_cl))\n","user":"OMLUSER","dateUpdated":"2021-02-24T21:58:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Selected columns: ['alcohol', 'ash', 'alcalinity_of_ash', 'flavanoids', 'nonflavanoid_phenols', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']\nNumber of columns:\n'13 reduced to 9'\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_187912449","id":"20210224-211339_1772563286","dateCreated":"2021-01-11T23:34:50+0000","dateStarted":"2021-02-24T21:58:30+0000","dateFinished":"2021-02-24T22:00:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:33"},{"title":"Try it Yourself","text":"%md\nTry other algorithms, such as ***svm_linear*** or ***rf*** in the first argument of the ***reduce*** function see if different columns are selected.\n","user":"OMLUSER","dateUpdated":"2021-02-24T22:00:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Try other algorithms, such as svm_linear or rf in the first argument of the reduce function see if different columns are selected.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_674874794","id":"20210224-211339_1247472968","dateCreated":"2021-01-11T23:35:26+0000","dateStarted":"2021-02-24T22:00:50+0000","dateFinished":"2021-02-24T22:00:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:34"},{"text":"%python\n\n# Insert code here\n\n\n\n","user":"OMLUSER","dateUpdated":"2021-02-24T22:00:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614201219696_-1567681544","id":"20210224-211339_781604286","dateCreated":"2021-01-11T23:39:32+0000","dateStarted":"2021-02-24T22:00:50+0000","dateFinished":"2021-02-24T22:00:50+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:35"},{"title":"Step 4: Automatic model tuning","text":"%md\n\nAt this point, you are ready to build and tune the models you want to use.\n\nFirst, define a ModelTuning object for classification. Then invoke tune to produce the tuned model using the algorithm selected above and the reduced data features.\n\nModel tuning returns a dictionary with the best model and the evaluation results of the other models tried. This also contains a list of the hyperparameter choices tried and their corresponding score.\n","user":"OMLUSER","dateUpdated":"2021-02-24T22:00:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

At this point, you are ready to build and tune the models you want to use.

\n

First, define a ModelTuning object for classification. Then invoke tune to produce the tuned model using the algorithm selected above and the reduced data features.

\n

Model tuning returns a dictionary with the best model and the evaluation results of the other models tried. This also contains a list of the hyperparameter choices tried and their corresponding score.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-430670013","id":"20210224-211339_1115956635","dateCreated":"2021-01-11T23:39:44+0000","dateStarted":"2021-02-24T22:00:51+0000","dateFinished":"2021-02-24T22:00:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:36"},{"text":"%md\n.\nDefine the model tuning object *mt_wine_cl* for classification and invoke tune.\n","user":"OMLUSER","dateUpdated":"2021-02-24T22:00:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the model tuning object mt_wine_cl for classification and invoke tune.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-309619500","id":"20210224-211339_304696070","dateCreated":"2021-01-11T23:40:13+0000","dateStarted":"2021-02-24T22:00:51+0000","dateFinished":"2021-02-24T22:00:51+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:37"},{"text":"%python\n\nmt_wine_cl = automl.ModelTuning(mining_function = 'classification', parallel=2)\nmt_wine_cl.tune\n\nresults_cl = mt_wine_cl.tune(selected_wine_alg_cl, WINE_X_reduced_cl, WINE_y_cl)\n\ntuned_model_cl = results_cl['best_model']\ntuned_model_cl\n","user":"OMLUSER","dateUpdated":"2021-02-24T22:00:51+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nAlgorithm Name: Support Vector Machine\n\nMining Function: CLASSIFICATION\n\nTarget: target\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_SUPPORT_VECTOR_MACHINES\n1 CLAS_WEIGHTS_BALANCED OFF\n2 ODMS_DETAILS ODMS_DISABLE\n3 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n4 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n5 PREP_AUTO ON\n6 SVMS_COMPLEXITY_FACTOR 10\n7 SVMS_CONV_TOLERANCE .0001\n8 SVMS_KERNEL_FUNCTION SVMS_GAUSSIAN\n9 SVMS_NUM_PIVOTS 200\n10 SVMS_STD_DEV 2.1213203435596424\n\nAttributes: \nalcalinity_of_ash\nalcohol\nash\ncolor_intensity\nflavanoids\nhue\nnonflavanoid_phenols\nod280/od315_of_diluted_wines\nproline\n\nPartition: NO\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_1239423159","id":"20210224-211339_251974822","dateCreated":"2021-01-11T23:41:41+0000","dateStarted":"2021-02-24T22:00:52+0000","dateFinished":"2021-02-24T22:05:57+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:38"},{"text":"%md\n.\nList the hyperparameters and their values tried for the top two models, along with the corresponding model's score metric value. ","user":"OMLUSER","dateUpdated":"2021-02-24T22:05:57+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the hyperparameters and their values tried for the top two models, along with the corresponding model's score metric value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-1965382972","id":"20210224-211339_321080157","dateCreated":"2021-01-19T00:10:43+0000","dateStarted":"2021-02-24T22:05:58+0000","dateFinished":"2021-02-24T22:05:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:39"},{"text":"%python\n\nhyper_results_cl = results_cl['all_evals']\n\nprint(*hyper_results_cl[:2], sep='\\n')\n","user":"OMLUSER","dateUpdated":"2021-02-24T22:05:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(0.9888888888888889, {'CLAS_WEIGHTS_BALANCED': 'OFF', 'SVMS_COMPLEXITY_FACTOR': 10, 'SVMS_NUM_PIVOTS': 200, 'SVMS_STD_DEV': 2.1213203435596424})\n(0.9888888888888889, {'CLAS_WEIGHTS_BALANCED': 'ON', 'SVMS_COMPLEXITY_FACTOR': 10, 'SVMS_NUM_PIVOTS': 200, 'SVMS_STD_DEV': 2.1213203435596424})\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_195903082","id":"20210224-211339_1894259807","dateCreated":"2021-01-18T23:47:34+0000","dateStarted":"2021-02-24T22:05:58+0000","dateFinished":"2021-02-24T22:05:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:40"},{"text":"%md\n.\nUsers can also specify a custom search space for model building using the *param_space* argument to the ***tune*** function. \n","user":"OMLUSER","dateUpdated":"2021-02-24T22:05:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Users can also specify a custom search space for model building using the param_space argument to the tune function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_1508216335","id":"20210224-211339_683743295","dateCreated":"2021-01-11T23:42:01+0000","dateStarted":"2021-02-24T22:05:59+0000","dateFinished":"2021-02-24T22:05:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%python\n\nsearch_space={'RFOR_SAMPLING_RATIO': {'type': 'continuous', 'range': [0.05, 0.5]}, \n 'RFOR_NUM_TREES': {'type': 'discrete', 'range': [50, 55]}, \n 'TREE_IMPURITY_METRIC': {'type': 'categorical', \n 'range': ['TREE_IMPURITY_ENTROPY', 'TREE_IMPURITY_GINI']},}\n\nat_wine2_cl = automl.ModelTuning(mining_function='classification', score_metric='f1_macro', parallel=2)\n\nresults2_cl = at_wine2_cl.tune('rf', WINE_X_cl, WINE_y_cl, param_space=search_space)\n\nscore2_cl, params2_cl = results2_cl['all_evals'][0]\n\"{:.2}\".format(score2_cl)\n\ntuned_model2_cl = results2_cl['best_model']\ntuned_model2_cl\n","user":"OMLUSER","dateUpdated":"2021-02-24T22:05:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nAlgorithm Name: Random Forest\n\nMining Function: CLASSIFICATION\n\nTarget: target\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_RANDOM_FOREST\n1 CLAS_MAX_SUP_BINS 32\n2 CLAS_WEIGHTS_BALANCED OFF\n3 ODMS_DETAILS ODMS_DISABLE\n4 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n5 ODMS_RANDOM_SEED 0\n6 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n7 PREP_AUTO ON\n8 RFOR_NUM_TREES 52\n9 RFOR_SAMPLING_RATIO 0.2\n10 TREE_IMPURITY_METRIC TREE_IMPURITY_GINI\n11 TREE_TERM_MAX_DEPTH 16\n12 TREE_TERM_MINPCT_NODE .05\n13 TREE_TERM_MINPCT_SPLIT .1\n14 TREE_TERM_MINREC_NODE 10\n15 TREE_TERM_MINREC_SPLIT 20\n\nAttributes: \nalcalinity_of_ash\nalcohol\nash\ncolor_intensity\nflavanoids\nhue\nmagnesium\nnonflavanoid_phenols\nod280/od315_of_diluted_wines\nproline\ntotal_phenols\n\nPartition: NO\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-649620973","id":"20210224-211339_21583973","dateCreated":"2021-01-12T00:01:32+0000","dateStarted":"2021-02-24T22:05:59+0000","dateFinished":"2021-02-24T22:10:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"title":"Step 5: Automatic model selection","text":"%md\n\nModel selection automatically selects the best algorithm (using Algorithm Selection) from the set of supported algorithms, then builds, tunes, and returns the best model for your data. To use model selection, specify your data and the number of algorithms you want to tune. \n","user":"OMLUSER","dateUpdated":"2021-02-24T22:10:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Model selection automatically selects the best algorithm (using Algorithm Selection) from the set of supported algorithms, then builds, tunes, and returns the best model for your data. To use model selection, specify your data and the number of algorithms you want to tune.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-586720937","id":"20210224-211339_137986738","dateCreated":"2021-01-12T00:23:03+0000","dateStarted":"2021-02-24T22:10:58+0000","dateFinished":"2021-02-24T22:10:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"text":"%md\n.\nDefine a *ModelSelection* object and invoke select for automatically building the best model on our wine data.","user":"OMLUSER","dateUpdated":"2021-02-24T22:10:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define a ModelSelection object and invoke select for automatically building the best model on our wine data.

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_99743673","id":"20210224-211339_939748622","dateCreated":"2021-01-12T00:29:40+0000","dateStarted":"2021-02-24T22:10:59+0000","dateFinished":"2021-02-24T22:10:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%python\n\nms_wine = automl.ModelSelection(mining_function = 'classification', parallel=2)\n\nbest_model = ms_wine.select(WINE_X_cl, WINE_y_cl, k=1, cv=2)\nbest_model","user":"OMLUSER","dateUpdated":"2021-02-24T22:10:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(\nAlgorithm Name: Support Vector Machine\n\nMining Function: CLASSIFICATION\n\nTarget: target\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_SUPPORT_VECTOR_MACHINES\n1 CLAS_WEIGHTS_BALANCED OFF\n2 ODMS_DETAILS ODMS_DISABLE\n3 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n4 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n5 PREP_AUTO ON\n6 SVMS_COMPLEXITY_FACTOR 10\n7 SVMS_CONV_TOLERANCE .0001\n8 SVMS_KERNEL_FUNCTION SVMS_GAUSSIAN\n9 SVMS_NUM_PIVOTS 200\n10 SVMS_STD_DEV 2.5495097567963922\n\nAttributes: \nalcalinity_of_ash\nalcohol\nash\ncolor_intensity\nflavanoids\nhue\nmagnesium\nmalic_acid\nnonflavanoid_phenols\nod280/od315_of_diluted_wines\nproanthocyanins\nproline\ntotal_phenols\n\nPartition: NO\n\n, 'svm_gaussian')\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-1329605327","id":"20210224-211339_404982481","dateCreated":"2021-01-12T00:29:15+0000","dateStarted":"2021-02-24T22:11:00+0000","dateFinished":"2021-02-24T22:13:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%md\n\n# End of Script","user":"OMLUSER","dateUpdated":"2021-02-24T22:13:37+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614201219696_-1824522060","id":"20210224-211339_1407349696","dateCreated":"2021-01-12T00:35:59+0000","dateStarted":"2021-02-24T22:13:37+0000","dateFinished":"2021-02-24T22:13:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%md\n","user":"OMLUSER03","dateUpdated":"2021-02-03T17:03:14+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614201219696_1102038407","id":"20210224-211339_386549532","dateCreated":"2021-01-12T00:36:10+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:47"}],"name":"Lab 6: OML4Py AutoML","id":"39712","noteParams":{},"noteForms":{},"angularObjects":{"ORA7A60DC9B32:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/Lab 6_ OML4Py AutoML.json b/machine-learning/labs/oml4py-live-labs/Lab 6_ OML4Py AutoML.json new file mode 100755 index 00000000..af118db6 --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/Lab 6_ OML4Py AutoML.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automated machine learning capabilities.\n\nAutoML (Automated Machine Learning) provides built-in data science expertise about data analytics and modeling that you can employ to build machine learning models. \n\nIn this lab, we highlight the AutoML workflow using OML4Py:\n\n* Automated algorithm selection - identify the most appropriate algorithm\n* Automated feature selection - select the features (predictors) that best support that algorithm\n* Automated model tuning - tune the model using algorithm hyperparameters and the selected features\n* Automated model selection - identify the most appropriate algorithm and tune the model in a single step\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER02","dateUpdated":"2021-03-02T19:25:46+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automated machine learning capabilities.

\n

AutoML (Automated Machine Learning) provides built-in data science expertise about data analytics and modeling that you can employ to build machine learning models.

\n

In this lab, we highlight the AutoML workflow using OML4Py:

\n
    \n
  • Automated algorithm selection - identify the most appropriate algorithm
  • \n
  • Automated feature selection - select the features (predictors) that best support that algorithm
  • \n
  • Automated model tuning - tune the model using algorithm hyperparameters and the selected features
  • \n
  • Automated model selection - identify the most appropriate algorithm and tune the model in a single step
  • \n
\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-338027337","id":"20210302-002652_326250267","dateCreated":"2021-01-11T17:42:39+0000","dateStarted":"2021-03-02T19:25:46+0000","dateFinished":"2021-03-02T19:25:48+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:22"},{"title":"Step 1: Import the OML4Py and supporting libraries","text":"%md\n\nImport the *oml* package, *Pandas* package, and *automl* module.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:25:48+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Import the oml package, Pandas package, and automl module.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_1679706415","id":"20210302-002652_2058727932","dateCreated":"2021-01-11T21:41:23+0000","dateStarted":"2021-03-02T19:25:49+0000","dateFinished":"2021-03-02T19:25:49+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:23"},{"text":"%python\n\nimport pandas as pd\nimport oml\nfrom oml import automl\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:25:49+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812164_-5224215","id":"20210302-002652_2097139835","dateCreated":"2021-01-11T21:46:41+0000","dateStarted":"2021-03-02T19:25:49+0000","dateFinished":"2021-03-02T19:25:58+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:24"},{"text":"%md\n.\nUse the ***oml.sync*** function to create an OML Dataframe as a proxy for the database table *WINE*.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:25:58+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use the oml.sync function to create an OML Dataframe as a proxy for the database table WINE.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_346596227","id":"20210302-002652_399655482","dateCreated":"2021-01-11T21:45:11+0000","dateStarted":"2021-03-02T19:25:59+0000","dateFinished":"2021-03-02T19:25:59+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:25"},{"text":"%python\n\nWINE = oml.sync(table = \"WINE\")\nprint(WINE.shape)\nprint(WINE.dtypes)","user":"OMLUSER02","dateUpdated":"2021-03-02T19:25:59+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(178, 14)\nalcohol \nmalic_acid \nash \nalcalinity_of_ash \nmagnesium \ntotal_phenols \nflavanoids \nnonflavanoid_phenols \nproanthocyanins \ncolor_intensity \nhue \nod280/od315_of_diluted_wines \nproline \ntarget \ndtype: object\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-1281118578","id":"20210302-002652_358268204","dateCreated":"2021-01-18T16:55:30+0000","dateStarted":"2021-03-02T19:25:59+0000","dateFinished":"2021-03-02T19:26:00+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:26"},{"title":"Step 2: Automated algorithm selection","text":"%md\n\nPrepare the wine data set by separating predictors from the target as conventional for Python model building. This produces two new proxy objects that will be used in AutoML functions.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:26:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Prepare the wine data set by separating predictors from the target as conventional for Python model building. This produces two new proxy objects that will be used in AutoML functions.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-563538432","id":"20210302-002652_1110950954","dateCreated":"2021-01-11T21:50:51+0000","dateStarted":"2021-03-02T19:26:01+0000","dateFinished":"2021-03-02T19:26:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:27"},{"text":"%python\n\nWINE_X_cl,WINE_y_cl = WINE.drop('target'), WINE['target']\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:26:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812164_856065807","id":"20210302-002652_1078568991","dateCreated":"2021-01-11T23:29:52+0000","dateStarted":"2021-03-02T19:26:01+0000","dateFinished":"2021-03-02T19:26:01+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:28"},{"text":"%md\n.\nUse AutoML to select the top classification algorithms for predicting the WINE data target. Display the top ranked algorithms and their accuracy. SVM Gaussian is ranked first and we'll use that in subsequent AutoML function invocations.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:26:01+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Use AutoML to select the top classification algorithms for predicting the WINE data target. Display the top ranked algorithms and their accuracy. SVM Gaussian is ranked first and we'll use that in subsequent AutoML function invocations.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_390846779","id":"20210302-002652_1158668734","dateCreated":"2021-01-11T23:30:08+0000","dateStarted":"2021-03-02T19:26:02+0000","dateFinished":"2021-03-02T19:26:02+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:29"},{"text":"%python\n\nas_wine_cl = automl.AlgorithmSelection(mining_function='classification', score_metric='accuracy', parallel=2)\n\nwine_alg_ranking_cl = as_wine_cl.select(WINE_X_cl, WINE_y_cl, k=6)\n\nprint(\"Ranked algorithms:\\n\", wine_alg_ranking_cl)\n\nselected_wine_alg_cl = next(iter(dict(wine_alg_ranking_cl).keys()))\nprint(\"Best algorithm: \", selected_wine_alg_cl)\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:26:02+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Ranked algorithms:\n [('svm_gaussian', 0.9825515947467167), ('svm_linear', 0.9727954971857411), ('nn', 0.9670812114714554), ('rf', 0.9495470383275262), ('nb', 0.8965853658536584), ('dt', 0.8508710801393728)]\nBest algorithm: svm_gaussian\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-294223319","id":"20210302-002652_100435950","dateCreated":"2021-01-11T23:30:42+0000","dateStarted":"2021-03-02T19:26:02+0000","dateFinished":"2021-03-02T19:27:30+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:30"},{"text":"%python\n\nimport matplotlib.pyplot as plt\n\nplt.style.use('seaborn-whitegrid')\nplt.bar(dict(wine_alg_ranking_cl).keys(),dict(wine_alg_ranking_cl).values(), color=\"#f5ae38\")\nplt.title(\"Algorithm Ranking\")\nplt.xlabel(\"Algorithm\")\nplt.ylabel(\"Estimated Accuracy\")\nplt.tight_layout()\nplt.show()","user":"OMLUSER02","dateUpdated":"2021-03-02T19:27:30+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{"0":{"graph":{"mode":"table","height":389,"optionOpen":false}}},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_902978871","id":"20210302-002652_2039875055","dateCreated":"2021-02-15T23:04:41+0000","dateStarted":"2021-03-02T19:27:31+0000","dateFinished":"2021-03-02T19:27:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:31"},{"title":"Step 3: Automated feature selection","text":"%md\n\nIn this step, you determine the features that best support the selected algorithm. First define a *FeatureSelection* object with score metric accuracy and then invoke the ***reduce*** function and specify the desired algorithm, in this case as determined above and stored in variable *selected_wine_alg_cl*. Also specify the train and test OML DataFrame proxy objects.\n\nThe set of selected columns is returned.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:27:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

In this step, you determine the features that best support the selected algorithm. First define a FeatureSelection object with score metric accuracy and then invoke the reduce function and specify the desired algorithm, in this case as determined above and stored in variable selected_wine_alg_cl. Also specify the train and test OML DataFrame proxy objects.

\n

The set of selected columns is returned.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_1188502969","id":"20210302-002652_1947358098","dateCreated":"2021-01-11T23:31:05+0000","dateStarted":"2021-03-02T19:27:35+0000","dateFinished":"2021-03-02T19:27:35+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:32"},{"text":"%md\n.\nDefine the Feature Selection object *fs_wine_cl* and invoke reduce with the selected algorithms and *WINE* proxy objects.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:27:35+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the Feature Selection object fs_wine_cl and invoke reduce with the selected algorithms and WINE proxy objects.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_627059126","id":"20210302-002652_1311399615","dateCreated":"2021-01-11T23:33:33+0000","dateStarted":"2021-03-02T19:27:36+0000","dateFinished":"2021-03-02T19:27:36+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:33"},{"text":"%python\n\nfs_wine_cl = automl.FeatureSelection(mining_function = 'classification', score_metric = 'accuracy', parallel=2)\n\nselected_wine_features_cl = fs_wine_cl.reduce(selected_wine_alg_cl, WINE_X_cl, WINE_y_cl)\n\nWINE_X_reduced_cl = WINE_X_cl[:,selected_wine_features_cl]\n\nprint(\"Selected columns:\", WINE_X_reduced_cl.columns)\nprint(\"Number of columns:\")\n\"{} reduced to {}\".format(len(WINE_X_cl.columns), len(selected_wine_features_cl))\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:27:36+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"Selected columns: ['alcohol', 'ash', 'alcalinity_of_ash', 'flavanoids', 'nonflavanoid_phenols', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']\nNumber of columns:\n'13 reduced to 9'\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_713492001","id":"20210302-002652_789082979","dateCreated":"2021-01-11T23:34:50+0000","dateStarted":"2021-03-02T19:27:36+0000","dateFinished":"2021-03-02T19:29:26+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:34"},{"title":"Try it Yourself","text":"%md\nTry other algorithms, such as ***svm_linear*** or ***rf*** in the first argument of the ***reduce*** function see if different columns are selected.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:29:26+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Try other algorithms, such as svm_linear or rf in the first argument of the reduce function see if different columns are selected.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-152459467","id":"20210302-002652_1719185936","dateCreated":"2021-01-11T23:35:26+0000","dateStarted":"2021-03-02T19:29:27+0000","dateFinished":"2021-03-02T19:29:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:35"},{"text":"%python\n\n# Insert code here\n\n\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:29:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[]},"interrupted":false,"jobName":"paragraph_1614644812164_-694870740","id":"20210302-002652_9495438","dateCreated":"2021-01-11T23:39:32+0000","dateStarted":"2021-03-02T19:29:27+0000","dateFinished":"2021-03-02T19:29:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:36"},{"title":"Step 4: Automated model tuning","text":"%md\n\nAt this point, you are ready to build and tune the models you want to use.\n\nFirst, define a ModelTuning object for classification. Then invoke tune to produce the tuned model using the algorithm selected above and the reduced data features.\n\nModel tuning returns a dictionary with the best model and the evaluation results of the other models tried. This also contains a list of the hyperparameter choices tried and their corresponding score.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:29:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

At this point, you are ready to build and tune the models you want to use.

\n

First, define a ModelTuning object for classification. Then invoke tune to produce the tuned model using the algorithm selected above and the reduced data features.

\n

Model tuning returns a dictionary with the best model and the evaluation results of the other models tried. This also contains a list of the hyperparameter choices tried and their corresponding score.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-1491034261","id":"20210302-002652_483625605","dateCreated":"2021-01-11T23:39:44+0000","dateStarted":"2021-03-02T19:29:28+0000","dateFinished":"2021-03-02T19:29:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:37"},{"text":"%md\n.\nDefine the model tuning object *mt_wine_cl* for classification and invoke tune.\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:29:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define the model tuning object mt_wine_cl for classification and invoke tune.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-365209045","id":"20210302-002652_1881960727","dateCreated":"2021-01-11T23:40:13+0000","dateStarted":"2021-03-02T19:29:28+0000","dateFinished":"2021-03-02T19:29:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:38"},{"text":"%python\n\nmt_wine_cl = automl.ModelTuning(mining_function = 'classification', parallel=2)\nmt_wine_cl.tune\n\nresults_cl = mt_wine_cl.tune(selected_wine_alg_cl, WINE_X_reduced_cl, WINE_y_cl)\n\ntuned_model_cl = results_cl['best_model']\ntuned_model_cl\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:29:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nAlgorithm Name: Support Vector Machine\n\nMining Function: CLASSIFICATION\n\nTarget: target\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_SUPPORT_VECTOR_MACHINES\n1 CLAS_WEIGHTS_BALANCED OFF\n2 ODMS_DETAILS ODMS_DISABLE\n3 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n4 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n5 PREP_AUTO ON\n6 SVMS_COMPLEXITY_FACTOR 10\n7 SVMS_CONV_TOLERANCE .0001\n8 SVMS_KERNEL_FUNCTION SVMS_GAUSSIAN\n9 SVMS_NUM_PIVOTS 200\n10 SVMS_STD_DEV 2.1213203435596424\n\nAttributes: \nalcalinity_of_ash\nalcohol\nash\ncolor_intensity\nflavanoids\nhue\nnonflavanoid_phenols\nod280/od315_of_diluted_wines\nproline\n\nPartition: NO\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-2109791103","id":"20210302-002652_1407690032","dateCreated":"2021-01-11T23:41:41+0000","dateStarted":"2021-03-02T19:29:29+0000","dateFinished":"2021-03-02T19:35:44+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:39"},{"text":"%md\n.\nList the hyperparameters and their values tried for the top two models, along with the corresponding model's score metric value. ","user":"OMLUSER02","dateUpdated":"2021-03-02T19:35:44+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
List the hyperparameters and their values tried for the top two models, along with the corresponding model's score metric value.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-1997481165","id":"20210302-002652_1416409169","dateCreated":"2021-01-19T00:10:43+0000","dateStarted":"2021-03-02T19:35:45+0000","dateFinished":"2021-03-02T19:35:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:40"},{"text":"%python\n\nhyper_results_cl = results_cl['all_evals']\n\nprint(*hyper_results_cl[:2], sep='\\n')\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:35:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(0.9888888888888889, {'CLAS_WEIGHTS_BALANCED': 'OFF', 'SVMS_COMPLEXITY_FACTOR': 10, 'SVMS_NUM_PIVOTS': 200, 'SVMS_STD_DEV': 2.1213203435596424})\n(0.9888888888888889, {'CLAS_WEIGHTS_BALANCED': 'ON', 'SVMS_COMPLEXITY_FACTOR': 10, 'SVMS_NUM_PIVOTS': 200, 'SVMS_STD_DEV': 2.1213203435596424})\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-365154686","id":"20210302-002652_1416339451","dateCreated":"2021-01-18T23:47:34+0000","dateStarted":"2021-03-02T19:35:45+0000","dateFinished":"2021-03-02T19:35:45+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"text":"%md\n.\nUsers can also specify a custom search space for model building using the *param_space* argument to the ***tune*** function. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:35:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Users can also specify a custom search space for model building using the param_space argument to the tune function.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-144989280","id":"20210302-002652_1205659816","dateCreated":"2021-01-11T23:42:01+0000","dateStarted":"2021-03-02T19:35:46+0000","dateFinished":"2021-03-02T19:35:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:42"},{"text":"%python\n\nsearch_space={'RFOR_SAMPLING_RATIO': {'type': 'continuous', 'range': [0.05, 0.5]}, \n 'RFOR_NUM_TREES': {'type': 'discrete', 'range': [50, 55]}, \n 'TREE_IMPURITY_METRIC': {'type': 'categorical', \n 'range': ['TREE_IMPURITY_ENTROPY', 'TREE_IMPURITY_GINI']},}\n\nat_wine2_cl = automl.ModelTuning(mining_function='classification', score_metric='f1_macro', parallel=2)\n\nresults2_cl = at_wine2_cl.tune('rf', WINE_X_cl, WINE_y_cl, param_space=search_space)\n\nscore2_cl, params2_cl = results2_cl['all_evals'][0]\n\"{:.2}\".format(score2_cl)\n\ntuned_model2_cl = results2_cl['best_model']\ntuned_model2_cl\n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:35:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"\nAlgorithm Name: Random Forest\n\nMining Function: CLASSIFICATION\n\nTarget: target\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_RANDOM_FOREST\n1 CLAS_MAX_SUP_BINS 32\n2 CLAS_WEIGHTS_BALANCED OFF\n3 ODMS_DETAILS ODMS_DISABLE\n4 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n5 ODMS_RANDOM_SEED 0\n6 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n7 PREP_AUTO ON\n8 RFOR_NUM_TREES 52\n9 RFOR_SAMPLING_RATIO 0.2\n10 TREE_IMPURITY_METRIC TREE_IMPURITY_GINI\n11 TREE_TERM_MAX_DEPTH 16\n12 TREE_TERM_MINPCT_NODE .05\n13 TREE_TERM_MINPCT_SPLIT .1\n14 TREE_TERM_MINREC_NODE 10\n15 TREE_TERM_MINREC_SPLIT 20\n\nAttributes: \nalcalinity_of_ash\nalcohol\nash\ncolor_intensity\nflavanoids\nhue\nmagnesium\nnonflavanoid_phenols\nod280/od315_of_diluted_wines\nproline\ntotal_phenols\n\nPartition: NO\n\n\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_491152420","id":"20210302-002652_695999302","dateCreated":"2021-01-12T00:01:32+0000","dateStarted":"2021-03-02T19:35:46+0000","dateFinished":"2021-03-02T19:40:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:43"},{"title":"Step 5: Automated model selection","text":"%md\n\nModel selection automates selecting the best algorithm (using Algorithm Selection) from the set of supported algorithms, then builds, tunes, and returns the best model for your data. To use model selection, specify your data and the number of algorithms you want to tune. \n","user":"OMLUSER02","dateUpdated":"2021-03-02T19:43:28+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true,"title":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Model selection automates selecting the best algorithm (using Algorithm Selection) from the set of supported algorithms, then builds, tunes, and returns the best model for your data. To use model selection, specify your data and the number of algorithms you want to tune.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-41364606","id":"20210302-002652_413390848","dateCreated":"2021-01-12T00:23:03+0000","dateStarted":"2021-03-02T19:40:46+0000","dateFinished":"2021-03-02T19:40:46+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:44"},{"text":"%md\n.\nDefine a *ModelSelection* object and invoke **select** to automate building the model on our wine data that performs best given the score metric.","user":"OMLUSER02","dateUpdated":"2021-03-02T19:40:46+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

.\n
Define a ModelSelection object and invoke select to automate building the model on our wine data that performs best given the score metric.

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_1429306338","id":"20210302-002652_280959144","dateCreated":"2021-01-12T00:29:40+0000","dateStarted":"2021-03-02T19:40:47+0000","dateFinished":"2021-03-02T19:40:47+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:45"},{"text":"%python\n\nms_wine = automl.ModelSelection(mining_function = 'classification', parallel=2)\n\nbest_model = ms_wine.select(WINE_X_cl, WINE_y_cl, k=1, cv=2)\nbest_model","user":"OMLUSER02","dateUpdated":"2021-03-02T19:40:47+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined"},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"TEXT","data":"(\nAlgorithm Name: Support Vector Machine\n\nMining Function: CLASSIFICATION\n\nTarget: target\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_SUPPORT_VECTOR_MACHINES\n1 CLAS_WEIGHTS_BALANCED OFF\n2 ODMS_DETAILS ODMS_DISABLE\n3 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n4 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n5 PREP_AUTO ON\n6 SVMS_COMPLEXITY_FACTOR 10\n7 SVMS_CONV_TOLERANCE .0001\n8 SVMS_KERNEL_FUNCTION SVMS_GAUSSIAN\n9 SVMS_NUM_PIVOTS 200\n10 SVMS_STD_DEV 2.5495097567963922\n\nAttributes: \nalcalinity_of_ash\nalcohol\nash\ncolor_intensity\nflavanoids\nhue\nmagnesium\nmalic_acid\nnonflavanoid_phenols\nod280/od315_of_diluted_wines\nproanthocyanins\nproline\ntotal_phenols\n\nPartition: NO\n\n, 'svm_gaussian')\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-724965808","id":"20210302-002652_805710783","dateCreated":"2021-01-12T00:29:15+0000","dateStarted":"2021-03-02T19:40:47+0000","dateFinished":"2021-03-02T19:43:27+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:46"},{"text":"%md\n\n# End of Script","user":"OMLUSER02","dateUpdated":"2021-03-02T19:43:27+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/osql","editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

End of Script

\n"}]},"interrupted":false,"jobName":"paragraph_1614644812164_-1249358652","id":"20210302-002652_2045354194","dateCreated":"2021-01-12T00:35:59+0000","dateStarted":"2021-03-02T19:43:28+0000","dateFinished":"2021-03-02T19:43:28+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:47"},{"text":"%md\n","user":"OMLUSER02","dateUpdated":"2021-03-02T01:34:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":true,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown"},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812164_1215831712","id":"20210302-002652_2131498039","dateCreated":"2021-01-12T00:36:10+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:48"}],"name":"Lab 6: OML4Py AutoML","id":"40631","noteParams":{},"noteForms":{},"angularObjects":{"ORA7A60DC9B32:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/OML4Py Try It Yourself Answers.json b/machine-learning/labs/oml4py-live-labs/OML4Py Try It Yourself Answers.json deleted file mode 100755 index 1d09ac36..00000000 --- a/machine-learning/labs/oml4py-live-labs/OML4Py Try It Yourself Answers.json +++ /dev/null @@ -1 +0,0 @@ -{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nThis example contains the answers for the **Try it yourself** exercises in the OML4Py labs. Note, the code in the paragraphs are not runnable from this notebook. Refer to the lab notebooks for the location where the each exercise will be invoked.\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER03","dateUpdated":"2021-01-25T18:27:37+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

This example contains the answers for the Try it yourself exercises in the OML4Py labs. Note, the code in the paragraphs are not runnable from this notebook. Refer to the lab notebooks for the location where the each exercise will be invoked.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1611594219241_-1472435914","id":"20210125-170339_984850006","dateCreated":"2021-01-21T01:27:37+0000","dateStarted":"2021-01-25T18:27:37+0000","dateFinished":"2021-01-25T18:27:37+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Lab 1: Use markdown","text":"%md\n\n#### Oracle Machine Learning for Python Live Lab\nWelcome to the **OML4Py** Live Lab!\n","user":"OMLUSER03","dateUpdated":"2021-01-25T18:25:17+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219241_-620669881","id":"20210125-170339_771985553","dateCreated":"2021-01-21T01:28:17+0000","dateStarted":"2021-01-25T18:24:10+0000","dateFinished":"2021-01-25T18:24:10+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"title":"Lab 2: Merge with outer join","text":"%python\n\nx.merge(other=y, left_on=\"id\", right_on=\"num\", how=\"right\")\n\nReturn value:\n\n id_l val_l num_r ch_r\n0 3.0 c 3.0 q\n1 4.0 d 4.0 p\n2 5.0 e 5.0 b\n3 NaN None 6.7 r\n4 NaN None 7.2 a","user":"OMLUSER03","dateUpdated":"2021-01-25T18:26:54+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611599214038_-1731778657","id":"20210125-182654_844882150","dateCreated":"2021-01-25T18:26:54+0000","status":"READY","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:42"},{"title":"Lab 2: Split the digit data set into four samples of 25% each","text":"%python\n\nsplits = DIGITS.split(ratio=(.25, .25, .25, .25), use_hash = False)\nprint(\"Split lengths: \", [len(split) for split in splits])\n\nReturn value:\n\nsplit lengths: [432, 460, 451, 454]\n","user":"OMLUSER03","dateUpdated":"2021-01-25T18:21:19+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219241_-202027836","id":"20210125-170339_1106658260","dateCreated":"2021-01-21T01:29:12+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:43"},{"title":"Lab 3: Build an in-database RandomForest model ","text":"%python \n\n# Build an in-db RandomForest model and compare the RF model's attribute importance ranking with that from MLX.\n\nmodel = oml.algo.rf(ODMS_RANDOM_SEED=32).fit(X, y, case_id='CASE_ID')\n\"RF accuracy score = {:.2f}\".format(model.score(X_test, y_test))\n\ngfi = GlobalFeatureImportance(mining_function='classification', score_metric='f1_weighted', random_state=32, parallel=4)\n\nexplanation = gfi.explain(model, X, y, case_id='CASE_ID', n_iter=10)\nexplanation\n\nReturn value:\n\nGlobal Feature Importance: \n\t[0] petal length (cm): Value: 0.4858, Error: 0.0278\n\t[1] petal width (cm): Value: 0.1183, Error: 0.0276\n\t[2] sepal length (cm): Value: 0.0191, Error: 0.0115\n\t[3] sepal width (cm): Value: 0.0000, Error: 0.0000\n","user":"OMLUSER03","dateUpdated":"2021-01-25T18:35:50+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219241_128199983","id":"20210125-170339_1737565330","dateCreated":"2021-01-21T01:29:27+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:44"},{"title":"Lab 4: Deleting datastores","text":"%python\n\n# Delete the IRIS table from datastore IRIS, then delete the entire datastore.\n\noml.ds.delete(name=\"IRIS\", objs=[\"IRIS\"])\noml.ds.delete(name=\"IRIS\")\noml.ds.dir()\n\nReturn value:\n\nEmpty DataFrame\nColumns: [datastore_name, object_count, size, date, description]\nIndex: []","user":"OMLUSER03","dateUpdated":"2021-01-25T18:36:16+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219241_-1431917370","id":"20210125-170339_1428469737","dateCreated":"2021-01-21T01:29:41+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:45"},{"title":"Lab 5: Use group_apply","text":"%python\n\n# Use the group_apply function to count the number of each species in the data set.\n\ndef group_count(dat):\n import pandas as pd\n return pd.DataFrame([(dat[\"SPECIES\"][0], dat.shape[0])],\n columns = [\"SPECIES\", \"CNT\"])\n\nindex = oml.DataFrame(IRIS['SPECIES'])\nres = oml.group_apply(IRIS, index, func=group_count,\n oml_input_type=\"pandas.DataFrame\",\n func_value=pd.DataFrame([('a', 1)],\n columns=[\"SPECIES\", \"CNT\"]))\nres\n\nReturn value:\n\n SPECIES CNT\n0 virginica 50\n1 setosa 50\n2 versicolor 50","user":"OMLUSER03","dateUpdated":"2021-01-25T18:37:45+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219241_1487714824","id":"20210125-170339_1257119002","dateCreated":"2021-01-21T01:29:52+0000","dateStarted":"2021-01-21T01:57:34+0000","dateFinished":"2021-01-21T01:57:34+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:46"},{"title":"Lab 6: AutoML Algorithm Selection","text":"%python\n\nfs_wine_cl = automl.FeatureSelection(mining_function = 'classification', score_metric = 'accuracy', parallel=2)\n\nselected_wine_features_cl = fs_wine_cl.reduce('svm_linear', WINE_X_cl, WINE_y_cl)\n\nWINE_X_reduced_cl = WINE_X_cl[:,selected_wine_features_cl]\n\nprint(\"Selected columns:\", WINE_X_reduced_cl.columns)\nprint(\"Number of columns:\")\n\"{} reduced to {}\".format(len(WINE_X_cl.columns), len(selected_wine_features_cl))\n\n\nReturn value:\n\nSelected columns: ['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']\nNumber of columns:\n'13 reduced to 11'\n\n","user":"OMLUSER03","dateUpdated":"2021-01-25T18:37:56+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1611594219241_1121073616","id":"20210125-170339_972361584","dateCreated":"2021-01-21T01:30:04+0000","dateStarted":"2021-01-21T04:47:55+0000","dateFinished":"2021-01-21T04:48:13+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:47"}],"name":"OML4Py: Try It Yourself Answers","id":"32090","noteParams":{},"noteForms":{},"angularObjects":{"ORA7A60DC9B32:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file diff --git a/machine-learning/labs/oml4py-live-labs/OML4Py_ Try It Yourself Answers.json b/machine-learning/labs/oml4py-live-labs/OML4Py_ Try It Yourself Answers.json new file mode 100755 index 00000000..aee6fbf3 --- /dev/null +++ b/machine-learning/labs/oml4py-live-labs/OML4Py_ Try It Yourself Answers.json @@ -0,0 +1 @@ +{"paragraphs":[{"text":"%md\n\n# Oracle Machine Learning for Python (OML4Py)\n\n***Oracle Machine Learning for Python*** (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.\n\nThis example contains the answers for the **Try it yourself** exercises in the OML4Py labs. Note, the code in the paragraphs are not runnable from this notebook. Refer to the lab notebooks for the location where the each exercise will be invoked.\n\nCopyright (c) 2021 Oracle Corporation \n###### [The Universal Permissive License (UPL), Version 1.0](https://oss.oracle.com/licenses/upl/)","user":"OMLUSER02","dateUpdated":"2021-03-02T19:58:06+0000","config":{"colWidth":12,"graph":{"mode":"table","height":300,"optionOpen":false,"keys":[],"values":[],"groups":[],"scatter":{}},"enabled":true,"editorMode":"ace/mode/markdown","fontSize":9,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorHide":true},"settings":{"params":{},"forms":{}},"results":{"code":"SUCCESS","msg":[{"type":"HTML","data":"

Oracle Machine Learning for Python (OML4Py)

\n

Oracle Machine Learning for Python (OML4Py) makes the open source Python scripting language and environment ready for the enterprise and big data. Designed for problems involving both large and small data volumes, OML4Py integrates Python with Oracle Autonomous Database, allowing users to run Python commands and scripts for statistical, machine learning, and visualization analyses on database tables and views using Python syntax. Many familiar Python functions are overloaded that translate Python behavior into SQL for running in-database, as well as new automatic machine learning capabilities.

\n

This example contains the answers for the Try it yourself exercises in the OML4Py labs. Note, the code in the paragraphs are not runnable from this notebook. Refer to the lab notebooks for the location where the each exercise will be invoked.

\n

Copyright (c) 2021 Oracle Corporation

\n
The Universal Permissive License (UPL), Version 1.0
\n"}]},"interrupted":false,"jobName":"paragraph_1614644812059_-531582432","id":"20210302-002652_1049535274","dateCreated":"2021-01-21T01:27:37+0000","dateStarted":"2021-03-02T19:58:07+0000","dateFinished":"2021-03-02T19:58:07+0000","status":"FINISHED","progressUpdateIntervalMs":500,"commited":true,"focus":true,"$$hashKey":"object:40"},{"title":"Lab 1: Use markdown","text":"%md\n\n#### Oracle Machine Learning for Python Live Lab\nWelcome to the **OML4Py** Live Lab!\n","user":"OMLUSER02","dateUpdated":"2021-03-02T05:44:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"md","editOnDblClick":false},"editorMode":"ace/mode/markdown","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812059_-1296807791","id":"20210302-002652_16492558","dateCreated":"2021-01-21T01:28:17+0000","dateStarted":"2021-01-25T18:24:10+0000","dateFinished":"2021-01-25T18:24:10+0000","status":"FINISHED","errorMessage":"","progressUpdateIntervalMs":500,"commited":true,"$$hashKey":"object:41"},{"title":"Lab 2: Merge with outer join","text":"%python\n\nx.merge(other=y, left_on=\"id\", right_on=\"num\", how=\"right\")\n\nReturn value:\n\n id_l val_l num_r ch_r\n0 3.0 c 3.0 q\n1 4.0 d 4.0 p\n2 5.0 e 5.0 b\n3 NaN None 6.7 r\n4 NaN None 7.2 a","user":"OMLUSER02","dateUpdated":"2021-03-02T05:44:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812059_-419908139","id":"20210302-002652_1961767121","dateCreated":"2021-01-25T18:26:54+0000","status":"READY","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:42"},{"title":"Lab 2: Split the digit data set into four samples of 25% each","text":"%python\n\nsplits = DIGITS.split(ratio=(.25, .25, .25, .25), use_hash = False)\nprint(\"Split lengths: \", [len(split) for split in splits])\n\nReturn value:\n\nsplit lengths: [432, 460, 451, 454]\n","user":"OMLUSER02","dateUpdated":"2021-03-02T05:44:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812059_-878190289","id":"20210302-002652_394370909","dateCreated":"2021-01-21T01:29:12+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:43"},{"title":"Lab 3: Build an in-database RandomForest model ","text":"%python \n\n# Build an in-db RandomForest model and compare the RF model's attribute importance ranking with that from MLX.\n\nmodel = oml.algo.rf(ODMS_RANDOM_SEED=32).fit(X, y, case_id='CASE_ID')\n\"RF accuracy score = {:.2f}\".format(model.score(X_test, y_test))\n\ngfi = GlobalFeatureImportance(mining_function='classification', score_metric='f1_weighted', random_state=32, parallel=4)\n\nexplanation = gfi.explain(model, X, y, case_id='CASE_ID', n_iter=10)\nexplanation\n\nReturn value:\n\nGlobal Feature Importance: \n\t[0] petal length (cm): Value: 0.4858, Error: 0.0278\n\t[1] petal width (cm): Value: 0.1183, Error: 0.0276\n\t[2] sepal length (cm): Value: 0.0191, Error: 0.0115\n\t[3] sepal width (cm): Value: 0.0000, Error: 0.0000\n","user":"OMLUSER02","dateUpdated":"2021-03-02T05:44:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812059_901474663","id":"20210302-002652_1558047092","dateCreated":"2021-01-21T01:29:27+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:44"},{"title":"Lab 4: Deleting datastores","text":"%python\n\n# Delete the IRIS table from datastore IRIS, then delete the entire datastore.\n\noml.ds.delete(name=\"IRIS\", objs=[\"IRIS\"])\noml.ds.delete(name=\"IRIS\")\noml.ds.dir()\n\nReturn value:\n\nEmpty DataFrame\nColumns: [datastore_name, object_count, size, date, description]\nIndex: []","user":"OMLUSER02","dateUpdated":"2021-03-02T05:44:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812059_-693013591","id":"20210302-002652_29065529","dateCreated":"2021-01-21T01:29:41+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:45"},{"title":"Lab 5: Use group_apply","text":"%python\n\n# Use the group_apply function to count the number of each species in the data set.\n\ndef group_count(dat):\n import pandas as pd\n return pd.DataFrame([(dat[\"SPECIES\"][0], dat.shape[0])],\n columns = [\"SPECIES\", \"CNT\"])\n\nindex = oml.DataFrame(IRIS['SPECIES'])\nres = oml.group_apply(IRIS, index, func=group_count,\n oml_input_type=\"pandas.DataFrame\",\n func_value=pd.DataFrame([('a', 1)],\n columns=[\"SPECIES\", \"CNT\"]))\nres\n\nReturn value:\n\n SPECIES CNT\n0 virginica 50\n1 setosa 50\n2 versicolor 50","user":"OMLUSER02","dateUpdated":"2021-03-02T05:44:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"sql","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812059_-1113425151","id":"20210302-002652_72761703","dateCreated":"2021-01-21T01:29:52+0000","dateStarted":"2021-01-21T01:57:34+0000","dateFinished":"2021-01-21T01:57:34+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:46"},{"title":"Lab 6: AutoML Algorithm Selection","text":"%python\n\nfs_wine_cl = automl.FeatureSelection(mining_function = 'classification', score_metric = 'accuracy', parallel=2)\n\nselected_wine_features_cl = fs_wine_cl.reduce('svm_linear', WINE_X_cl, WINE_y_cl)\n\nWINE_X_reduced_cl = WINE_X_cl[:,selected_wine_features_cl]\n\nprint(\"Selected columns:\", WINE_X_reduced_cl.columns)\nprint(\"Number of columns:\")\n\"{} reduced to {}\".format(len(WINE_X_cl.columns), len(selected_wine_features_cl))\n\n\nReturn value:\n\nSelected columns: ['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']\nNumber of columns:\n'13 reduced to 11'\n\n","user":"OMLUSER02","dateUpdated":"2021-03-02T05:44:00+0000","config":{"colWidth":12,"fontSize":9,"enabled":false,"results":{},"editorSetting":{"language":"text","editOnDblClick":false},"editorMode":"ace/mode/undefined","title":true,"editorHide":false},"settings":{"params":{},"forms":{}},"interrupted":false,"jobName":"paragraph_1614644812059_379364354","id":"20210302-002652_532041159","dateCreated":"2021-01-21T01:30:04+0000","dateStarted":"2021-01-21T04:47:55+0000","dateFinished":"2021-01-21T04:48:13+0000","status":"READY","errorMessage":"","progressUpdateIntervalMs":500,"commited":false,"$$hashKey":"object:47"}],"name":"OML4Py: Try It Yourself Answers","id":"40628","noteParams":{},"noteForms":{},"angularObjects":{"ORA7A60DC9B32:shared_process":[],"MDW381939C745:shared_process":[]},"config":{"looknfeel":"default","personalizedMode":"false"},"info":{}} \ No newline at end of file