"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3- Unsupervised Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Clustering\n",
"\n",
"\n",
"Clustering is the task of assigning data points to a known number of classes. The *K Means* algorithm is one of the most well known, it clusters data by minimizing the squared distance of cluster points to their mean."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"#import seaborn as sns\n",
"#sns.set() "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)\n",
"plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='r' , s = 100 , marker=\"*\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The different clusters have visibly been recovered. It is to be noted that from the cluster center, one can define Voronoi regions (regions that are closer to one center than any other one) that are exactly the predicted regions from the K Means algorithm."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from scipy.spatial import Voronoi, voronoi_plot_2d\n",
"\n",
"vor = Voronoi(kmeans.cluster_centers_)\n",
"voronoi_plot_2d(vor)\n",
"plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)\n",
"plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='r' , s = 100 , marker=\"*\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dimension reduction\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to reduce the dimension of our features either for direct learning or for visualization, dimension reduction is important and is implemented extensively in Scikit Learn [Decompositions](http://scikit-learn.org/stable/modules/decomposition.html#decompositions).\n",
"\n",
"One of the most standard methods is the *Principal Components Analysis* (PCA) that consists in projecting the feature matrix onto its top $n$ singular values (This was used in image compression in the NumPy notebook). "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### A first example \n",
"\n",
"Let us look at the PCA on a 2D synthetic data."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns\n",
"sns.set() "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"rng = np.random.RandomState(1)\n",
"X = np.dot(rng.rand(2, 2), rng.randn(2, 200)).T\n",
"plt.scatter(X[:, 0], X[:, 1])\n",
"plt.axis('equal');"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PCA(n_components=2)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.decomposition import PCA\n",
"\n",
"pca = PCA(2)\n",
"pca.fit(X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The PCA model outputs components_ that are the singular vectors and explained\\_variance_ for the magnitude of the associated singular values."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[-0.94446029 -0.32862557]\n",
" [-0.32862557 0.94446029]]\n",
"[0.7625315 0.0184779]\n"
]
}
],
"source": [
"print(pca.components_)\n",
"print(pca.explained_variance_)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This illustration is provided in the [Python Data Science Handbook](http://shop.oreilly.com/product/0636920034919.do) by Jake VanderPlas. The greater axis is more informative and thus the second one would be dropped in the case of 1D dimensional reduction."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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W609QojutePfBIQQQixszUHghRde4L777uPmm2/me9/73qLX/su//At33XUXx48f58tf/jK+vzXq6wghRLdacxA4duwYTz31FCdOnFj0usuXL/M//+f/5Pvf/z5nzpzh4sWL/PCHP1zr7YUQQqzBmoPAjTfeyJEjR1DVxT/qxz/+McePHyebzaKqKg8++CAvv/zyWm8vhBBiDTZsTWBkZITdu3e3f797925GRkY26vZCCCHmsWR20AMPPMDw8PC8P3v11VfRNG3en62XXG575tPn86nNbsKm6ub+S9+703bp+5JB4Pnnn+/IjQYHB+cEk+HhYQYHB1f8OYVCdVOOaFyLfD7FxERls5uxabq5/9J36ftmU1Vl0YfnDZsOuueee/jpT39KsVjE932ee+45Pv7xj2/U7YUQQsxjzUHg9OnT3HHHHfzoRz/i6aef5o477uC3v/0tAE8//TTPPvssAPv27eOzn/0sn/zkJ7n77rvZu3cvn/jEJ9Z6eyGEEGugBEGwreZWZDpo++nm/kvfpe+bbctMBwkhhNh6JAgIIUQXkyAghBBdTIKAEEJ0MQkCQgjRxSQICCFEF5MgIIQQXUyCgBBCdDEJAkII0cUkCAghRBeTICCEEF1MgoAQQnQxCQJCCNHFJAgIIUQXkyAghBBdTIKAEEJ0MQkCQgjRxSQICCFEF5MgIIQQXUyCgBBCdDEJAkII0cUkCAghRBeTICCEEF1szUHghRde4L777uPmm2/me9/73oLX/fznP+c973kPJ0+e5OTJkzz44INrvbUQQog10tf6AceOHeOpp57iH//xH5e89vDhw/zgBz9Y6y2FEEJ0yJqDwI033giAqsrMkhBCbDcbOnJfuHCBBx54gAcffJDnn39+I28thBBiHku+CTzwwAMMDw/P+7NXX30VTdOWdaNbbrmFn/3sZ6RSKS5fvswjjzzCwMAAH/7wh1fU4FwuuaLrt4p8PrXZTdhU3dx/6Xt32i59XzIIdOqJPZm8Onjv27eP48eP84tf/GLFQaBQqOL7QUfatFHy+RQTE5XNbsam6eb+S9+l75tNVZVFH543bDpofHycIAgH76mpKV555RVuuummjbq9EEKIeax5Yfj06dM8+eSTlMtl/u3f/o1//Md/5Nvf/jZHjhzh6aefpr+/n09/+tOcOXOGZ599Fl3X8TyP+++/n+PHj3eiD0IIIVZJCVqP59uETAdtP93cf+m79H2zbZnpICGEEFuPBAEhhOhiEgSEEKKLSRAQQoguJkFACCG62JpTRDeaqiqb3YRV2a7t7pRu7r/0vTttlb4v1Y5tlyIqhBCic2Q6SAghupgEASGE6GISBIQQootJEBBCiC4mQUAIIbqYBAEhhOhiEgSEEKKLSRAQQoguJkFACCG6mASBDfLEE09w77338olPfIJPfepTvPbaa5vdpA31wgsvcN9993HzzTfzve99b7Obs+7Onz/PQw89xD333MNDDz3EhQsXNrtJG+bUqVPceeedHD16lLfeemuzm7NhSqUSjz76KPfccw/33Xcff/EXf0GxWNzsZi1JgsAGueOOO3jxxRf54Q9/yJ/92Z/xV3/1V5vdpA117NgxnnrqKU6cOLHZTdkQjz/+OA8//DA//vGPefjhh/niF7+42U3aMB/72Md45pln2LNnz2Y3ZUMpisKf/Mmf8OMf/5gXX3yRffv28Q//8A+b3awlSRDYIB/96EcxDAOA22+/ndHRUXzf3+RWbZwbb7yRI0eOoKo7/59coVDg7Nmz7YB34sQJzp49uy2eCjvhfe97H4ODg5vdjA3X09PDBz7wgfbvb7/9doaHhzexRcuz8/8fuQU988wz/N7v/V5XDIjdaGRkhIGBATRNA0DTNPr7+xkZGdnklomN4vs+zz77LHfeeedmN2VJ266U9Fb1wAMPLBj1X3311faA8NJLL/Hiiy/yzDPPbGTz1t1y+y9EN/jbv/1b4vE4f/AHf7DZTVmSBIEOef7555e85ic/+QlPPfUU3/nOd+jr69uAVm2c5fS/WwwODjI2NobneWiahud5jI+Pd+UUSTc6deoUFy9e5Jvf/Oa2eNvf+i3cIf793/+dv/u7v+Nb3/oWe/fu3ezmiHWUy+U4duwYp0+fBuD06dMcO3aMbDa7yS0T6+2rX/0qv/71r/n6179OJBLZ7OYsixwqs0E++MEPYhjGnIHgO9/5Dr29vZvYqo1z+vRpnnzyScrlMoZhEIvF+Pa3v82RI0c2u2nr4ty5czz22GOUy2XS6TSnTp3i0KFDm92sDfGVr3yFM2fOMDk5SW9vLz09Pbz00kub3ax19/bbb3PixAkOHDhANBoFYO/evXz961/f5JYtToKAEEJ0MZkOEkKILiZBQAghupgEASGE6GISBIQQootJEBBCiC4mQUAIIbqYBAEhhOhiEgSEEKKL/f8kMM8TomiosAAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def draw_vector(v0, v1, ax=None):\n",
" ax = ax or plt.gca()\n",
" arrowprops=dict(arrowstyle='->',\n",
" linewidth=2,\n",
" shrinkA=0, shrinkB=0)\n",
" ax.annotate('', v1, v0, arrowprops=arrowprops)\n",
"\n",
"# plot data\n",
"plt.scatter(X[:, 0], X[:, 1], alpha=0.2)\n",
"for length, vector in zip(pca.explained_variance_, pca.components_):\n",
" v = vector * 3 * np.sqrt(length)\n",
" draw_vector(pca.mean_, pca.mean_ + v)\n",
"plt.axis('equal');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dimension reduction and visualization on the iris dataset\n",
"\n",
"The features are 4D and thus hard to represent; instead of taking just 2, let us apply PCA to find 2 interesting meta features. \n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn.preprocessing import LabelEncoder\n",
"\n",
"\n",
"\n",
"iris = pd.read_csv('data/iris.csv')\n",
"classes = pd.DataFrame(iris[\"species\"])\n",
"features = iris.drop([\"species\",],axis=1)\n",
"\n",
"lenc = LabelEncoder()\n",
"num_classes = np.array(classes.apply(lenc.fit_transform))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"