Created
July 3, 2019 05:30
-
-
Save kiwamizamurai/9b298709e5a7b8d1673e31d725ccfc37 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nbformat": 4, | |
| "nbformat_minor": 0, | |
| "metadata": { | |
| "colab": { | |
| "name": "kernel_kmeans.ipynb", | |
| "version": "0.3.2", | |
| "provenance": [] | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 2 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython2", | |
| "version": "2.7.14" | |
| }, | |
| "kernelspec": { | |
| "display_name": "Python [conda env:anaconda]", | |
| "language": "python", | |
| "name": "conda-env-anaconda-py" | |
| } | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "ZDFW4TaPtFNR", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "import numpy as np\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "import seaborn as sns\n", | |
| "\n", | |
| "sns.set(style=\"whitegrid\", palette=\"muted\", color_codes=True)\n", | |
| "sns.set_style(\"whitegrid\", {'grid.linestyle': '--'})\n", | |
| "red = sns.xkcd_rgb[\"light red\"]\n", | |
| "green = sns.xkcd_rgb[\"medium green\"]\n", | |
| "blue = sns.xkcd_rgb[\"denim blue\"]\n", | |
| "\n", | |
| "from pylab import rcParams\n", | |
| "rcParams['figure.figsize'] = 6, 6\n", | |
| "rcParams['font.size'] = 20" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "TsjJdT_gtFNa", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 420 | |
| }, | |
| "outputId": "57abcdf2-67f8-47c1-95a8-f10c573247f1" | |
| }, | |
| "source": [ | |
| "theta = np.linspace(-2*np.pi, 2*np.pi, 50)\n", | |
| "X1 = np.cos(theta)\n", | |
| "Y1 = np.sin(theta)\n", | |
| "X2 = 7 * np.cos(theta)\n", | |
| "Y2 = 7 * np.sin(theta)\n", | |
| "\n", | |
| "\n", | |
| "plt.scatter(X1, Y1, s=20, c='blue', alpha=0.5, marker=\"x\")\n", | |
| "plt.scatter(X2, Y2, s=20, c='red', alpha=0.5)" | |
| ], | |
| "execution_count": 122, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.collections.PathCollection at 0x7f341aa8d9b0>" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| }, | |
| "execution_count": 122 | |
| }, | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x432 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "UsP6gvZ_tFNh", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 74 | |
| }, | |
| "outputId": "297bfa9c-3cf8-4060-8010-ad9bfc281812" | |
| }, | |
| "source": [ | |
| "data = np.concatenate((np.concatenate((X1.reshape(50,1), Y1.reshape(50,1)), axis = 1),\n", | |
| " np.concatenate((X2.reshape(50,1), Y2.reshape(50,1)), axis = 1)), axis = 0)\n", | |
| "data.shape" | |
| ], | |
| "execution_count": 123, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "data": { | |
| "text/plain": [ | |
| "(100, 2)" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| }, | |
| "execution_count": 123 | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "H9-gBX_atFNw", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Kernel Kmeans\n", | |
| "- Seperate E-step and M-step" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "AMg71QBktFNw", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "class Kernel_Kmeans(object):\n", | |
| " \n", | |
| " def __init__(self, n_clusters=3, max_iter=500, kernel=\"linear\",\n", | |
| " gamma=None, degree=3, coef0=1, kernel_params=None):\n", | |
| " \n", | |
| " self.n_clusters = n_clusters\n", | |
| " self.max_iter = max_iter\n", | |
| " self.kernel = kernel\n", | |
| " self.gamma = gamma\n", | |
| " self.degree = degree\n", | |
| " self.coef0 = coef0\n", | |
| " self.kernel_params = kernel_params\n", | |
| " \n", | |
| " \n", | |
| " def kernel_matrix(self, X, Y = None):\n", | |
| " if callable(self.kernel):\n", | |
| " prams = self.kernel_params or {}\n", | |
| " else:\n", | |
| " params = {\"gamma\": self.gamma,\n", | |
| " \"degree\": self.degree,\n", | |
| " \"coef0\": self.coef0}\n", | |
| " \n", | |
| " return pairwise_kernels(X, Y, metric = self.kernel,\n", | |
| " filter_params = True, **params)\n", | |
| " \n", | |
| " \n", | |
| " def initialize_cluster(self):\n", | |
| " self.labels = np.random.choice(range(self.n_clusters), self.num)\n", | |
| " self.cluster_size = np.bincount(self.labels)\n", | |
| " \n", | |
| " \n", | |
| " def distance(self):\n", | |
| " self.distance_box = np.zeros((self.num, self.n_clusters))\n", | |
| " for i in range(self.num):\n", | |
| " for j in range(self.n_clusters):\n", | |
| " tmp_data = self.X[self.labels == j]\n", | |
| " tmp_xm = np.sum(self.kernel_matrix(tmp_data, Y = self.X[i].reshape(1, self.X.shape[1])))/self.cluster_size[j]\n", | |
| " tmp_mm = np.sum(self.kernel_matrix(tmp_data))/(self.cluster_size[j]**2)\n", | |
| " self.distance_box[i,j] = tmp_mm - 2*tmp_xm\n", | |
| " \n", | |
| " \n", | |
| " def assign(self):\n", | |
| " self.labels = np.argmin(self.distance_box, axis = 1)\n", | |
| " self.cluster_size = np.bincount(self.labels)\n", | |
| "\n", | |
| " \n", | |
| " def fit(self, data):\n", | |
| " self.X = data\n", | |
| " self.num = self.X.shape[0]\n", | |
| " self.initialize_cluster()\n", | |
| " for ite in range(self.max_iter):\n", | |
| " # if np.size(self.cluster_size) == 1:\n", | |
| " # break\n", | |
| " self.distance()\n", | |
| " self.assign()\n", | |
| "\n", | |
| " def plot(self, X):\n", | |
| " for i in range(self.n_clusters):\n", | |
| " mask = kkm.labels == i\n", | |
| " plt.scatter(X[mask][:,0], X[mask][:,1], s=30, alpha=0.5, marker=\"+\") " | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "sGjLOwF-1ggq", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### pairwise_kernelsについて\n", | |
| "\n", | |
| "kernel-matrixを計算する関数\n", | |
| "- https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.pairwise_kernels.html#sklearn.metrics.pairwise.pairwise_kernels\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "9Gm00xGm1s4-", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 107 | |
| }, | |
| "outputId": "3c593b4b-da55-402b-84ed-48f83368dc0a" | |
| }, | |
| "source": [ | |
| "X = np.array([[2, 3], [3, 5], [5, 8]])\n", | |
| "Y = np.array([[1, 0], [2, 1]])\n", | |
| "\n", | |
| "pairwise_kernels(X, Y, metric='linear')" | |
| ], | |
| "execution_count": 125, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "data": { | |
| "text/plain": [ | |
| "array([[ 2., 7.],\n", | |
| " [ 3., 11.],\n", | |
| " [ 5., 18.]])" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| }, | |
| "execution_count": 125 | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "eGno_3Or0xbX", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Linear\n", | |
| "\n", | |
| "$$\n", | |
| "k(x, y)=x^{\\top} y\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "4bMbVCFLtFNz", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 403 | |
| }, | |
| "outputId": "d39669f7-7a45-4171-9246-7b1214e942c5" | |
| }, | |
| "source": [ | |
| "kkm = Kernel_Kmeans(n_clusters=2, kernel=\"linear\")\n", | |
| "kkm.fit(data)\n", | |
| "kkm.plot(data)" | |
| ], | |
| "execution_count": 126, | |
| "outputs": [ | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 432x432 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "Yh8QI6yI1IXz", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### RBF\n", | |
| "\n", | |
| "$$\n", | |
| "k(x, y)=\\exp \\left(-\\gamma\\|x-y\\|^{2}\\right)\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "PSssrVvGtFNx", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 403 | |
| }, | |
| "outputId": "c7dd6209-e803-4ffc-8f58-e71c4115fd10" | |
| }, | |
| "source": [ | |
| "kkm = Kernel_Kmeans(n_clusters=2, kernel=\"rbf\")\n", | |
| "kkm.fit(data)\n", | |
| "kkm.plot(data)" | |
| ], | |
| "execution_count": 127, | |
| "outputs": [ | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "image/png": "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\n9rHKykqam5vp6elhfHw8+3h7e3v28/7rUBkAX77+EuLxOHv27Ml+Xk1NDY2NjXR3d2f34MdiMdra\n2hgYGGBwcDBSr2l4eJj+/v7sY01NTfaaFtlrmpiYIJFISLym83eCltL3KYzXdOTIEeYrlOPwf/CD\nH/D8889nj1E9evQoF110EY888ghXX331rF8b1ePwOzo6aG9vl9i+l2lVodSr1ApavUqtEL3ehczO\nUFb4d955J3feeWf24+uuu45nnnmGSy+9NIynd+K/DpUxyqizSx4bY0zY7Dh8HxdeeKHrhMAqKytd\nJ8yLUq9SK2j1KrWCXq8Xu7TCHGxlb4yJIru0Qoh6enpcJwSm1ApavUqtoNWr1Ap6vV7s8sg+Mnvk\nFVb2uUcPKFDqVWoFrV6lVtDr9WIrfGOMKRE28I0xpkTYTltjjAkoSgdx2E7bEA0PD7tOCEypFbR6\nlVpBq1epFfR6vdjA95F7ynTUKbWCVq9SK2j1KrXu6hjl5f97OPC186PKBr4xxpQIOyzTGGPmsKm9\nmg4OMkpF9mNFtsL30dTU5DohMKVW0OpVagWtXqVW0Ov1Yit8H/F43HVCYEqtoNWr1ApavUqtMN27\nqb3CdUZebIXvI/ea1lGn1ApavUqtoNWr1Ap6vV5KduCr7mU3xpiFKtmBb4wxpabktuFnVvVz3dik\npqamuGF5UGoFrV6lVtDqVWoFvV4vtsL30djY6DohMKVW0OpVagWtXqVW0Ov1UnIDf1N7NZvaq6mr\nqqCuqiL78fm6u7sd1C2MUito9Sq1glavUivo9XopuYEfVOYO8wqUWkGrV6kVtHqVWkGv10vJbcPP\nUD1TzhhjFspW+D5isZjrhMCUWkGrV6kVtHqVWkGv14tdD98YYwTZ9fBDNDAw4DohMKVW0OpVagWt\nXqVWCNYb9RM6beD7GBwcdJ0QmFIraPUqtYJWr1Ir6PV6KdmdtsYYE5agJ3S6Zit8Y4wpEbbC97Fh\nwwbXCYEptYJWr1IraPUqtcLsvZmVfFRX9hm2wjfGmBJhA9/H/v37XScEptQKWr1KraDVq9QKwXr9\nLtUSFTbwjTGmRNjAN8aYErGoB34+J0EkEomQawpHqRW0epVaQatXqRX0er0s6oGfj/r6etcJgSm1\nglavUito9Sq1gl6vl0U58DMr+6GxFENjqQWt9Ds7OwtUFz6lVtDqVWoFrV6lVtDr9RLKcfhjY2N8\n+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\nGGNKxP8Hgf6xPNtkq3EAAAAASUVORK5CYII=\n", | |
| "text/plain": [ | |
| "<Figure size 432x432 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "fi_W14sc1CRQ", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "### Sigmoid\n", | |
| "\n", | |
| "$$\n", | |
| "k(x, y)=\\tanh \\left(\\gamma x^{\\top} y+c_{0}\\right)\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "G4nOx7fPtFN0", | |
| "colab_type": "code", | |
| "colab": { | |
| "base_uri": "https://localhost:8080/", | |
| "height": 423 | |
| }, | |
| "outputId": "af419a99-3691-4412-aef9-0b60776ea648" | |
| }, | |
| "source": [ | |
| "kkm = Kernel_Kmeans(n_clusters=2, kernel=\"sigmoid\")\n", | |
| "kkm.fit(data)\n", | |
| "kkm.plot(data)" | |
| ], | |
| "execution_count": 128, | |
| "outputs": [ | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "image/png": "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\n1T7gj46Oor+/Hy6XC2lpaTpTiIhsIxqNYmhoCNnZ2UhPFzs6r33AJyKi5OBJWyIih+CAT0TkEBzw\niYgcggM+EZFDcMAnInIIDvhERA7BAZ+IyCE44E9h3759WL16NdasWYN169bpzpnSJ598grKyMrzx\nxhu6U0w9+eSTWL16NdauXYuNGzfixIkTupPGOXPmDDZs2IBVq1Zhw4YNOHv2rO6kq+rp6cEDDzyA\nVatWYc2aNdiyZQu6u7t1Z03ppZdewg033GD5O+wHBgawY8cOfP/738eaNWvw+OOP605KmPa1dKzs\n6NGjOHz4MN5++23MnTsXXV1dupMmdenSJezZswfLly/XnTKp5cuX47HHHoPL5cL777+PRx55BH//\n+991Z8Xs2LED9957L9atW4d33nkHTzzxBF5//XXdWV+TlpaG+++/H7fccgsAYNeuXdizZw+eeeYZ\nzWXmTp48ic8++wzXXnut7pQp7d69G1lZWThy5AjS0tIs//MvgjP8SbzyyivYsmUL5s6dCwDwer2a\niyb33HPPYfPmzcjNzdWdMqkVK1bA5XIBAJYtW4Zz585hdHRUc9WY8+fP49SpU6ipqQEA1NTU4NSp\nU5acOefk5MQGe2BsX1r5oduDg4N46qmnsHPnTt0pU+rv78eBAwfw8MMPx5Z8sfrPvwgO+JNoamrC\n8ePHsXHjRtx1113405/+pDvJ1AcffICLFy9i9erVulOmZf/+/bj99tuF1wJRrb29HYWFhZg1axYA\nYNasWSgoKLD8w6xHR0fx1ltvYeXKlbpTTL344otYu3YtFixYoDtlSq2trcjJycFLL72Eu+66C/fd\ndx+OHTumOythjj6ks379etMZ0UcffYSRkRG0t7fjzTffRE9PD+655x5cd911uPnmm5NcOnnr4cOH\n8fzzz+PVV19NctXVTbVfjcH00KFDOHjwIPbv35/MvJT09NNPw+12Y9OmTbpTrurTTz9FXV0dHn30\nUd0pQkZGRtDa2oobb7wR27Ztw/Hjx/HQQw+htrY29hu/HTl6wP/rX/866X8vKipCTU0N0tPTcc01\n1+DWW29FMBjUMuBP1nrs2DGEw2H86Ec/AjB2Mu/9999Hb28vtmzZkqzEmKn2KwDU1tbiN7/5DV57\n7TVL/ars8/nQ0dGBkZERzJo1CyMjI+js7ITP59OdZmrXrl1obm7G3r17LfOb0kT//ve/0dTUhDvu\nuAMAcO7cOWzevBnPPvssbrvtNs11X+fz+ZCRkRE7tPetb30Lubm5OHPmDCoqKjTXJSBKpn73u99F\nn3/++Wg0Go329/dHa2pqov/4xz80V01t27Zt0X379unOMPXee+9FV6xYET179qzulKvatGlT9MCB\nA9FoNBo9cOBAdNOmTZqLzD3//PPRTZs2RSORiO6UaVmxYkX0888/150xqZ/+9KfRDz/8MBqNRqNf\nfvll9Nvf/na0r69Pc1ViuDzyJK5cuYLHH38cp06dAgCsW7cODz74oOaqqW3fvh1Lly617K/33/nO\nd+ByuZCXlxf72GuvvWaZk81NTU3Yvn07Lly4gPnz52PXrl24/vrrdWd9zRdffIGamhosWrQIs2fP\nBgAsWLAAL7/8suayqa1cuRJ79+7F4sWLdaeYam1txWOPPYbe3l5kZGRg69at+N73vqc7KyEc8ImI\nHMKaB/yIiEg6DvhERA7BAZ+IyCE44BMROQQHfCIih+CAT0TkEBzwiYgcggM+EZFD/H/vuveSUe/J\njgAAAABJRU5ErkJggg==\n", | |
| "text/plain": [ | |
| "<Figure size 432x432 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "tags": [] | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "SZQnhdIltFN_", | |
| "colab_type": "code", | |
| "colab": {} | |
| }, | |
| "source": [ | |
| "" | |
| ], | |
| "execution_count": 0, | |
| "outputs": [] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment