Skip to content

Instantly share code, notes, and snippets.

@egy1st
Created January 10, 2022 20:04
Show Gist options
  • Save egy1st/7f0ec689b9310c4e6187f37af88a6c50 to your computer and use it in GitHub Desktop.
Save egy1st/7f0ec689b9310c4e6187f37af88a6c50 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": {
"id": "zaaLaJHT35Fd"
},
"outputs": [],
"source": "import time\nimport os.path\nimport requests\nfrom numpy import genfromtxt\n!mkdir data #let us create data folder to hold our data"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "69XXeoif35Fn",
"scrolled": true
},
"outputs": [],
"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": {
"id": "H3H8DYwU35Fo"
},
"outputs": [],
"source": "dataset = 'iris' # let us take iris dataset as an example\n\nurl = \"https://zerobytes.one/denmune_data/\"\nfile_ext = \".txt\"\nground_ext = \"-gt\"\n\n\ndataset_url = url + dataset + file_ext\ngroundtruth_url = url + dataset + ground_ext + file_ext\n\ndata_path = 'data/' # change it to whatever you put your data, set it to ''; so it will retrive from current folder\ndata_file = data_path + dataset + file_ext # i.e. 'iris' + '.txt' ==> iris.txt\n\ndata_path = 'data/' # change it to whatever you put your data, set it to ''; so it will retrive from current folder\nif not os.path.isfile(data_path + dataset + file_ext):\n req = requests.get(dataset_url)\n with open(data_path + dataset + file_ext, 'wb') as f:\n f.write(req.content)\ndata = genfromtxt(data_file , delimiter='\\t') \n\nif not os.path.isfile(data_path + dataset + ground_ext + file_ext):\n req = requests.get(groundtruth_url)\n with open(data_path + dataset + ground_ext + file_ext, 'wb') as f:\n f.write(req.content) \ndata_labels = genfromtxt(groundtruth_url , delimiter='\\t') # i.e. 'iris' + + '-gt + '.txt' ==> iris-gt.txt \n\ndata2d_ext = '-2d'\nfile_2d = data_path + dataset + data2d_ext + file_ext # 'iris' + '-2d' + '.txt' ==> iris-2d.txt"
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "xm54UWO835Fq",
"outputId": "ebd47b77-4038-4415-b130-357e1e856ff0"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "Dataset's Groundtruth\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": "\n ==================================================================================================== \n\nDenMune Analyzer\n\u251c\u2500\u2500 exec_time\n\u2502 \u251c\u2500\u2500 DenMune: 0.014\n\u2502 \u251c\u2500\u2500 NGT: 0.002\n\u2502 \u2514\u2500\u2500 t_SNE: 0.594\n\u251c\u2500\u2500 n_clusters\n\u2502 \u251c\u2500\u2500 actual: 3\n\u2502 \u2514\u2500\u2500 detected: 3\n\u251c\u2500\u2500 n_points\n\u2502 \u251c\u2500\u2500 dim: 4\n\u2502 \u251c\u2500\u2500 noise\n\u2502 \u2502 \u251c\u2500\u2500 type-1: 0\n\u2502 \u2502 \u2514\u2500\u2500 type-2: 0\n\u2502 \u251c\u2500\u2500 size: 150\n\u2502 \u251c\u2500\u2500 strong: 86\n\u2502 \u2514\u2500\u2500 weak\n\u2502 \u251c\u2500\u2500 all: 64\n\u2502 \u251c\u2500\u2500 failed to merge: 0\n\u2502 \u2514\u2500\u2500 succeeded to merge: 64\n\u2514\u2500\u2500 validity\n \u251c\u2500\u2500 ACC: 135\n \u251c\u2500\u2500 AMI: 0.795\n \u251c\u2500\u2500 ARI: 0.746\n \u251c\u2500\u2500 F1: 0.898\n \u251c\u2500\u2500 NMI: 0.798\n \u251c\u2500\u2500 completeness: 0.809\n \u2514\u2500\u2500 homogeneity: 0.787\n\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": "k= 11 F1 score is: 0.898\n"
}
],
"source": "# Denmune's Paramaters\nverpose_mode = True # view in-depth analysis of time complexity and outlier detection, num of clusters\nshow_groundtrugh = True # show plots on/off\nshow_noise = True # show noise and outlier on/off\n\nknn = 11\ndm = DenMune(data=data, file_2d=file_2d, k_nearest=knn, verpose=verpose_mode, show_noise=show_noise, rgn_tsne=False)\n\nif show_groundtrugh:\n # Let us plot the groundtruth of this dataset which is reduced to 2-d using t-SNE\n print (\"Dataset\\'s Groundtruth\")\n dm.plot_clusters(labels=data_labels, ground=True)\n print('\\n', \"=====\" * 20 , '\\n') \n\nlabels_pred = dm.fit_predict()\nvalidity = dm.validate_Clusters(labels_true=data_labels, labels_pred=labels_pred)\n\ndm.plot_clusters(labels=labels_pred, show_noise=show_noise)\n \nvalidity_key = \"F1\"\n# Acc=1, F1-score=2, NMI=3, AMI=4, ARI=5, Homogeneity=6, and Completeness=7 \nprint ('k=' , knn, validity_key , 'score is:', round(validity[validity_key],3))"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "vCu_H5vz-Oia"
},
"outputs": [],
"source": ""
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "iris_dataset.ipynb",
"provenance": []
},
"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