From 6b58c59827c52a33760d15e83d086cd536a14568 Mon Sep 17 00:00:00 2001
From: Taurean Dyer <46935140+taureandyernv@users.noreply.github.com>
Date: Tue, 9 Aug 2022 16:24:12 -0700
Subject: [PATCH 1/2] updated column detypes
---
.../federated_query_demo_dasksql.ipynb | 207 ++++++++----------
1 file changed, 91 insertions(+), 116 deletions(-)
diff --git a/getting_started_materials/hello_worlds/dask-sql/federated_query_demo_dasksql.ipynb b/getting_started_materials/hello_worlds/dask-sql/federated_query_demo_dasksql.ipynb
index 1bfb2b84..2c2e1c20 100644
--- a/getting_started_materials/hello_worlds/dask-sql/federated_query_demo_dasksql.ipynb
+++ b/getting_started_materials/hello_worlds/dask-sql/federated_query_demo_dasksql.ipynb
@@ -4,12 +4,12 @@
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
- "id": "8AdUt3HiUrc3"
+ "id": "8AdUt3HiUrc3",
+ "tags": []
},
"source": [
"# Querying Multiple Data Formats \n",
- "*By Winston Robson,\n",
- "Edited for Dask-SQL by Shondace Thomas*\n",
+ "*By Winston Robson, edited for Dask-SQL by Shondace Thomas*\n",
"\n",
"In this notebook, we will cover: \n",
"- How to create DaskSQL tables from: \n",
@@ -30,48 +30,10 @@
{
"cell_type": "code",
"execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "--2021-12-10 08:33:53-- https://raw.githubusercontent.com/BlazingDB/bsql-demos/master/data/cancer_data_00.csv\n",
- "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.109.133, 185.199.108.133, ...\n",
- "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.\n",
- "HTTP request sent, awaiting response... 200 OK\n",
- "Length: 1233 (1.2K) [text/plain]\n",
- "Saving to: ‘../../../data/dask-sql/cancer_data_00.csv’\n",
- "\n",
- "cancer_data_00.csv 100%[===================>] 1.20K --.-KB/s in 0s \n",
- "\n",
- "2021-12-10 08:33:54 (35.2 MB/s) - ‘../../../data/dask-sql/cancer_data_00.csv’ saved [1233/1233]\n",
- "\n",
- "--2021-12-10 08:33:54-- https://blazingsql-colab.s3.amazonaws.com/cancer_data/cancer_data_01.parquet\n",
- "Resolving blazingsql-colab.s3.amazonaws.com (blazingsql-colab.s3.amazonaws.com)... 52.216.110.35\n",
- "Connecting to blazingsql-colab.s3.amazonaws.com (blazingsql-colab.s3.amazonaws.com)|52.216.110.35|:443... connected.\n",
- "HTTP request sent, awaiting response... 200 OK\n",
- "Length: 2364 (2.3K) [binary/octet-stream]\n",
- "Saving to: ‘../../../data/dask-sql/cancer_data_01.parquet’\n",
- "\n",
- "cancer_data_01.parq 100%[===================>] 2.31K --.-KB/s in 0s \n",
- "\n",
- "2021-12-10 08:33:54 (72.7 MB/s) - ‘../../../data/dask-sql/cancer_data_01.parquet’ saved [2364/2364]\n",
- "\n",
- "--2021-12-10 08:33:55-- https://raw.githubusercontent.com/BlazingDB/bsql-demos/master/data/cancer_data_02.csv\n",
- "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.110.133, 185.199.111.133, ...\n",
- "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n",
- "HTTP request sent, awaiting response... 200 OK\n",
- "Length: 1854 (1.8K) [text/plain]\n",
- "Saving to: ‘../../../data/dask-sql/cancer_data_02.csv’\n",
- "\n",
- "cancer_data_02.csv 100%[===================>] 1.81K --.-KB/s in 0s \n",
- "\n",
- "2021-12-10 08:33:55 (22.6 MB/s) - ‘../../../data/dask-sql/cancer_data_02.csv’ saved [1854/1854]\n",
- "\n"
- ]
- }
- ],
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
"source": [
"import os\n",
"\n",
@@ -115,7 +77,8 @@
},
"colab_type": "code",
"id": "azZ7l2q7odYT",
- "outputId": "a5302d6e-307e-45c5-a682-c786cc999a40"
+ "outputId": "a5302d6e-307e-45c5-a682-c786cc999a40",
+ "tags": []
},
"outputs": [],
"source": [
@@ -135,7 +98,9 @@
{
"cell_type": "code",
"execution_count": 3,
- "metadata": {},
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"data": {
@@ -179,7 +144,8 @@
"metadata": {
"colab": {},
"colab_type": "code",
- "id": "HhRhj-ZvZygH"
+ "id": "HhRhj-ZvZygH",
+ "tags": []
},
"outputs": [],
"source": [
@@ -214,7 +180,8 @@
"metadata": {
"colab": {},
"colab_type": "code",
- "id": "HJuvtJDYTMyb"
+ "id": "HJuvtJDYTMyb",
+ "tags": []
},
"outputs": [],
"source": [
@@ -237,12 +204,13 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "14GwxmLsTV_p",
- "scrolled": true
+ "scrolled": true,
+ "tags": []
},
"outputs": [],
"source": [
@@ -250,7 +218,7 @@
"\n",
"# define column names & types\n",
"col_names = ['compactness', 'symmetry', 'fractal_dimension']\n",
- "col_types = ['float32', 'float32', 'float32', 'float32']\n",
+ "col_types = ['float32', 'float32', 'float32']\n",
"\n",
"# make GPU DataFrame from CSV w/ cuDF\n",
"gdf_02 = cudf.read_csv(path+'cancer_data_02.csv', names=col_names, dtype=col_types)\n",
@@ -261,8 +229,10 @@
},
{
"cell_type": "code",
- "execution_count": 7,
- "metadata": {},
+ "execution_count": 8,
+ "metadata": {
+ "tags": []
+ },
"outputs": [],
"source": [
"import time\n",
@@ -284,7 +254,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
@@ -293,7 +263,8 @@
"colab_type": "code",
"id": "HOYSFebvzGcX",
"outputId": "ad133dfd-540e-4142-8f12-a4a70d803bb6",
- "scrolled": true
+ "scrolled": true,
+ "tags": []
},
"outputs": [
{
@@ -332,84 +303,84 @@
"
\n",
" 0 | \n",
" 0.0 | \n",
- " 16.0 | \n",
- " 14.0 | \n",
- " 86.0 | \n",
- " 520.0 | \n",
- " 0.108 | \n",
- " 0.154 | \n",
- " 0.194 | \n",
- " 0.069 | \n",
+ " 17.0 | \n",
+ " 21.0 | \n",
+ " 81.0 | \n",
+ " 503.0 | \n",
+ " 0.098 | \n",
+ " 0.052 | \n",
+ " 0.159 | \n",
+ " 0.057 | \n",
"
\n",
" \n",
" 1 | \n",
" 1.0 | \n",
- " 10.0 | \n",
- " 24.0 | \n",
- " 97.0 | \n",
- " 668.0 | \n",
- " 0.117 | \n",
- " 0.148 | \n",
- " 0.195 | \n",
- " 0.067 | \n",
+ " 21.0 | \n",
+ " 18.0 | \n",
+ " 124.0 | \n",
+ " 1076.0 | \n",
+ " 0.110 | \n",
+ " 0.169 | \n",
+ " 0.191 | \n",
+ " 0.060 | \n",
"
\n",
" \n",
" 2 | \n",
- " 1.0 | \n",
- " 23.0 | \n",
+ " 0.0 | \n",
+ " 9.0 | \n",
" 26.0 | \n",
- " 78.0 | \n",
- " 451.0 | \n",
- " 0.105 | \n",
- " 0.071 | \n",
- " 0.190 | \n",
- " 0.066 | \n",
+ " 59.0 | \n",
+ " 251.0 | \n",
+ " 0.107 | \n",
+ " 0.141 | \n",
+ " 0.211 | \n",
+ " 0.080 | \n",
"
\n",
" \n",
" 3 | \n",
- " 1.0 | \n",
- " 23.0 | \n",
+ " 0.0 | \n",
+ " 9.0 | \n",
" 26.0 | \n",
- " 78.0 | \n",
- " 451.0 | \n",
- " 0.105 | \n",
- " 0.071 | \n",
- " 0.162 | \n",
- " 0.057 | \n",
+ " 59.0 | \n",
+ " 261.0 | \n",
+ " 0.077 | \n",
+ " 0.088 | \n",
+ " 0.234 | \n",
+ " 0.070 | \n",
"
\n",
" \n",
" 4 | \n",
" 1.0 | \n",
- " 23.0 | \n",
- " 12.0 | \n",
- " 151.0 | \n",
- " 954.0 | \n",
- " 0.143 | \n",
- " 0.278 | \n",
- " 0.242 | \n",
- " 0.079 | \n",
+ " 22.0 | \n",
+ " 25.0 | \n",
+ " 90.0 | \n",
+ " 584.0 | \n",
+ " 0.101 | \n",
+ " 0.128 | \n",
+ " 0.166 | \n",
+ " 0.066 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " diagnosis_result radius texture perimeter area smoothness \\\n",
- "0 0.0 16.0 14.0 86.0 520.0 0.108 \n",
- "1 1.0 10.0 24.0 97.0 668.0 0.117 \n",
- "2 1.0 23.0 26.0 78.0 451.0 0.105 \n",
- "3 1.0 23.0 26.0 78.0 451.0 0.105 \n",
- "4 1.0 23.0 12.0 151.0 954.0 0.143 \n",
+ " diagnosis_result radius texture perimeter area smoothness \\\n",
+ "0 0.0 17.0 21.0 81.0 503.0 0.098 \n",
+ "1 1.0 21.0 18.0 124.0 1076.0 0.110 \n",
+ "2 0.0 9.0 26.0 59.0 251.0 0.107 \n",
+ "3 0.0 9.0 26.0 59.0 261.0 0.077 \n",
+ "4 1.0 22.0 25.0 90.0 584.0 0.101 \n",
"\n",
" compactness symmetry fractal_dimension \n",
- "0 0.154 0.194 0.069 \n",
- "1 0.148 0.195 0.067 \n",
- "2 0.071 0.190 0.066 \n",
- "3 0.071 0.162 0.057 \n",
- "4 0.278 0.242 0.079 "
+ "0 0.052 0.159 0.057 \n",
+ "1 0.169 0.191 0.060 \n",
+ "2 0.141 0.211 0.080 \n",
+ "3 0.088 0.234 0.070 \n",
+ "4 0.128 0.166 0.066 "
]
},
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
@@ -438,14 +409,16 @@
},
{
"cell_type": "code",
- "execution_count": 9,
- "metadata": {},
+ "execution_count": 10,
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "run_stuff took 1.8894765377044678s\n"
+ "run_stuff took 3.951575756072998s\n"
]
}
],
@@ -456,8 +429,10 @@
},
{
"cell_type": "code",
- "execution_count": 10,
- "metadata": {},
+ "execution_count": 11,
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"data": {
@@ -465,7 +440,7 @@
"316"
]
},
- "execution_count": 10,
+ "execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
@@ -499,7 +474,7 @@
"toc_visible": true
},
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -513,7 +488,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.12"
+ "version": "3.8.13"
}
},
"nbformat": 4,
From 2b8bca87f2477066e7d339121ce47bfcfbd926b2 Mon Sep 17 00:00:00 2001
From: Taurean Dyer <46935140+taureandyernv@users.noreply.github.com>
Date: Tue, 9 Aug 2022 16:47:50 -0700
Subject: [PATCH 2/2] Fixed skl trustworthiness import
---
.../umap_demo_full.ipynb | 379 +++++++-----------
1 file changed, 144 insertions(+), 235 deletions(-)
diff --git a/community_tutorials_and_guides/umap_demo_full.ipynb b/community_tutorials_and_guides/umap_demo_full.ipynb
index 0fe2a4d6..f9a7f694 100644
--- a/community_tutorials_and_guides/umap_demo_full.ipynb
+++ b/community_tutorials_and_guides/umap_demo_full.ipynb
@@ -10,19 +10,27 @@
{
"cell_type": "code",
"execution_count": 1,
- "metadata": {},
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Requirement already satisfied: umap-learn in /opt/conda/envs/rapids/lib/python3.6/site-packages (0.3.10)\n",
- "Requirement already satisfied: scikit-learn>=0.16 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from umap-learn) (0.22)\n",
- "Requirement already satisfied: numba>=0.37 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from umap-learn) (0.46.0)\n",
- "Requirement already satisfied: scipy>=0.19 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from umap-learn) (1.4.1)\n",
- "Requirement already satisfied: numpy>=1.13 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from umap-learn) (1.17.3)\n",
- "Requirement already satisfied: joblib>=0.11 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from scikit-learn>=0.16->umap-learn) (0.14.1)\n",
- "Requirement already satisfied: llvmlite>=0.30.0dev0 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from numba>=0.37->umap-learn) (0.30.0)\n"
+ "Requirement already satisfied: umap-learn in /opt/conda/envs/rapids/lib/python3.8/site-packages (0.5.3)\n",
+ "Requirement already satisfied: tqdm in /opt/conda/envs/rapids/lib/python3.8/site-packages (from umap-learn) (4.64.0)\n",
+ "Requirement already satisfied: pynndescent>=0.5 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from umap-learn) (0.5.7)\n",
+ "Requirement already satisfied: scipy>=1.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from umap-learn) (1.6.0)\n",
+ "Requirement already satisfied: scikit-learn>=0.22 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from umap-learn) (0.24.2)\n",
+ "Requirement already satisfied: numpy>=1.17 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from umap-learn) (1.22.4)\n",
+ "Requirement already satisfied: numba>=0.49 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from umap-learn) (0.55.2)\n",
+ "Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from numba>=0.49->umap-learn) (0.38.1)\n",
+ "Requirement already satisfied: setuptools in /opt/conda/envs/rapids/lib/python3.8/site-packages (from numba>=0.49->umap-learn) (60.10.0)\n",
+ "Requirement already satisfied: joblib>=0.11 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from pynndescent>=0.5->umap-learn) (1.1.0)\n",
+ "Requirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from scikit-learn>=0.22->umap-learn) (3.1.0)\n",
+ "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
+ "\u001b[0m"
]
}
],
@@ -33,32 +41,41 @@
{
"cell_type": "code",
"execution_count": 2,
- "metadata": {},
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Requirement already satisfied: seaborn in /opt/conda/envs/rapids/lib/python3.6/site-packages (0.9.0)\n",
- "Requirement already satisfied: pandas>=0.15.2 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from seaborn) (0.24.2)\n",
- "Requirement already satisfied: matplotlib>=1.4.3 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from seaborn) (3.1.2)\n",
- "Requirement already satisfied: numpy>=1.9.3 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from seaborn) (1.17.3)\n",
- "Requirement already satisfied: scipy>=0.14.0 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from seaborn) (1.4.1)\n",
- "Requirement already satisfied: pytz>=2011k in /opt/conda/envs/rapids/lib/python3.6/site-packages (from pandas>=0.15.2->seaborn) (2019.3)\n",
- "Requirement already satisfied: python-dateutil>=2.5.0 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from pandas>=0.15.2->seaborn) (2.8.1)\n",
- "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib>=1.4.3->seaborn) (2.4.6)\n",
- "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib>=1.4.3->seaborn) (1.1.0)\n",
- "Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib>=1.4.3->seaborn) (0.10.0)\n",
- "Requirement already satisfied: six>=1.5 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from python-dateutil>=2.5.0->pandas>=0.15.2->seaborn) (1.13.0)\n",
- "Requirement already satisfied: setuptools in /opt/conda/envs/rapids/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib>=1.4.3->seaborn) (44.0.0.post20200102)\n",
- "Requirement already satisfied: matplotlib in /opt/conda/envs/rapids/lib/python3.6/site-packages (3.1.2)\n",
- "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib) (1.1.0)\n",
- "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib) (2.4.6)\n",
- "Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib) (2.8.1)\n",
- "Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib) (0.10.0)\n",
- "Requirement already satisfied: numpy>=1.11 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from matplotlib) (1.17.3)\n",
- "Requirement already satisfied: setuptools in /opt/conda/envs/rapids/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib) (44.0.0.post20200102)\n",
- "Requirement already satisfied: six>=1.5 in /opt/conda/envs/rapids/lib/python3.6/site-packages (from python-dateutil>=2.1->matplotlib) (1.13.0)\n"
+ "Requirement already satisfied: seaborn in /opt/conda/envs/rapids/lib/python3.8/site-packages (0.11.2)\n",
+ "Requirement already satisfied: numpy>=1.15 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from seaborn) (1.22.4)\n",
+ "Requirement already satisfied: scipy>=1.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from seaborn) (1.6.0)\n",
+ "Requirement already satisfied: matplotlib>=2.2 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from seaborn) (3.5.2)\n",
+ "Requirement already satisfied: pandas>=0.23 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from seaborn) (1.4.3)\n",
+ "Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (0.11.0)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (1.4.4)\n",
+ "Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (2.8.2)\n",
+ "Requirement already satisfied: pillow>=6.2.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (9.1.1)\n",
+ "Requirement already satisfied: packaging>=20.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (21.3)\n",
+ "Requirement already satisfied: pyparsing>=2.2.1 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (3.0.9)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib>=2.2->seaborn) (4.34.4)\n",
+ "Requirement already satisfied: pytz>=2020.1 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from pandas>=0.23->seaborn) (2022.1)\n",
+ "Requirement already satisfied: six>=1.5 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from python-dateutil>=2.7->matplotlib>=2.2->seaborn) (1.16.0)\n",
+ "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
+ "\u001b[0mRequirement already satisfied: matplotlib in /opt/conda/envs/rapids/lib/python3.8/site-packages (3.5.2)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (1.4.4)\n",
+ "Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (0.11.0)\n",
+ "Requirement already satisfied: pyparsing>=2.2.1 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (3.0.9)\n",
+ "Requirement already satisfied: pillow>=6.2.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (9.1.1)\n",
+ "Requirement already satisfied: packaging>=20.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (21.3)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (4.34.4)\n",
+ "Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (2.8.2)\n",
+ "Requirement already satisfied: numpy>=1.17 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from matplotlib) (1.22.4)\n",
+ "Requirement already satisfied: six>=1.5 in /opt/conda/envs/rapids/lib/python3.8/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n",
+ "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
+ "\u001b[0m"
]
}
],
@@ -69,30 +86,36 @@
},
{
"cell_type": "code",
- "execution_count": 8,
- "metadata": {},
+ "execution_count": 3,
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Thu Jan 23 08:54:34 2020 \n",
+ "Tue Aug 9 23:29:52 2022 \n",
"+-----------------------------------------------------------------------------+\n",
- "| NVIDIA-SMI 418.39 Driver Version: 418.39 CUDA Version: 10.1 |\n",
+ "| NVIDIA-SMI 510.73.05 Driver Version: 510.73.05 CUDA Version: 11.6 |\n",
"|-------------------------------+----------------------+----------------------+\n",
"| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n",
"| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n",
+ "| | | MIG M. |\n",
"|===============================+======================+======================|\n",
"| 0 Quadro GV100 Off | 00000000:15:00.0 Off | Off |\n",
- "| 29% 41C P2 26W / 250W | 3525MiB / 32478MiB | 0% Default |\n",
+ "| 42% 49C P2 29W / 250W | 25315MiB / 32768MiB | 0% Default |\n",
+ "| | | N/A |\n",
"+-------------------------------+----------------------+----------------------+\n",
- "| 1 Quadro GV100 Off | 00000000:2D:00.0 On | Off |\n",
- "| 34% 47C P0 29W / 250W | 284MiB / 32470MiB | 24% Default |\n",
+ "| 1 Quadro GV100 Off | 00000000:2D:00.0 Off | Off |\n",
+ "| 34% 47C P2 29W / 250W | 2022MiB / 32768MiB | 0% Default |\n",
+ "| | | N/A |\n",
"+-------------------------------+----------------------+----------------------+\n",
" \n",
"+-----------------------------------------------------------------------------+\n",
- "| Processes: GPU Memory |\n",
- "| GPU PID Type Process name Usage |\n",
+ "| Processes: |\n",
+ "| GPU GI CI PID Type Process name GPU Memory |\n",
+ "| ID ID Usage |\n",
"|=============================================================================|\n",
"+-----------------------------------------------------------------------------+\n"
]
@@ -104,18 +127,11 @@
},
{
"cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/opt/conda/envs/rapids/lib/python3.6/site-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.manifold.t_sne module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.manifold. Anything that cannot be imported from sklearn.manifold is now part of the private API.\n",
- " warnings.warn(message, FutureWarning)\n"
- ]
- }
- ],
+ "execution_count": 4,
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
"source": [
"import os\n",
"import pandas as pd\n",
@@ -125,7 +141,7 @@
"import umap\n",
"\n",
"# libraries for scoring/clustering\n",
- "from sklearn.manifold.t_sne import trustworthiness\n",
+ "from sklearn.manifold import trustworthiness\n",
"\n",
"# GPU UMAP\n",
"import cudf\n",
@@ -148,8 +164,10 @@
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {},
+ "execution_count": 5,
+ "metadata": {
+ "tags": []
+ },
"outputs": [],
"source": [
"if not os.path.exists('fashion_mnist'):\n",
@@ -158,8 +176,10 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {},
+ "execution_count": 6,
+ "metadata": {
+ "tags": []
+ },
"outputs": [],
"source": [
"# https://github.com/zalandoresearch/fashion-mnist/blob/master/utils/mnist_reader.py\n",
@@ -189,8 +209,10 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {},
+ "execution_count": 7,
+ "metadata": {
+ "tags": []
+ },
"outputs": [],
"source": [
"train, train_labels = load_mnist('fashion_mnist/data/fashion', kind='train')\n",
@@ -208,8 +230,10 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {},
+ "execution_count": 8,
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"data": {
@@ -217,7 +241,7 @@
"'Train shape: (60000, 784) and Test Shape: (10000, 784)'"
]
},
- "execution_count": 5,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
@@ -228,8 +252,10 @@
},
{
"cell_type": "code",
- "execution_count": 6,
- "metadata": {},
+ "execution_count": 9,
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"data": {
@@ -237,7 +263,7 @@
"(784,)"
]
},
- "execution_count": 6,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
@@ -255,29 +281,29 @@
},
{
"cell_type": "code",
- "execution_count": 7,
- "metadata": {},
+ "execution_count": 10,
+ "metadata": {
+ "tags": []
+ },
"outputs": [
{
"data": {
"text/plain": [
- ""
+ ""
]
},
- "execution_count": 7,
+ "execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
- "image/png": "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\n",
+ "image/png": "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Vul+u90u3d+wYUPpfje50wwAAAnRDAAACdEMAAAJ0QwAAAnRDAAACdEMAAAJ0QwAAAnRDAAAiTSaJycnY3x8PH71V381/vM///PDt7/22muxa9eu+OIXvxi7du2K119/vfKcAADQNWk033vvvXHo0KH4zGc+8xNv37dvX0xMTMTx48djYmIiHnnkkbJDAgBAN6XRvH379hgZGfmJt01PT8epU6di586dERGxc+fOOHXqVLzzzjs1pwQAgC76hb6meWpqKm6//fZoNBoREdFoNGLdunUxNTW1qIcDAIDlwDcCAgBA4heK5pGRkTh79my0Wq2IiGi1WnHu3LlrvowDAABuBr9QNK9duzbGxsbi6NGjERFx9OjRGBsbi+Hh4UU9HAAALAd92f/g8ccfj+effz4uXLgQX/3qV2NoaCi+9a1vxaOPPhp79uyJp556KgYHB2NycnIpzgsAAEsujea9e/fG3r17r3n75s2b45lnnik5FAAALCe+ERAAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAAS6Y+cA258PT09pfu9vbX//v3Bbx+tMjAwULofEfHpT3+6dP/q1as39H5ERH9/f+n+3Nxc6f7MzEzp/tDQUOl+RMT09HTp/urVq0v3m81m6X5ExOXLl0v3b7311tL973//+6X7S/HxdPv27SW77XY73nvvvY993J1mAABIiGYAAEiIZgAASIhmAABIiGYAAEiIZgAASIhmAABIiGYAAEiIZgAASIhmAABIiGYAAEiIZgAASIhmAABIiGYAAEiIZgAASIhmAABIiGYAAEiIZgAASIhmAABIiGYAAEiIZgAASIhmAABIiGYAAEj0dfsAQL1Op1O632g0SvdbrVbp/q5du0r3IyLuuOOO0v3z58+X7q9atap0PyKi3W6X7t9yyy2l+xs2bCjdn5ubK92PiOjv7y/dn5+fL93v66vPmuprYe3ataX7Bw4cKN3funVr6X5E3eucfa5xpxkAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAASohkAABKiGQAAEqIZAAASfd0+AFCvr6/2Up+bmyvdr3by5Mny57h69Wrp/ooVK0r3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\n",
"text/plain": [
- "