Skip to content

Instantly share code, notes, and snippets.

@dmalc
Created October 18, 2020 03:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dmalc/147fec9a27372393d8553de00c70b874 to your computer and use it in GitHub Desktop.
Save dmalc/147fec9a27372393d8553de00c70b874 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<center>\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n",
"</center>\n",
"\n",
"# K-Means Clustering\n",
"\n",
"Estimated time needed: **25** minutes\n",
"\n",
"## Objectives\n",
"\n",
"After completing this lab you will be able to:\n",
"\n",
"- Use scikit-learn's K-Means Clustering to cluster data\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Introduction\n",
"\n",
"There are many models for **clustering** out there. In this notebook, we will be presenting the model that is considered one of the simplest models amongst them. Despite its simplicity, the **K-means** is vastly used for clustering in many data science applications, especially useful if you need to quickly discover insights from **unlabeled data**. In this notebook, you will learn how to use k-Means for customer segmentation.\n",
"\n",
"Some real-world applications of k-means:\n",
"\n",
"- Customer segmentation\n",
"- Understand what the visitors of a website are trying to accomplish\n",
"- Pattern recognition\n",
"- Machine learning\n",
"- Data compression\n",
"\n",
"In this notebook we practice k-means clustering with 2 examples:\n",
"\n",
"- k-means on a random generated dataset\n",
"- Using k-means for customer segmentation\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Table of contents</h1>\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <ul>\n",
" <li><a href=\"#random_generated_dataset\">k-Means on a randomly generated dataset</a></li>\n",
" <ol>\n",
" <li><a href=\"#setting_up_K_means\">Setting up K-Means</a></li>\n",
" <li><a href=\"#creating_visual_plot\">Creating the Visual Plot</a></li>\n",
" </ol>\n",
" <li><a href=\"#customer_segmentation_K_means\">Customer Segmentation with K-Means</a></li>\n",
" <ol>\n",
" <li><a href=\"#pre_processing\">Pre-processing</a></li>\n",
" <li><a href=\"#modeling\">Modeling</a></li>\n",
" <li><a href=\"#insights\">Insights</a></li>\n",
" </ol>\n",
" </ul>\n",
"</div>\n",
"<br>\n",
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Import libraries\n",
"\n",
"Lets first import the required libraries.\n",
"Also run <b> %matplotlib inline </b> since we will be plotting in this section.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"import random \n",
"import numpy as np \n",
"import matplotlib.pyplot as plt \n",
"from sklearn.cluster import KMeans \n",
"from sklearn.datasets.samples_generator import make_blobs \n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<h1 id=\"random_generated_dataset\">k-Means on a randomly generated dataset</h1>\n",
"Lets create our own dataset for this lab!\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"First we need to set up a random seed. Use <b>numpy's random.seed()</b> function, where the seed will be set to <b>0</b>\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"np.random.seed(0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Next we will be making <i> random clusters </i> of points by using the <b> make_blobs </b> class. The <b> make_blobs </b> class can take in many inputs, but we will be using these specific ones. <br> <br>\n",
"<b> <u> Input </u> </b>\n",
"\n",
"<ul>\n",
" <li> <b>n_samples</b>: The total number of points equally divided among clusters. </li>\n",
" <ul> <li> Value will be: 5000 </li> </ul>\n",
" <li> <b>centers</b>: The number of centers to generate, or the fixed center locations. </li>\n",
" <ul> <li> Value will be: [[4, 4], [-2, -1], [2, -3],[1,1]] </li> </ul>\n",
" <li> <b>cluster_std</b>: The standard deviation of the clusters. </li>\n",
" <ul> <li> Value will be: 0.9 </li> </ul>\n",
"</ul>\n",
"<br>\n",
"<b> <u> Output </u> </b>\n",
"<ul>\n",
" <li> <b>X</b>: Array of shape [n_samples, n_features]. (Feature Matrix)</li>\n",
" <ul> <li> The generated samples. </li> </ul> \n",
" <li> <b>y</b>: Array of shape [n_samples]. (Response Vector)</li>\n",
" <ul> <li> The integer labels for cluster membership of each sample. </li> </ul>\n",
"</ul>\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"X, y = make_blobs(n_samples=5000, centers=[[4,4], [-2, -1], [2, -3], [1, 1]], cluster_std=0.9)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Display the scatter plot of the randomly generated data.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f130bac8240>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X[:, 0], X[:, 1], marker='.')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<h2 id=\"setting_up_K_means\">Setting up K-Means</h2>\n",
"Now that we have our random data, let's set up our K-Means Clustering.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"The KMeans class has many parameters that can be used, but we will be using these three:\n",
"\n",
"<ul>\n",
" <li> <b>init</b>: Initialization method of the centroids. </li>\n",
" <ul>\n",
" <li> Value will be: \"k-means++\" </li>\n",
" <li> k-means++: Selects initial cluster centers for k-mean clustering in a smart way to speed up convergence.</li>\n",
" </ul>\n",
" <li> <b>n_clusters</b>: The number of clusters to form as well as the number of centroids to generate. </li>\n",
" <ul> <li> Value will be: 4 (since we have 4 centers)</li> </ul>\n",
" <li> <b>n_init</b>: Number of time the k-means algorithm will be run with different centroid seeds. The final results will be the best output of n_init consecutive runs in terms of inertia. </li>\n",
" <ul> <li> Value will be: 12 </li> </ul>\n",
"</ul>\n",
"\n",
"Initialize KMeans with these parameters, where the output parameter is called <b>k_means</b>.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"k_means = KMeans(init = \"k-means++\", n_clusters = 4, n_init = 12)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's fit the KMeans model with the feature matrix we created above, <b> X </b>\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n",
" n_clusters=4, n_init=12, n_jobs=None, precompute_distances='auto',\n",
" random_state=None, tol=0.0001, verbose=0)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k_means.fit(X)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's grab the labels for each point in the model using KMeans' <b> .labels\\_ </b> attribute and save it as <b> k_means_labels </b> \n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 3, 3, ..., 1, 0, 0], dtype=int32)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k_means_labels = k_means.labels_\n",
"k_means_labels"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"We will also get the coordinates of the cluster centers using KMeans' <b> .cluster_centers\\_ </b> and save it as <b> k_means_cluster_centers </b>\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[-2.03743147, -0.99782524],\n",
" [ 3.97334234, 3.98758687],\n",
" [ 0.96900523, 0.98370298],\n",
" [ 1.99741008, -3.01666822]])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k_means_cluster_centers = k_means.cluster_centers_\n",
"k_means_cluster_centers"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<h2 id=\"creating_visual_plot\">Creating the Visual Plot</h2>\n",
"So now that we have the random data generated and the KMeans model initialized, let's plot them and see what it looks like!\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Please read through the code and comments to understand how to plot the model.\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"image/png": "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lScnW8WneI7tfm2x1We+83NXurwiLi0NzHrMpbDjSVwdZAUsccPgWjWMrvRP4f33BvI6J4o5j/bNKwtWnqeODbLFmyeHsWvP2gV9hrlcFsVCuhBuPshJOIkbBtdiqorflu95eD0CQR9KSwN5H3ffts/nPNxhP3wYIfu1c0kDcprsww85CSdxwyP79noxJAleXR76dW8O+bofd9+2F5IXCh3/+X/MlSbcRDqXNJDvNXKq7NaAlCAkblgsVJLgFedDH2uf87Z8tsf5NNvVRjouRBqQU2W3BiQBS9ywWKy8Wh6Is237qpxb/Nm04GLev5jhg4UMKEg999aA1IAlPnTI1lRff/W8J5dBQuJ6o5AGLCtgiQ8dFtOPKyFxLSGbcBIfelzvabDFbqDJhtyHF5KAJT70uN4EttgDEXLA4sMLKUFIfOhxvR0Fiy15SAnlwwtJwBIfelxvAlvsWEYZ8/jhhSRgiQ89JIFJ3KiQGrCEhITEEkESsISEhMQSQRKwhISExBJBErCEhITEEkESsISEhMQSQRKwhISExBJBErCEhITEEmFeaWiKokwAGLh2pyMhISHxocQaIlqR/cN5EbCEhISExOJBShASEhISSwRJwBISEhJLBEnAEhISEksEScASEhISSwRJwBISEhJLBEnAEhISEksEScASEhISSwRJwBISEhJLBEnAEhISEkuE/z+9sTZzUPEiEQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Initialize the plot with the specified dimensions.\n",
"fig = plt.figure(figsize=(6, 4))\n",
"\n",
"# Colors uses a color map, which will produce an array of colors based on\n",
"# the number of labels there are. We use set(k_means_labels) to get the\n",
"# unique labels.\n",
"colors = plt.cm.Spectral(np.linspace(0, 1, len(set(k_means_labels))))\n",
"\n",
"# Create a plot\n",
"ax = fig.add_subplot(1, 1, 1)\n",
"\n",
"# For loop that plots the data points and centroids.\n",
"# k will range from 0-3, which will match the possible clusters that each\n",
"# data point is in.\n",
"for k, col in zip(range(len([[4,4], [-2, -1], [2, -3], [1, 1]])), colors):\n",
"\n",
" # Create a list of all data points, where the data points that are \n",
" # in the cluster (ex. cluster 0) are labeled as true, else they are\n",
" # labeled as false.\n",
" my_members = (k_means_labels == k)\n",
" \n",
" # Define the centroid, or cluster center.\n",
" cluster_center = k_means_cluster_centers[k]\n",
" \n",
" # Plots the datapoints with color col.\n",
" ax.plot(X[my_members, 0], X[my_members, 1], 'w', markerfacecolor=col, marker='.')\n",
" \n",
" # Plots the centroids with specified color, but with a darker outline\n",
" ax.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col, markeredgecolor='k', markersize=6)\n",
"\n",
"# Title of the plot\n",
"ax.set_title('KMeans')\n",
"\n",
"# Remove x-axis ticks\n",
"ax.set_xticks(())\n",
"\n",
"# Remove y-axis ticks\n",
"ax.set_yticks(())\n",
"\n",
"# Show the plot\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Practice\n",
"\n",
"Try to cluster the above dataset into 3 clusters. \n",
"Notice: do not generate data again, use the same dataset as above.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# write your code here\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click **here** for the solution.\n",
"\n",
"<!-- Your answer is below:\n",
"\n",
"k_means3 = KMeans(init = \"k-means++\", n_clusters = 3, n_init = 12)\n",
"k_means3.fit(X)\n",
"fig = plt.figure(figsize=(6, 4))\n",
"colors = plt.cm.Spectral(np.linspace(0, 1, len(set(k_means3.labels_))))\n",
"ax = fig.add_subplot(1, 1, 1)\n",
"for k, col in zip(range(len(k_means3.cluster_centers_)), colors):\n",
" my_members = (k_means3.labels_ == k)\n",
" cluster_center = k_means3.cluster_centers_[k]\n",
" ax.plot(X[my_members, 0], X[my_members, 1], 'w', markerfacecolor=col, marker='.')\n",
" ax.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col, markeredgecolor='k', markersize=6)\n",
"plt.show()\n",
"\n",
"\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<h1 id=\"customer_segmentation_K_means\">Customer Segmentation with K-Means</h1>\n",
"Imagine that you have a customer dataset, and you need to apply customer segmentation on this historical data.\n",
"Customer segmentation is the practice of partitioning a customer base into groups of individuals that have similar characteristics. It is a significant strategy as a business can target these specific groups of customers and effectively allocate marketing resources. For example, one group might contain customers who are high-profit and low-risk, that is, more likely to purchase products, or subscribe for a service. A business task is to retaining those customers. Another group might include customers from non-profit organizations. And so on.\n",
"\n",
"Lets download the dataset. To download the data, we will use **`!wget`** to download it from IBM Object Storage. \n",
"**Did you know?** When it comes to Machine Learning, you will likely be working with large datasets. As a business, where can you host your data? IBM is offering a unique opportunity for businesses, with 10 Tb of IBM Cloud Object Storage: [Sign up now for free](http://cocl.us/ML0101EN-IBM-Offer-CC)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"!wget -O Cust_Segmentation.csv https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/Cust_Segmentation.csv"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Load Data From CSV File\n",
"\n",
"Before you can work with the data, you must use the URL to get the Cust_Segmentation.csv.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"cust_df = pd.read_csv(\"Cust_Segmentation.csv\")\n",
"cust_df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"pre_processing\">Pre-processing</h2\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"As you can see, **Address** in this dataset is a categorical variable. k-means algorithm isn't directly applicable to categorical variables because Euclidean distance function isn't really meaningful for discrete variables. So, lets drop this feature and run clustering.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"df = cust_df.drop('Address', axis=1)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Normalizing over the standard deviation\n",
"\n",
"Now let's normalize the dataset. But why do we need normalization in the first place? Normalization is a statistical method that helps mathematical-based algorithms to interpret features with different magnitudes and distributions equally. We use **StandardScaler()** to normalize our dataset.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"X = df.values[:,1:]\n",
"X = np.nan_to_num(X)\n",
"Clus_dataSet = StandardScaler().fit_transform(X)\n",
"Clus_dataSet"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"modeling\">Modeling</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"In our example (if we didn't have access to the k-means algorithm), it would be the same as guessing that each customer group would have certain age, income, education, etc, with multiple tests and experiments. However, using the K-means clustering we can do all this process much easier.\n",
"\n",
"Lets apply k-means on our dataset, and take look at cluster labels.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"clusterNum = 3\n",
"k_means = KMeans(init = \"k-means++\", n_clusters = clusterNum, n_init = 12)\n",
"k_means.fit(X)\n",
"labels = k_means.labels_\n",
"print(labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<h2 id=\"insights\">Insights</h2>\n",
"We assign the labels to each row in dataframe.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"df[\"Clus_km\"] = labels\n",
"df.head(5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"We can easily check the centroid values by averaging the features in each cluster.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"df.groupby('Clus_km').mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, lets look at the distribution of customers based on their age and income:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"area = np.pi * ( X[:, 1])**2 \n",
"plt.scatter(X[:, 0], X[:, 3], s=area, c=labels.astype(np.float), alpha=0.5)\n",
"plt.xlabel('Age', fontsize=18)\n",
"plt.ylabel('Income', fontsize=16)\n",
"\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from mpl_toolkits.mplot3d import Axes3D \n",
"fig = plt.figure(1, figsize=(8, 6))\n",
"plt.clf()\n",
"ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)\n",
"\n",
"plt.cla()\n",
"# plt.ylabel('Age', fontsize=18)\n",
"# plt.xlabel('Income', fontsize=16)\n",
"# plt.zlabel('Education', fontsize=16)\n",
"ax.set_xlabel('Education')\n",
"ax.set_ylabel('Age')\n",
"ax.set_zlabel('Income')\n",
"\n",
"ax.scatter(X[:, 1], X[:, 0], X[:, 3], c= labels.astype(np.float))\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"k-means will partition your customers into mutually exclusive groups, for example, into 3 clusters. The customers in each cluster are similar to each other demographically.\n",
"Now we can create a profile for each group, considering the common characteristics of each cluster. \n",
"For example, the 3 clusters can be:\n",
"\n",
"- AFFLUENT, EDUCATED AND OLD AGED\n",
"- MIDDLE AGED AND MIDDLE INCOME\n",
"- YOUNG AND LOW INCOME\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<h2>Want to learn more?</h2>\n",
"\n",
"IBM SPSS Modeler is a comprehensive analytics platform that has many machine learning algorithms. It has been designed to bring predictive intelligence to decisions made by individuals, by groups, by systems – by your enterprise as a whole. A free trial is available through this course, available here: <a href=\"https://www.ibm.com/analytics/spss-statistics-software\">SPSS Modeler</a>\n",
"\n",
"Also, you can use Watson Studio to run these notebooks faster with bigger datasets. Watson Studio is IBM's leading cloud solution for data scientists, built by data scientists. With Jupyter notebooks, RStudio, Apache Spark and popular libraries pre-packaged in the cloud, Watson Studio enables data scientists to collaborate on their projects without having to install anything. Join the fast-growing community of Watson Studio users today with a free account at <a href=\"https://www.ibm.com/cloud/watson-studio\">Watson Studio</a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Thank you for completing this lab!\n",
"\n",
"## Author\n",
"\n",
"Saeed Aghabozorgi\n",
"\n",
"### Other Contributors\n",
"\n",
"<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n",
"\n",
"## Change Log\n",
"\n",
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n",
"| ----------------- | ------- | ---------- | ---------------------------------- |\n",
"| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n",
"| | | | |\n",
"| | | | |\n",
"\n",
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.6.11"
},
"widgets": {
"state": {},
"version": "1.1.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment