Created
January 20, 2019 18:29
-
-
Save bertrandobi/c027ad7e2c8205479209a0282cd26a41 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
This file contains 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
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"<a href=\"https://www.bigdatauniversity.com\"><img src=\"https://ibm.box.com/shared/static/cw2c7r3o20w9zn8gkecaeyjhgw3xdgbj.png\" width=\"400\" align=\"center\"></a>\n", | |
"\n", | |
"<h1><center>K-Means Clustering</center></h1>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"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", | |
"- 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", | |
"\n", | |
"In this notebook we practice k-means clustering with 2 examples:\n", | |
"- k-means on a random generated dataset\n", | |
"- Using k-means for customer segmentation" | |
] | |
}, | |
{ | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"### Import libraries\n", | |
"Lets first import the required libraries.\n", | |
"Also run <b> %matplotlib inline </b> since we will be plotting in this section." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"button": false, | |
"collapsed": true, | |
"deletable": true, | |
"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, | |
"deletable": true, | |
"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, | |
"deletable": true, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"button": false, | |
"collapsed": true, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"np.random.seed(0)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"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", | |
"<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, | |
"collapsed": true, | |
"deletable": true, | |
"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, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"Display the scatter plot of the randomly generated data." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.collections.PathCollection at 0x7f7dfd16fac8>" | |
] | |
}, | |
"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, | |
"deletable": true, | |
"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." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"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", | |
"<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>." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"button": false, | |
"collapsed": true, | |
"deletable": true, | |
"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, | |
"deletable": true, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
}, | |
"scrolled": 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, | |
"deletable": true, | |
"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> " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"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, | |
"deletable": true, | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"button": false, | |
"collapsed": true, | |
"deletable": true, | |
"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, | |
"deletable": true, | |
"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!" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"Please read through the code and comments to understand how to plot the model." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
}, | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\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 poitns 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", | |
"Try to cluster the above dataset into 3 clusters. \n", | |
"Notice: do not generate data again, use the same dataset as above." | |
] | |
}, | |
{ | |
"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", | |
"-->" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"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)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"--2019-01-20 18:04:34-- https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/Cust_Segmentation.csv\n", | |
"Resolving s3-api.us-geo.objectstorage.softlayer.net (s3-api.us-geo.objectstorage.softlayer.net)... 67.228.254.193\n", | |
"Connecting to s3-api.us-geo.objectstorage.softlayer.net (s3-api.us-geo.objectstorage.softlayer.net)|67.228.254.193|:443... connected.\n", | |
"HTTP request sent, awaiting response... 200 OK\n", | |
"Length: 34276 (33K) [text/csv]\n", | |
"Saving to: ‘Cust_Segmentation.csv’\n", | |
"\n", | |
"Cust_Segmentation.c 100%[=====================>] 33.47K --.-KB/s in 0.02s \n", | |
"\n", | |
"2019-01-20 18:04:34 (1.55 MB/s) - ‘Cust_Segmentation.csv’ saved [34276/34276]\n", | |
"\n" | |
] | |
} | |
], | |
"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, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"### Load Data From CSV File \n", | |
"Before you can work with the data, you must use the URL to get the Cust_Segmentation.csv." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Customer Id</th>\n", | |
" <th>Age</th>\n", | |
" <th>Edu</th>\n", | |
" <th>Years Employed</th>\n", | |
" <th>Income</th>\n", | |
" <th>Card Debt</th>\n", | |
" <th>Other Debt</th>\n", | |
" <th>Defaulted</th>\n", | |
" <th>Address</th>\n", | |
" <th>DebtIncomeRatio</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1</td>\n", | |
" <td>41</td>\n", | |
" <td>2</td>\n", | |
" <td>6</td>\n", | |
" <td>19</td>\n", | |
" <td>0.124</td>\n", | |
" <td>1.073</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NBA001</td>\n", | |
" <td>6.3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2</td>\n", | |
" <td>47</td>\n", | |
" <td>1</td>\n", | |
" <td>26</td>\n", | |
" <td>100</td>\n", | |
" <td>4.582</td>\n", | |
" <td>8.218</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NBA021</td>\n", | |
" <td>12.8</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>3</td>\n", | |
" <td>33</td>\n", | |
" <td>2</td>\n", | |
" <td>10</td>\n", | |
" <td>57</td>\n", | |
" <td>6.111</td>\n", | |
" <td>5.802</td>\n", | |
" <td>1.0</td>\n", | |
" <td>NBA013</td>\n", | |
" <td>20.9</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>4</td>\n", | |
" <td>29</td>\n", | |
" <td>2</td>\n", | |
" <td>4</td>\n", | |
" <td>19</td>\n", | |
" <td>0.681</td>\n", | |
" <td>0.516</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NBA009</td>\n", | |
" <td>6.3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>5</td>\n", | |
" <td>47</td>\n", | |
" <td>1</td>\n", | |
" <td>31</td>\n", | |
" <td>253</td>\n", | |
" <td>9.308</td>\n", | |
" <td>8.908</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NBA008</td>\n", | |
" <td>7.2</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Customer Id Age Edu Years Employed Income Card Debt Other Debt \\\n", | |
"0 1 41 2 6 19 0.124 1.073 \n", | |
"1 2 47 1 26 100 4.582 8.218 \n", | |
"2 3 33 2 10 57 6.111 5.802 \n", | |
"3 4 29 2 4 19 0.681 0.516 \n", | |
"4 5 47 1 31 253 9.308 8.908 \n", | |
"\n", | |
" Defaulted Address DebtIncomeRatio \n", | |
"0 0.0 NBA001 6.3 \n", | |
"1 0.0 NBA021 12.8 \n", | |
"2 1.0 NBA013 20.9 \n", | |
"3 0.0 NBA009 6.3 \n", | |
"4 0.0 NBA008 7.2 " | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"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" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"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." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Customer Id</th>\n", | |
" <th>Age</th>\n", | |
" <th>Edu</th>\n", | |
" <th>Years Employed</th>\n", | |
" <th>Income</th>\n", | |
" <th>Card Debt</th>\n", | |
" <th>Other Debt</th>\n", | |
" <th>Defaulted</th>\n", | |
" <th>DebtIncomeRatio</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1</td>\n", | |
" <td>41</td>\n", | |
" <td>2</td>\n", | |
" <td>6</td>\n", | |
" <td>19</td>\n", | |
" <td>0.124</td>\n", | |
" <td>1.073</td>\n", | |
" <td>0.0</td>\n", | |
" <td>6.3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2</td>\n", | |
" <td>47</td>\n", | |
" <td>1</td>\n", | |
" <td>26</td>\n", | |
" <td>100</td>\n", | |
" <td>4.582</td>\n", | |
" <td>8.218</td>\n", | |
" <td>0.0</td>\n", | |
" <td>12.8</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>3</td>\n", | |
" <td>33</td>\n", | |
" <td>2</td>\n", | |
" <td>10</td>\n", | |
" <td>57</td>\n", | |
" <td>6.111</td>\n", | |
" <td>5.802</td>\n", | |
" <td>1.0</td>\n", | |
" <td>20.9</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>4</td>\n", | |
" <td>29</td>\n", | |
" <td>2</td>\n", | |
" <td>4</td>\n", | |
" <td>19</td>\n", | |
" <td>0.681</td>\n", | |
" <td>0.516</td>\n", | |
" <td>0.0</td>\n", | |
" <td>6.3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>5</td>\n", | |
" <td>47</td>\n", | |
" <td>1</td>\n", | |
" <td>31</td>\n", | |
" <td>253</td>\n", | |
" <td>9.308</td>\n", | |
" <td>8.908</td>\n", | |
" <td>0.0</td>\n", | |
" <td>7.2</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Customer Id Age Edu Years Employed Income Card Debt Other Debt \\\n", | |
"0 1 41 2 6 19 0.124 1.073 \n", | |
"1 2 47 1 26 100 4.582 8.218 \n", | |
"2 3 33 2 10 57 6.111 5.802 \n", | |
"3 4 29 2 4 19 0.681 0.516 \n", | |
"4 5 47 1 31 253 9.308 8.908 \n", | |
"\n", | |
" Defaulted DebtIncomeRatio \n", | |
"0 0.0 6.3 \n", | |
"1 0.0 12.8 \n", | |
"2 1.0 20.9 \n", | |
"3 0.0 6.3 \n", | |
"4 0.0 7.2 " | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df = cust_df.drop('Address', axis=1)\n", | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"#### Normalizing over the standard deviation\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." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([[ 0.74291541, 0.31212243, -0.37878978, ..., -0.59048916,\n", | |
" -0.52379654, -0.57652509],\n", | |
" [ 1.48949049, -0.76634938, 2.5737211 , ..., 1.51296181,\n", | |
" -0.52379654, 0.39138677],\n", | |
" [-0.25251804, 0.31212243, 0.2117124 , ..., 0.80170393,\n", | |
" 1.90913822, 1.59755385],\n", | |
" ...,\n", | |
" [-1.24795149, 2.46906604, -1.26454304, ..., 0.03863257,\n", | |
" 1.90913822, 3.45892281],\n", | |
" [-0.37694723, -0.76634938, 0.50696349, ..., -0.70147601,\n", | |
" -0.52379654, -1.08281745],\n", | |
" [ 2.1116364 , -0.76634938, 1.09746566, ..., 0.16463355,\n", | |
" -0.52379654, -0.2340332 ]])" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"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>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"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." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[1 2 1 1 0 2 1 2 1 2 2 1 1 1 1 1 1 1 2 1 1 1 1 2 2 2 1 1 2 1 2 1 1 1 1 1 1\n", | |
" 1 1 2 1 2 1 0 1 2 1 1 1 2 2 1 1 2 2 1 1 1 2 1 2 1 2 2 1 1 2 1 1 1 2 2 2 1\n", | |
" 1 1 1 1 2 1 2 2 0 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 2 1\n", | |
" 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 2 1\n", | |
" 1 1 1 1 1 1 2 1 2 2 1 2 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 2 1\n", | |
" 1 1 1 1 2 1 1 2 1 2 1 1 2 0 1 2 1 1 1 1 1 1 0 2 1 1 1 1 2 1 1 2 2 1 2 1 2\n", | |
" 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 1 1 2 1 1 1 1\n", | |
" 1 1 2 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 1 2 1 2 2 1 1 1 1 1 1\n", | |
" 1 1 1 2 2 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 2 1 2 2 1\n", | |
" 1 1 1 1 2 1 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 0 1 1 1 2 1 2 2 2 1\n", | |
" 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1\n", | |
" 1 2 1 1 2 1 1 1 1 2 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 0\n", | |
" 1 1 1 1 1 1 2 1 1 1 0 1 1 1 1 2 1 0 1 1 1 1 2 1 2 2 2 1 1 2 2 1 1 1 1 1 1\n", | |
" 1 2 1 1 1 1 2 1 1 1 2 1 2 1 1 1 2 1 1 1 1 2 2 1 1 1 1 2 1 1 1 1 2 1 1 1 1\n", | |
" 1 2 2 1 1 1 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 1 2 1 1 1 1 2 1 1 2 1 1 0 1 0 1\n", | |
" 1 0 1 1 1 1 1 1 1 1 1 2 1 2 1 1 0 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 2\n", | |
" 1 1 1 1 1 1 2 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2\n", | |
" 2 1 1 2 1 2 1 1 2 1 2 1 1 0 1 2 1 2 1 1 1 1 1 2 2 1 1 1 1 2 1 1 1 2 2 1 1\n", | |
" 2 1 1 1 2 1 0 1 1 2 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1\n", | |
" 1 1 2 1 1 2 1 2 1 2 2 1 1 1 2 1 2 1 1 1 1 1 2 1 1 1 1 2 2 1 1 2 2 1 1 1 1\n", | |
" 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 1 2 1 2 2 1 1 2 1 1 1 1 1 2 2\n", | |
" 1 1 1 1 1 1 1 2 1 1 1 1 1 1 0 2 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1\n", | |
" 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2]\n" | |
] | |
} | |
], | |
"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, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"<h2 id=\"insights\">Insights</h2>\n", | |
"We assign the labels to each row in dataframe." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Customer Id</th>\n", | |
" <th>Age</th>\n", | |
" <th>Edu</th>\n", | |
" <th>Years Employed</th>\n", | |
" <th>Income</th>\n", | |
" <th>Card Debt</th>\n", | |
" <th>Other Debt</th>\n", | |
" <th>Defaulted</th>\n", | |
" <th>DebtIncomeRatio</th>\n", | |
" <th>Clus_km</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1</td>\n", | |
" <td>41</td>\n", | |
" <td>2</td>\n", | |
" <td>6</td>\n", | |
" <td>19</td>\n", | |
" <td>0.124</td>\n", | |
" <td>1.073</td>\n", | |
" <td>0.0</td>\n", | |
" <td>6.3</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2</td>\n", | |
" <td>47</td>\n", | |
" <td>1</td>\n", | |
" <td>26</td>\n", | |
" <td>100</td>\n", | |
" <td>4.582</td>\n", | |
" <td>8.218</td>\n", | |
" <td>0.0</td>\n", | |
" <td>12.8</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>3</td>\n", | |
" <td>33</td>\n", | |
" <td>2</td>\n", | |
" <td>10</td>\n", | |
" <td>57</td>\n", | |
" <td>6.111</td>\n", | |
" <td>5.802</td>\n", | |
" <td>1.0</td>\n", | |
" <td>20.9</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>4</td>\n", | |
" <td>29</td>\n", | |
" <td>2</td>\n", | |
" <td>4</td>\n", | |
" <td>19</td>\n", | |
" <td>0.681</td>\n", | |
" <td>0.516</td>\n", | |
" <td>0.0</td>\n", | |
" <td>6.3</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>5</td>\n", | |
" <td>47</td>\n", | |
" <td>1</td>\n", | |
" <td>31</td>\n", | |
" <td>253</td>\n", | |
" <td>9.308</td>\n", | |
" <td>8.908</td>\n", | |
" <td>0.0</td>\n", | |
" <td>7.2</td>\n", | |
" <td>0</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Customer Id Age Edu Years Employed Income Card Debt Other Debt \\\n", | |
"0 1 41 2 6 19 0.124 1.073 \n", | |
"1 2 47 1 26 100 4.582 8.218 \n", | |
"2 3 33 2 10 57 6.111 5.802 \n", | |
"3 4 29 2 4 19 0.681 0.516 \n", | |
"4 5 47 1 31 253 9.308 8.908 \n", | |
"\n", | |
" Defaulted DebtIncomeRatio Clus_km \n", | |
"0 0.0 6.3 1 \n", | |
"1 0.0 12.8 2 \n", | |
"2 1.0 20.9 1 \n", | |
"3 0.0 6.3 1 \n", | |
"4 0.0 7.2 0 " | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df[\"Clus_km\"] = labels\n", | |
"df.head(5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"source": [ | |
"We can easily check the centroid values by averaging the features in each cluster." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Customer Id</th>\n", | |
" <th>Age</th>\n", | |
" <th>Edu</th>\n", | |
" <th>Years Employed</th>\n", | |
" <th>Income</th>\n", | |
" <th>Card Debt</th>\n", | |
" <th>Other Debt</th>\n", | |
" <th>Defaulted</th>\n", | |
" <th>DebtIncomeRatio</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Clus_km</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>410.166667</td>\n", | |
" <td>45.388889</td>\n", | |
" <td>2.666667</td>\n", | |
" <td>19.555556</td>\n", | |
" <td>227.166667</td>\n", | |
" <td>5.678444</td>\n", | |
" <td>10.907167</td>\n", | |
" <td>0.285714</td>\n", | |
" <td>7.322222</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>432.006154</td>\n", | |
" <td>32.967692</td>\n", | |
" <td>1.613846</td>\n", | |
" <td>6.389231</td>\n", | |
" <td>31.204615</td>\n", | |
" <td>1.032711</td>\n", | |
" <td>2.108345</td>\n", | |
" <td>0.284658</td>\n", | |
" <td>10.095385</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>403.780220</td>\n", | |
" <td>41.368132</td>\n", | |
" <td>1.961538</td>\n", | |
" <td>15.252747</td>\n", | |
" <td>84.076923</td>\n", | |
" <td>3.114412</td>\n", | |
" <td>5.770352</td>\n", | |
" <td>0.172414</td>\n", | |
" <td>10.725824</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Customer Id Age Edu Years Employed Income \\\n", | |
"Clus_km \n", | |
"0 410.166667 45.388889 2.666667 19.555556 227.166667 \n", | |
"1 432.006154 32.967692 1.613846 6.389231 31.204615 \n", | |
"2 403.780220 41.368132 1.961538 15.252747 84.076923 \n", | |
"\n", | |
" Card Debt Other Debt Defaulted DebtIncomeRatio \n", | |
"Clus_km \n", | |
"0 5.678444 10.907167 0.285714 7.322222 \n", | |
"1 1.032711 2.108345 0.284658 10.095385 \n", | |
"2 3.114412 5.770352 0.172414 10.725824 " | |
] | |
}, | |
"execution_count": 16, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"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:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"button": false, | |
"collapsed": false, | |
"deletable": true, | |
"new_sheet": false, | |
"run_control": { | |
"read_only": false | |
} | |
}, | |
"outputs": [ | |
{ | |
"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": [ | |
"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, | |
"deletable": true, | |
"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" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"button": false, | |
"deletable": true, | |
"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=\"http://cocl.us/ML0101EN-SPSSModeler\">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://cocl.us/ML0101EN_DSX\">Watson Studio</a>\n", | |
"\n", | |
"<h3>Thanks for completing this lesson!</h3>\n", | |
"\n", | |
"<h4>Author: <a href=\"https://ca.linkedin.com/in/saeedaghabozorgi\">Saeed Aghabozorgi</a></h4>\n", | |
"<p><a href=\"https://ca.linkedin.com/in/saeedaghabozorgi\">Saeed Aghabozorgi</a>, PhD is a Data Scientist in IBM with a track record of developing enterprise level applications that substantially increases clients’ ability to turn data into actionable knowledge. He is a researcher in data mining field and expert in developing advanced analytic methods like machine learning and statistical modelling on large datasets.</p>\n", | |
"\n", | |
"<hr>\n", | |
"\n", | |
"<p>Copyright © 2018 <a href=\"https://cocl.us/DX0108EN_CC\">Cognitive Class</a>. This notebook and its source code are released under the terms of the <a href=\"https://bigdatauniversity.com/mit-license/\">MIT License</a>.</p>" | |
] | |
} | |
], | |
"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.6.6" | |
}, | |
"widgets": { | |
"state": {}, | |
"version": "1.1.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment