{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
I used, modified code and instruction in Udacity ML nanodegree
\n", "\n", "Things we will cover: data exploration, data preprocessing, PCA, k-means, t-SNE
" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "naruto_question.jpg sasuke.jpg sasuke_preprocessing.jpg\r\n" ] } ], "source": [ "ls images" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Modified image from Naruto uzumaki Pinterest.
\n", " It is a way of extracting useful knowlege from the data \"without any label\" or a way of transforming the data into meaningful format.
\n",
" The emphasis is \"without any label\". This contrasts with Supervised Learning where we will predict the label on the testing sets from the training sets with the labels.
In this section, we will split the data into trainining and test set; then we will explore the dataset.
\n", "The dataset contains 150 samples, each with five attributes. We will drop the class name variable and conduct unsupervised learning.
" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Num of row is: 150, num of cols is 5\n" ] }, { "data": { "text/html": [ "\n", " | 0 | \n", "1 | \n", "2 | \n", "3 | \n", "4 | \n", "
---|---|---|---|---|---|
0 | \n", "5.1 | \n", "3.5 | \n", "1.4 | \n", "0.2 | \n", "Iris-setosa | \n", "
1 | \n", "4.9 | \n", "3.0 | \n", "1.4 | \n", "0.2 | \n", "Iris-setosa | \n", "
2 | \n", "4.7 | \n", "3.2 | \n", "1.3 | \n", "0.2 | \n", "Iris-setosa | \n", "
3 | \n", "4.6 | \n", "3.1 | \n", "1.5 | \n", "0.2 | \n", "Iris-setosa | \n", "
4 | \n", "5.0 | \n", "3.6 | \n", "1.4 | \n", "0.2 | \n", "Iris-setosa | \n", "
\n", " | sepal_length | \n", "sepal_width | \n", "petal_length | \n", "petal_width | \n", "class | \n", "
---|---|---|---|---|---|
0 | \n", "5.1 | \n", "3.5 | \n", "1.4 | \n", "0.2 | \n", "Iris-setosa | \n", "
1 | \n", "4.9 | \n", "3.0 | \n", "1.4 | \n", "0.2 | \n", "Iris-setosa | \n", "
2 | \n", "4.7 | \n", "3.2 | \n", "1.3 | \n", "0.2 | \n", "Iris-setosa | \n", "
3 | \n", "4.6 | \n", "3.1 | \n", "1.5 | \n", "0.2 | \n", "Iris-setosa | \n", "
4 | \n", "5.0 | \n", "3.6 | \n", "1.4 | \n", "0.2 | \n", "Iris-setosa | \n", "
\n", " | sepal_length | \n", "sepal_width | \n", "petal_length | \n", "petal_width | \n", "
---|---|---|---|---|
count | \n", "150.000000 | \n", "150.000000 | \n", "150.000000 | \n", "150.000000 | \n", "
mean | \n", "5.843333 | \n", "3.054000 | \n", "3.758667 | \n", "1.198667 | \n", "
std | \n", "0.828066 | \n", "0.433594 | \n", "1.764420 | \n", "0.763161 | \n", "
min | \n", "4.300000 | \n", "2.000000 | \n", "1.000000 | \n", "0.100000 | \n", "
25% | \n", "5.100000 | \n", "2.800000 | \n", "1.600000 | \n", "0.300000 | \n", "
50% | \n", "5.800000 | \n", "3.000000 | \n", "4.350000 | \n", "1.300000 | \n", "
75% | \n", "6.400000 | \n", "3.300000 | \n", "5.100000 | \n", "1.800000 | \n", "
max | \n", "7.900000 | \n", "4.400000 | \n", "6.900000 | \n", "2.500000 | \n", "
we will select three samples to explore them later. We will choose them so that they \n", " is distinct (each feature value are different) from each other
\n", " \n", " we will choose three examples as follows:
\n",
"
" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | sepal_length | \n", "sepal_width | \n", "petal_length | \n", "petal_width | \n", "
---|---|---|---|---|
131 | \n", "7.9 | \n", "3.8 | \n", "6.4 | \n", "2.0 | \n", "
\n", " | sepal_length | \n", "sepal_width | \n", "petal_length | \n", "petal_width | \n", "
---|---|---|---|---|
0 | \n", "7.9 | \n", "3.8 | \n", "6.4 | \n", "2.0 | \n", "
1 | \n", "5.8 | \n", "2.7 | \n", "3.9 | \n", "1.2 | \n", "
2 | \n", "5.5 | \n", "2.4 | \n", "3.8 | \n", "1.1 | \n", "
One thing we can find from data is that some feature is predictive of others. In other words, is it possible to predict the sepal length using the other 3 features? (This is one example. Target variable does not have to be a sepal length. We can choose any feature to be inspected.)
\n", "We will choose \"sepal length\" as a target class and use the other featuers for supervised learning models.
" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.836542685606\n" ] } ], "source": [ "# Copy the X_train data and split them into a target(a dependent variable) \n", "# and independet variables\n", "pseudo_target = X_train['sepal_length']\n", "pseudo_data = X_train.drop(['sepal_length'], axis=1)\n", "\n", "# Split the data into training and testing sets: 0.75 goes to training set.\n", "X_pseudo_train, X_pseudo_test, y_pseudo_train, y_pseudo_test\\\n", " = train_test_split(pseudo_data, pseudo_target, random_state=7)\n", " \n", "# Use a decision tree regressorn to fit and infer the target values \n", "from sklearn.tree import DecisionTreeRegressor\n", "regressor = DecisionTreeRegressor(random_state=7)\n", "regressor.fit(X_pseudo_train, y_pseudo_train)\n", "y_pseduo_pred = regressor.predict(X_pseudo_test)\n", "from sklearn.metrics import r2_score\n", "score = r2_score(y_pseudo_test, y_pseduo_pred)\n", "print(score)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So about 83% of the variance of target variable is explained by the three variables.\n", "It is clear that there is a dependency of this target variable(petal length) on the three variables. We could drop the \"petal length\" feature for reducing the dimentionality.(thus\n", "reducing the run-time cost)
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to get sense of data, we will plot the feature distribution.\n", "In this way, we can understand not only the each feature's distribution but also the\n", "correlation between each feature.
\n", "\n", "\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[Sepal length and petal length are almost following normal distribution (Sepal length\n", "does not trace the exact bell curve though).\n", "Petal length and petal width trace bimodal distribution(meaning that there are two groups or two most frequent samples)
\n", "\n", "\n", "Positive correlation can be seen between 'sepal_length' and 'petal_length', between 'petal_length' and 'petal_width'. 'Septal_length' and 'petal_width' are somewhat correlated positively but it is not clear.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can confirm the correlation we inferred above by using the heatmap." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Positive correlation ( in decreasing order ) for 3 distributions:\n", "
We will transform the data into an appropriate distribution.
\n",
"We will also detect outliers and deal with them.
Modified image from Sasuke's Ninja Way
" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sasuke.jpg sasuke_preprocessing.jpg\r\n" ] } ], "source": [ "ls images/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some machine-leanrning algorithms are sensetive to the data distribution. It is often preferable to pre-scale the datasets
\n", "We will scale dataset (StandardScaler in this case) so that each feature will have zero mean and unit variance.(This does not necessarily mean that each feature will trace Gaussian Distribution)
" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean of value for each feature before scaling\n", "sepal_length 5.843333\n", "sepal_width 3.054000\n", "petal_length 3.758667\n", "petal_width 1.198667\n", "dtype: float64\n", "Variance of value for each feature before scaling\n", "sepal_length 0.685694\n", "sepal_width 0.188004\n", "petal_length 3.113179\n", "petal_width 0.582414\n", "dtype: float64\n", "Mean of value for each feature after scaling\n", "[ -4.45569507e-16 -6.48370246e-16 2.75335310e-16 -1.34707060e-16]\n", "Vaiance of value for each feature after scaling\n", "[ 1. 1. 1. 1.]\n" ] } ], "source": [ "# Using StandardScaler to make each distribution have zero mean and unit variance\n", "from sklearn.preprocessing import StandardScaler\n", "scaler = StandardScaler()\n", "scaler.fit(X_train)\n", "X_train_scaled = scaler.transform(X_train)\n", "samples_scaled = scaler.transform(samples)\n", "print(\"Mean of value for each feature before scaling\\n{0}\".format(X_train.mean(axis=0)))\n", "print(\"Variance of value for each feature before scaling\\n{0}\".format(X_train.var(axis=0)))\n", "print(\"Mean of value for each feature after scaling\\n{0}\".format(X_train_scaled.mean(axis=0)))\n", "print(\"Vaiance of value for each feature after scaling\\n{0}\".format(X_train_scaled.var(axis=0)))" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "X_train_scaled_df = pd.DataFrame({\"sepal_length\": X_train_scaled[:,0], \n", " \"sepal_width\": X_train_scaled[:, 1],\n", " \"petal_length\": X_train_scaled[:, 2], \n", " \"petal_width\": X_train_scaled[:, 3]})" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[\n", " | petal_length | \n", "petal_width | \n", "sepal_length | \n", "sepal_width | \n", "
---|---|---|---|---|
0 | \n", "1.502013 | \n", "1.053537 | \n", "2.492019 | \n", "1.726266 | \n", "
1 | \n", "0.080370 | \n", "0.001753 | \n", "-0.052506 | \n", "-0.819166 | \n", "
2 | \n", "0.023504 | \n", "-0.129720 | \n", "-0.416010 | \n", "-1.513375 | \n", "
We will detect outliers and deal with them
\n", "We will use Turkey's Method for identifying outliers for identifying outliers
" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data points considered outliers for the feature petal_length\n", "Data points considered outliers for the feature petal_width\n", "Data points considered outliers for the feature sepal_length\n", "Data points considered outliers for the feature sepal_width\n" ] } ], "source": [ "outliers = []\n", "\n", "for feature in X_train_scaled_df.keys():\n", " q1 = np.percentile(X_train_scaled_df[feature], 25, axis=0)\n", " q3 = np.percentile(X_train_scaled_df[feature], 75, axis=0)\n", " step = 1.5 * float(q3-q1)\n", " print(\"Data points considered outliers for the feature {0}\".format(feature))\n", " \n", " X_train_scaled_df[~((X_train_scaled_df[feature] >= q1 - step)&(X_train_scaled_df[feature] <= q3+step))]" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Fowllowing Turkey's Method for identifying outliers, \n", "we do not have outliers in this datasets
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will see the underlying structure of the data
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Sign (+/-) of each weight will have meaning only if they are compared to other features.\n",
" Sign can be flipped and sign itself does not indicate anything.
\n",
" We will consider the feature weight larger than 0.5 in absolute value to have strong correlation.
PCA allows us to reduce the dimensionality of the data -- \n",
"this will result in the less computation cost. As a side effect, total variance in the data will also decrease.
We will use 2 components since it captures 95% of total vairance.
\n", " | PCA 1 | \n", "PCA 2 | \n", "
---|---|---|
0 | \n", "2.3161 | \n", "2.6262 | \n", "
1 | \n", "0.2360 | \n", "-0.7759 | \n", "
2 | \n", "0.1215 | \n", "-1.5636 | \n", "
We can see that right points in the middle of principal component 2 axis are iris with big(long) \"petal length\", \n",
" \"sepal width\" and \"sepal length\".
As we saw from the visualization of the feature weights, \n",
" \"petal length\", \"sepal width\" and \"sepal length\" are mostly strongly accociated with\n",
" the first component, and \"petal width\" with the second component.\n",
"
In this section, we will use K-means to cluter the datasets.
\n",
"We will use Silhouette coefficients to choose the number of cluster
Two clusters results in the best score even though we know that we actually have three classes\n", "in the datasets
" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1.11009664 -0.14611241]\n", " [-2.22019328 0.29222482]]\n" ] } ], "source": [ "# Fit a kmeans with two clusters\n", "kmeans = KMeans(n_clusters=2, random_state=0)\n", "clusterer = kmeans.fit(reduced_data)\n", "\n", "preds = clusterer.predict(reduced_data)\n", "\n", "centers = clusterer.cluster_centers_\n", "\n", "samples_preds = clusterer.predict(reduced_samples)\n", "print(centers)" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [], "source": [ "import matplotlib.cm as cm\n", "\n", "def cluster_results(reduced_data, preds, centers, pca_samples):\n", "\t'''\n", "\tVisualizes the PCA-reduced cluster data in two dimensions\n", "\tAdds cues for cluster centers and student-selected sample data\n", "\t'''\n", "\n", "\tpredictions = pd.DataFrame(preds, columns = ['Cluster'])\n", "\tplot_data = pd.concat([predictions, reduced_data], axis = 1)\n", "\n", "\t# Generate the cluster plot\n", "\tfig, ax = plt.subplots(figsize = (14,8))\n", "\n", "\t# Color map\n", "\tcmap = cm.get_cmap('gist_rainbow')\n", "\n", "\t# Color the points based on assigned cluster\n", "\tfor i, cluster in plot_data.groupby('Cluster'): \n", "\t cluster.plot(ax = ax, kind = 'scatter', x = 'PCA 1', y = 'PCA 2', \\\n", "\t color = cmap((i)*1.0/(len(centers)-1)), label = 'Cluster %i'%(i), s=30);\n", "\n", "\t# Plot centers with indicators\n", "\tfor i, c in enumerate(centers):\n", "\t ax.scatter(x = c[0], y = c[1], color = 'white', edgecolors = 'black', \\\n", "\t alpha = 1, linewidth = 2, marker = 'o', s=200);\n", "\t ax.scatter(x = c[0], y = c[1], marker='$%d$'%(i), alpha = 1, s=100);\n", "\n", "\t# Plot transformed sample points \n", "\tax.scatter(x = pca_samples[:,0], y = pca_samples[:,1], \\\n", "\t s = 150, linewidth = 4, color = 'black', marker = 'x');\n", "\n", "\t# Set plot title\n", "\tax.set_title(\"Cluster Learning on PCA-Reduced Data - Centroids Marked by Number\\nTransformed Sample Data Marked by Black Cross\");\n" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nVXPeeRdy6aUX097ezpYtW9h77y9x2GEzeOaZpzrWO+KII5k79zhGjx7DqFGfBGDXXXfjoovOZ8iQ\nIZSVlXH66WcBsOOOO3HRRedTV3c+l156MaedNoempkYOO2xmp8QW/SFS6ikAGxo2Z13AmpphNDRs\nLmRxpB+pPsNF9Rk+qtNwUX38aC7zAAAgAElEQVSGTzHrNFU2tq6y7dYWrV9L+crVtE2dRKx2Qr6L\nOmDoO5pZTc2wtM1FauERERERkbxJl3r64HG7d8rSlsjeBqknJwWoqltE5a33EWlpJV6xNc2zDqVp\n4fzCn4SEisbwiIiIiEhepAt2rr76Om74yxNcffV1GefpSRatf7Yj2AGItLRScdv9ROvXFv5EJFQU\n8IiIiIhIn8Xjce688zcZ59k57LAZKYOeO+/8DV2HWZSvXNMR7HTsr7mF8lWrC3gWEkYKeERERESk\nzyKRCNdffwv77rsfkH6MTtegZ9999+P662/plrGrbeok4hVbd1rWXllB25RJBTwLCSON4RERERGR\nvKioqODGG2/jhBOOZubMb6cdm5NYfuedv+H662+hoqKi2zqx2gk0zzq0o1tbe2UFLUceMqgTF0jv\nKEublCzVZ7ioPsNHdRouqs/wKWadxuPxrOZYyWa9aP1ayletpm2KsrTpO5qesrSJiIiISL/JdkLJ\nbNaL1U4Y1IGO9J3G8IiIiIiISGgp4BERERERkdBSwCMiIiIiIqGlgEdEREREREJLAY+IiIiIiISW\nAh4REREREQktBTwiIiIiIhJaCnhERERERCS0FPCIiIiIiEhoKeAREREREZHQUsAjIiIiIiKhpYBH\nRERERERCSwGPiIiIiIiElgIeEREREREJLQU8IiIiIiISWgp4REREREQktBTwiIiIiIhIaCngERER\nERGR0FLAIyIiIiIioaWAR0REREREQksBT4hE6xupXPwW0frGYhdFRERERKQkRItdAMmPqrr1VN66\ngUhLnHhFhOZZI2laOLbYxRIRERERKSq18IRAtL6xI9gBiLTEqbhtg1p6RERERGTQU8ATAuUrGzuC\nnYSy5jjlqxTwiIiIiMjgpoAnBNqmVhOviHRa1l4ZoW1KdZFKJCIiIiJSGhTwhECstprmWSM7gp72\nyggtR44kVquAR0REREQGNyUtCImmhWNpnTGS8lWNtE2pVrAjIiIiIoICnlCJ1SrQERERERFJpi5t\nIiIiIiISWgp4REREREQktBTwiIiIiIhIaCngERERERGR0FLAIyIiIiIioaWAR0REREREQqtf01I7\n58qB64Edga2Bi83st/1ZBhERERERGTz6u4XnaGCDmX0JOBhY3M/HFxERERGRQaS/Jx69E7gr6fdY\nTxuMGDGUaHRI1geoqRnWi2JJqVJ9hovqM3xUp+Gi+gwf1Wm4qD57p18DHjNrBHDODcMHPj/oaZt3\n392S9f5raobR0LC51+WT0qL6DBfVZ/ioTsNF9Rk+qtNwUX1mlikY7PekBc657YHHgZvN7Nb+Pr6I\niIiIiAwe/Z204BPAw8BpZvZYfx5bRERERAovWr+W8pWraZs6iVjthGIXR6Tfx/CcC4wAznfOnR8s\nO9jMmvu5HCIiIiKSZ1V1i6i89T4iLa3EK7amedahNC2cX+xiySDX32N4zgTO7M9jSmFF6xspX9lI\n29RqYrXVxS6OiIiIFEm0/tmOYAcg0tJKxW330zrjILX0SFH1dwuPhEhV3Xoqb91ApCVOvCJC86yR\nNC0cW+xiiYiISBGUr1zTEewklDW3UL5qtQIeKap+T1og4RCtb+wIdgAiLXEqbttAtL6xyCUTERGR\nYmibOol4xdadlrVXVtA2ZVKRSiTiKeCRXilf2dgR7CSUNccpX6WAR0REZDCK1U6gedahHUFPe2UF\nLUceotYdKTp1aZNeaZtaTbwi0inoaa+M0DZF43hEREQGq6aF82mdcRDlq1bTNkVZ2qQ0KOApooE8\n4D9WW03zrJEd3draKyO0HDlywJ2HiIiI5FesdoICHSkpCniKJAwD/psWjqV1xkjKVzXSNmXgBW0i\nIiIiEn4KeIog3YD/1hkDr4UkVqtAR0RERERKl5IWFIEG/IuIiIiI9A8FPEWQGPCfTAP+RURERETy\nTwFPESQG/CeCHg34FxEREREpDI3hKRIN+BcRERERKTwFPEWkAf8iIiIiIoWlLm0iIiIiIhJaCnhE\nRERERCS0FPCIiIiIiEhoKeAREREREZHQUsAjIiIiIiKhpYBHRERERERCSwGPiIiIiIiElgIeERER\nEREJLQU8IiIiIiISWgp4REREREQktBTwiIiIiIhIaCngERERERGR0FLAIyIiIiIioaWAR0RERERE\nQksBj/RKtL6RysVvEa1vLMr2IiIiIiLZiBa7ADLwVNWtp/LWDURa4sQrIjTPGknTwrH9tr2IiIiI\n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\nlLiust6uQAAAAABJRU5ErkJggg==\n", "text/plain": [ "t-SNE will try to find a two dimensional representation of data which will preserve the distance in the original dimension( that is to say, points that are close will remain close and points that are far away remain far away).
\n", "Important to Note: We are able to understand the class distribution since we have ground the truth labels.
" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,1,\"['0: Iris-setosa', '1: Iris-versicolor', '2: Iris-virginica']\")" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzMAAAHfCAYAAABksoZmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl81NW9//F3VshIJCxBCPt6kILi\nVpe6i3jBtoq2WG1/bV3qrdpaFbXVW+Wqt8Vbtd6q7bUu6FWrohWorVqptdZd64JscgQEURBJIEBC\nNpLM74+Z4BBnkkzmO/P9npnX8/HgcTOTme/3ZOZb77znc87n5IXDYQEAAACAa/L9HgAAAAAAdAdh\nBgAAAICTCDMAAAAAnESYAQAAAOAkwgwAAAAAJxFmAAAAADip0O8BAMhtxpgRktZIWirp+5LelTTS\nWrvOGHOVpO8p8t+qhyRdZ63tsJ+8MeYFSXdYa/8Y53dPS7rcWrvCy7+h3TlGSrrZWnu6x8cdIWmt\noq9NB49bJ+k/rbX3R2/nSbpf0lJr7c1dOM9/Supvrf1RnN9dL2m1tfaBZMfvNWPMwZJ+Zq39Rjef\nH5ZUbq2tSvI5x1lrX+jgMS9IesFa+5/GmJMk/UKR67c1Ot5FnZzjWEWu34lxfvd1SVOstRd3dcwd\nnOceSY9aa59L4jk/lFRmrb2xg8d0+32J/u3/kDRM0p8lTZB0hLX2rWSPBSB3EGYABEG9tXayMWZA\n9PZOY8x0STMlHSSpRdKzklZIeqy7J7HWTk95pJ0bLsmk4bh10f+7swuP2ylJxph9Jf1W0qGKhMWU\nWGuvTfUYXol+wO1WkElBvbr4+htjekt6WNLR1trlxpj9JL1ojBlqra3pzsmttU9KerI7z41zrPO6\n8Zw7u/CYVN6XOkl11tqPJU2OBnMA6BBhBkBgWGs3G2Oes9ZWGmNmSHrYWtv2wfw+Sd+R9Fj0G+KD\nO/tAFv0w9Iak/SRdLelWRT5orZR0n6Sxinxj/rakf7fWtrZ7fq9EjzPGfE3SzyUVK/Ih7HJJb0q6\nR9JgY8yz1tqTjDGnSpqtyLTeGkmXWWvfNMaMl3SvpJ6S8iTdY639nTFmH0m/l7SPpIGSPpI0M/a1\n6eRl/Kci1S1Juig6nvXt/q6Do+eb3Mnrd7+kvpJGS/pLdEzLrLU3G2OukzRDUpOkLZK+b639tN3z\nz5f0NWvt16K3x0v6uyLfvI+T9BtJ/SQVSLrNWjs3+u38bxQJDb0kHRX9G/Z4DyQdrWgFI/o+3S7p\nK5KaJS2U9B+S9lYkzE2WFJb0jKSrrbXN7cZ5jaQzo8/9QNKPrLWbolWWrZLGS/pfSX+TtKyj10zS\nK5L+JalI0oXW2uXR+1co8j73l1RjjFks6byOqg7GmO9LOlfSXpK2S/o/Sd+w1n7VGHOaItdfqyJh\n/wpr7Yvtnj9O0quSKqy1TcaYAkWuhSnRv+cOSW9JeknS+5JGSDpG0kmSfqZIeHte0k+stYWxVbvo\n/7bul3SCIu/nA9baa2IrSx28L2MVeV9KJQ2StFjSGdHXqMPKFQC0x5oZAIFirT0x+uNQSR/H/OoT\nSUOij7kziW+Wl1lr97XWLoi5b4ak0uiH+UOi942K89y4jzPGjJX0S0nTrbUHSDpf0nxFgsl5ktZE\ng8x4SXdKOt1au7+kayX9yRizt6QrJP3ZWnuQpOmSjjbG5Ev6lqTXrLWHR8dUJ+n/tXttErLWXmCt\nXR39+UfW2ofjPOatzoJMjJC19kvW2p+23WGMGSrpEkmHWGsPVuQD6KFxnvuIpCONMQOjt89WJBzm\nSfqjItORDlLkA/TlxpjDoo+bKOlMa+1+kr6uzt+r6xV57fdVJLh8JXrM2xQJWpMkHSxpf0VC527G\nmLMlTYv+LfspElbuj3lItbV2grX2dmvtKdba+o5eLGvtL6y1L1hrq6y189qN8QNr7dro4yZ3cfrU\nlyQda609rt39NykSlg6WdI2kY+OM5QNJyxV5DSVpqqS11tr32z10iKQbrLXjJPWR9N+KTGc7QNIO\nRcJmPL2stUdJOkKR929ku98nel9+IOn/rLWHSRojaaSkk621tdbaGQlfCQCIgzADIKjyFfk2vU2e\nIt9AJ+ulOPe9LOlL0W/efybpf9oCQBcfd6Ii3yj/PfoN+x8U+YZ8TLvnHy/p79baDyXJWvu8pM2K\nTJ1bIOlKY8x8SadJutha22qt/Y2kV40xl0n6nSIf7Ht14+/2ystx7tsg6T1J7xhjbpa02Fq7sP2D\notOp5kv6TrQq8G1FqlHjFKn2zI2+fv+UVCLpgOhTP7bWfhRz/s7eqymS7rXWtlhrm6y1x0TXtUxT\npEoQttY2KhIsp7V77jRJ97VVABWpCp1gjCmO3o53/XSZMabQGHObpG9K6s46qiXW2h1x7n9U0oLo\n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\nAAAAnPT/ASzHNMCF9FT8AAAAAElFTkSuQmCC\n", "text/plain": [ "We can see that class label setosa is well seprated from the other two classes, \n", " versicolor and virginica.K-means might have not been able to seperate the two latter classes.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We could use the finings and explore other techniques on this datasets\n", "such as other clustering methods or conduct supervised learning with data whose features are reduced by PCA. What if we perform clustering on the original non-reduced dataset?
\n", "\n", "
\n", "" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.5.4" } }, "nbformat": 4, "nbformat_minor": 2 }