Skip to content

Instantly share code, notes, and snippets.

@egy1st
Created January 23, 2022 22:35
Show Gist options
  • Save egy1st/b62f42a6bf480ce5c2ba6ade58c0d76b to your computer and use it in GitHub Desktop.
Save egy1st/b62f42a6bf480ce5c2ba6ade58c0d76b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": "import pandas as pd\nimport time\nimport os.path\n\nimport warnings\nwarnings.filterwarnings('ignore')"
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Collecting denmune\n Downloading denmune-0.0.6.3-py3-none-any.whl (12 kB)\nRequirement already satisfied: numpy>=1.18.5 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from denmune) (1.19.2)\nRequirement already satisfied: matplotlib>=3.2.1 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from denmune) (3.3.4)\nRequirement already satisfied: seaborn>=0.10.1 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from denmune) (0.11.1)\nRequirement already satisfied: pandas>=1.0.3 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from denmune) (1.2.4)\nCollecting treelib>=1.6.1\n Downloading treelib-1.6.1.tar.gz (24 kB)\nCollecting anytree>=2.8.0\n Downloading anytree-2.8.0-py2.py3-none-any.whl (41 kB)\n\u001b[K |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 41 kB 1.6 MB/s eta 0:00:01\n\u001b[?25hRequirement already satisfied: scikit-learn>=0.22.1 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from denmune) (0.23.2)\nCollecting ngt>=1.11.6\n Downloading ngt-1.12.2-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)\n\u001b[K |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 2.2 MB 31.1 MB/s eta 0:00:01\n\u001b[?25hRequirement already satisfied: six>=1.9.0 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from anytree>=2.8.0->denmune) (1.15.0)\nRequirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from matplotlib>=3.2.1->denmune) (1.3.1)\nRequirement already satisfied: pillow>=6.2.0 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from matplotlib>=3.2.1->denmune) (8.4.0)\nRequirement already satisfied: cycler>=0.10 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from matplotlib>=3.2.1->denmune) (0.10.0)\nRequirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from matplotlib>=3.2.1->denmune) (2.4.7)\nRequirement already satisfied: python-dateutil>=2.1 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from matplotlib>=3.2.1->denmune) (2.8.1)\nCollecting pybind11\n Downloading pybind11-2.9.0-py2.py3-none-any.whl (210 kB)\n\u001b[K |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 210 kB 53.6 MB/s eta 0:00:01\n\u001b[?25hRequirement already satisfied: pytz>=2017.3 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from pandas>=1.0.3->denmune) (2021.1)\nRequirement already satisfied: joblib>=0.11 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from scikit-learn>=0.22.1->denmune) (0.17.0)\nRequirement already satisfied: scipy>=0.19.1 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from scikit-learn>=0.22.1->denmune) (1.4.1)\nRequirement already satisfied: threadpoolctl>=2.0.0 in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from scikit-learn>=0.22.1->denmune) (2.1.0)\nRequirement already satisfied: future in /opt/conda/envs/Python-3.8-main/lib/python3.8/site-packages (from treelib>=1.6.1->denmune) (0.18.2)\nBuilding wheels for collected packages: treelib\n Building wheel for treelib (setup.py) ... \u001b[?25ldone\n\u001b[?25h Created wheel for treelib: filename=treelib-1.6.1-py3-none-any.whl size=18369 sha256=f7fcbaf30a1bfd77151f876687d5c51ff9670a1aea6fe669745d5b8985211fce\n Stored in directory: /tmp/wsuser/.cache/pip/wheels/71/df/8b/6b005e3bb9b275c24dfc392cda334f43f132e85a6f17cfad3a\nSuccessfully built treelib\nInstalling collected packages: pybind11, treelib, ngt, anytree, denmune\nSuccessfully installed anytree-2.8.0 denmune-0.0.6.3 ngt-1.12.2 pybind11-2.9.0 treelib-1.6.1\n"
}
],
"source": "# install DenMune clustering algorithm using pip command from the offecial Python repository, PyPi\n# from https://pypi.org/project/denmune/\n!pip install denmune\n\n# now import it\nfrom denmune import DenMune"
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "--2022-01-23 21:45:11-- https://data.zerobytes.one/clustering/chameleon-data.zip\nResolving data.zerobytes.one (data.zerobytes.one)... 164.90.186.40\nConnecting to data.zerobytes.one (data.zerobytes.one)|164.90.186.40|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 294560 (288K) [application/zip]\nSaving to: \u2018chameleon-data.zip\u2019\n\nchameleon-data.zip 100%[===================>] 287.66K 770KB/s in 0.4s \n\n2022-01-23 21:45:12 (770 KB/s) - \u2018chameleon-data.zip\u2019 saved [294560/294560]\n\nArchive: chameleon-data.zip\n inflating: data/t5.8k.dat \n inflating: data/t7.10k.dat \n inflating: data/t8.8k.dat \n inflating: data/t4.8k.dat \n"
}
],
"source": "#let us create data folder to hold our data\nif not os.path.exists('data'):\n os.makedirs('data')\ndata_path = 'data/' \n\n# download datasets and extract them to our data folder\nif not os.path.exists(\"chameleon-data.zip\"):\n !wget https://data.zerobytes.one/clustering/chameleon-data.zip\n !unzip -o chameleon-data.zip -d data "
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Plotting train data\n"
},
{
"data": {
"image/png": "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\n",
"text/plain": "<Figure size 432x288 with 1 Axes>"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": "Validating train data\n\u251c\u2500\u2500 exec_time\n\u2502 \u251c\u2500\u2500 DenMune: 6.18\n\u2502 \u251c\u2500\u2500 NGT: 0.399\n\u2502 \u2514\u2500\u2500 t_SNE: 0\n\u251c\u2500\u2500 n_clusters\n\u2502 \u251c\u2500\u2500 actual: 0\n\u2502 \u2514\u2500\u2500 detected: 9\n\u251c\u2500\u2500 n_points\n\u2502 \u251c\u2500\u2500 dim: 2\n\u2502 \u251c\u2500\u2500 noise\n\u2502 \u2502 \u251c\u2500\u2500 type-1: 0\n\u2502 \u2502 \u2514\u2500\u2500 type-2: 516\n\u2502 \u251c\u2500\u2500 plot_size: 10000\n\u2502 \u251c\u2500\u2500 size: 10000\n\u2502 \u251c\u2500\u2500 strong: 5860\n\u2502 \u2514\u2500\u2500 weak\n\u2502 \u251c\u2500\u2500 all: 4140\n\u2502 \u251c\u2500\u2500 failed to merge: 516\n\u2502 \u2514\u2500\u2500 succeeded to merge: 3624\n\u2514\u2500\u2500 validity\n \u251c\u2500\u2500 augmented\n \u251c\u2500\u2500 test\n \u2514\u2500\u2500 train\n\n"
}
],
"source": "#@title { run: \"auto\", vertical-output: true, form-width: \"50%\" }\nchameleon_dataset = \"t7.10k.dat\" #@param [\"t4.8k.dat\", \"t5.8k.dat\", \"t7.10k.dat\", \"t8.8k.dat\"]\nshow_noize_checkbox = True #@param {type:\"boolean\"}\nk_nearest_slider = 39 #@param {type:\"slider\", min:1, max:100, step:1}\ndata_path = 'data/' \n\n# train file\ndata_file = data_path + chameleon_dataset\nX_train = pd.read_csv(data_file, sep=',', header=None)\n\nverpose_mode = True # view in-depth analysis of time complexity and outlier detection, num of clusters\nshow_plots = True # show plots on/off\n#show_noise = show_noize_checkbox # show noise and outlier on/off\n\nknn = k_nearest_slider\ndm = DenMune(train_data=X_train, k_nearest=knn, rgn_tsne=False)\nlabels, validity = dm.fit_predict(show_noise=show_noize_checkbox)\n\ndf = pd.DataFrame(dm.labels_pred)\ndf.to_csv('submission.csv')\n"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": ""
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment