{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "%matplotlib inline"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "\n# Artificial S-curve visualization\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false
      },
      "outputs": [],
      "source": [
        "import pandas as pd\nfrom sklearn import datasets\nfrom sklearn import manifold\nfrom gtmx import GTMBase\n\nimport matplotlib.pyplot as plt\n\n\nX,y = datasets.make_s_curve(n_samples=1000, random_state=0)\nman = manifold.TSNE(n_components=2, init='pca', random_state=0)\ntsne = man.fit_transform(X)\nman = manifold.MDS(max_iter=100, n_init=1, random_state=0)\nmds = man.fit_transform(X)\nman = manifold.LocallyLinearEmbedding(n_neighbors=20, n_components=2,\n                                      eigen_solver='auto',\n                                      method=\"standard\",\n                                      random_state=0)\nlle = man.fit_transform(X)\n\n# Construct GTM\n\n\ngtm = GTMBase(s=0.3, map_shape=(12, 12), rbf_shape=(2, 2), l=0.01)\n\ngtm_means = gtm.fit_transform(X)\ngtm_modes = gtm.fit_transform(X)\n\ndgtm_modes = pd.DataFrame(gtm_modes, columns=[\"x1\", \"x2\"])\ndgtm_modes[\"label\"] = y\n\n\nfig, axs = plt.subplots(2, 2, constrained_layout=True)\n\n\naxs[0, 0].scatter(dgtm_modes['x1'], dgtm_modes['x2'])\naxs[0, 0].set_title('gtm modes')\n\ndgtm_means = pd.DataFrame(gtm_means, columns=[\"x1\", \"x2\"])\ndgtm_means[\"label\"] = y\n\naxs[0, 1].scatter(dgtm_means['x1'], dgtm_means['x2'])\naxs[0, 1].set_title('gtm means')\n\ndtsne = pd.DataFrame(tsne, columns=[\"x1\", \"x2\"])\ndmds = pd.DataFrame(mds, columns=[\"x1\", \"x2\"])\ndlle = pd.DataFrame(lle, columns=[\"x1\", \"x2\"])\ndtsne[\"label\"] = y\ndmds[\"label\"] = y\ndlle[\"label\"] = y\n\n\naxs[1, 0].scatter(dtsne['x1'], dtsne['x2'])\naxs[1, 0].set_title('t-SNE')\n\naxs[1, 1].scatter(dmds['x1'], dmds['x2'])\naxs[1, 1].set_title('MDS')\n\n\nplt.show()"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "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.9.13"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}