{ "cells": [ { "cell_type": "markdown", "id": "df08aee2-ab11-4bd9-abb5-f1de21e6430a", "metadata": {}, "source": [ "
客户聚类分析
" ] }, { "cell_type": "markdown", "id": "0c665d6c-4d28-4419-88ea-d65e6525a160", "metadata": {}, "source": [ "## 1. 导入数据和所需的库" ] }, { "cell_type": "code", "execution_count": 1, "id": "15995ee3-4eb0-4688-9333-26fb2c166803", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "4dd05e65-eb29-4d49-b255-740899db40f2", "metadata": {}, "source": [ "使用`pandas`读取数据并查看数据" ] }, { "cell_type": "code", "execution_count": 2, "id": "8722b64e-2a09-4670-b603-733aae329f4f", "metadata": {}, "outputs": [], "source": [ "customer_data = pd.read_csv('./data/ShoppingData.csv')" ] }, { "cell_type": "markdown", "id": "2df6dbf8-e9eb-4cf7-979a-647bb3f5c535", "metadata": {}, "source": [ "## 2. 查看数据内容" ] }, { "cell_type": "code", "execution_count": 3, "id": "1652bb68-13f4-49c2-9b57-94028bb3a8cc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(200, 5)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 查看数据维度\n", "customer_data.shape" ] }, { "cell_type": "markdown", "id": "86534aab-1365-44a3-8a65-1badafdf798c", "metadata": {}, "source": [ "数据集中共有200条客户记录,用5个维度来刻画每一位客户。" ] }, { "cell_type": "code", "execution_count": 4, "id": "a9496f2f-bf81-40d2-b5ba-9d5c6b198464", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CustomerIDGenreAgeAnnual Income (k$)Spending Score (1-100)
01Male191539
12Male211581
23Female20166
34Female231677
45Female311740
\n", "
" ], "text/plain": [ " CustomerID Genre Age Annual Income (k$) Spending Score (1-100)\n", "0 1 Male 19 15 39\n", "1 2 Male 21 15 81\n", "2 3 Female 20 16 6\n", "3 4 Female 23 16 77\n", "4 5 Female 31 17 40" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 查看数据样例\n", "customer_data.head()" ] }, { "cell_type": "markdown", "id": "ff89a913-f53a-4f92-9f63-675a581e6751", "metadata": {}, "source": [ "每条用户数据有五个属性:ID,性别,年龄,年收入,消费分\n", "\n", "为了在二维特征空间中可视化聚类结果,本例只使用年收入和消费分属性" ] }, { "cell_type": "code", "execution_count": 5, "id": "eee14a84-6f5d-4a7c-8c6b-67186483732f", "metadata": {}, "outputs": [], "source": [ "# 删除其余三列属性\n", "data = customer_data.iloc[:, 3:5].values" ] }, { "cell_type": "code", "execution_count": 6, "id": "a0bbaca8-b0e6-4bd4-b15e-3c0af16b601b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(200, 2)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.shape" ] }, { "cell_type": "code", "execution_count": 7, "id": "94e7ce2e-5074-451b-8ab4-d9bc864b4549", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "numpy.ndarray" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 数据类型为numpy数组\n", "type(data)" ] }, { "cell_type": "markdown", "id": "0eb6fa90-c103-4778-9e0a-bc204abbe697", "metadata": {}, "source": [ "为便于确定类簇数$k$,先将数据点在二维平面进行可视化,为寻找$k$提供直觉依据。" ] }, { "cell_type": "code", "execution_count": 8, "id": "0aacb174-adc0-4acb-9376-293809f02764", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "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(data[:,0],data[:,1])" ] }, { "cell_type": "markdown", "id": "57ebf9fb-b57b-4d98-8b12-b5fd1acb7080", "metadata": {}, "source": [ "由上图可以看出,将类簇数设置为$k=5$是一个合理的选择。" ] }, { "cell_type": "markdown", "id": "80302fdb-0afd-4247-b200-902630317d46", "metadata": {}, "source": [ "## 3. 聚类分析" ] }, { "cell_type": "markdown", "id": "a7085820-1935-4c96-b272-43e049af4626", "metadata": {}, "source": [ "下面使用scikit-learn中的K-means模型对客户数据点进行聚类,并为每个数据点分配类簇标签" ] }, { "cell_type": "code", "execution_count": 9, "id": "c12422a8-0b57-451e-bca2-cca11ba0227e", "metadata": {}, "outputs": [], "source": [ "# 使用help函数查看k_means函数的具体用法和各参数含义\n", "# help(k_means)" ] }, { "cell_type": "code", "execution_count": 10, "id": "755fba53-6f6c-42a5-a9f9-13c0a21320dc", "metadata": {}, "outputs": [], "source": [ "from sklearn.cluster import k_means\n", "\n", "clusters = k_means(data,n_clusters=5)" ] }, { "cell_type": "markdown", "id": "06cbdff5-c15f-4a47-9632-2ad0cb2ae371", "metadata": {}, "source": [ "聚类结果返回一个元组(tuple),第一个元素为类簇中心,第二个元素为每个数据点对应的类簇标签" ] }, { "cell_type": "code", "execution_count": 11, "id": "0a2f25bd-dcad-40f3-9029-221502103759", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tuple" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 查看clusters的数据类型\n", "type(clusters)" ] }, { "cell_type": "code", "execution_count": 12, "id": "3541a6dd-f216-415c-9c6a-b661e7c6936c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(5, 2)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 查看元组第一个元素的维度\n", "clusters[0].shape" ] }, { "cell_type": "code", "execution_count": 13, "id": "86ef51cf-1651-4fd0-9a3a-fde1f53d62d6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[86.53846154, 82.12820513],\n", " [26.30434783, 20.91304348],\n", " [88.2 , 17.11428571],\n", " [25.72727273, 79.36363636],\n", " [55.2962963 , 49.51851852]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 五个类簇的中心\n", "clusters[0]" ] }, { "cell_type": "code", "execution_count": 14, "id": "1d9480ba-721f-41d0-aa31-874961905d68", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(200,)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 查看元组第二个元素的维度\n", "clusters[1].shape" ] }, { "cell_type": "code", "execution_count": 15, "id": "f6118dd6-7f77-4f22-b76a-c14bffe5350a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,\n", " 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4,\n", " 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n", " 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n", " 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n", " 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 2, 0, 4, 0, 2, 0, 2, 0,\n", " 4, 0, 2, 0, 2, 0, 2, 0, 2, 0, 4, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0,\n", " 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0,\n", " 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0,\n", " 2, 0], dtype=int32)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 查看每个数据点的类簇标签\n", "clusters[1]" ] }, { "cell_type": "markdown", "id": "6b99c915-5457-4067-8874-7c30cecb1be8", "metadata": {}, "source": [ "此处的类簇标签只是表示类簇的一个符号,并不具备任何含义,需要进一步分析每个类簇中数据点的特征,来为每个类簇赋予有意义的解释。" ] }, { "cell_type": "markdown", "id": "bedd3b60-d7af-449b-8c50-0e71b9540b26", "metadata": {}, "source": [ "## 4. 结果分析" ] }, { "cell_type": "markdown", "id": "95e16a19-1b66-42a2-b432-0ad50bf3dd66", "metadata": {}, "source": [ "将数据点按照聚类结果绘制在二维平面上,为不同类簇的数据点着不同的颜色,横轴表示年收入,纵轴表示消费分" ] }, { "cell_type": "code", "execution_count": 16, "id": "8cc718c8-e012-46f0-8809-269162f93177", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Spending Score')" ] }, "execution_count": 16, "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(data[:,0],data[:,1], c=clusters[1], cmap='rainbow')\n", "plt.title(\"Customer Clustering\")\n", "plt.xlabel(\"Annual Income\")\n", "plt.ylabel(\"Spending Score\")" ] }, { "cell_type": "markdown", "id": "ba8ca26d-07b0-4e9d-aa72-b914a9951218", "metadata": {}, "source": [ "从上图可以看到5种颜色的客户数据点代表5个不同的类簇,进一步分析年收入和消费分两个维度可知,5个类簇对应5种不同特征的消费群体。" ] }, { "cell_type": "markdown", "id": "bbd696d5-de83-4477-ac81-529b69731351", "metadata": {}, "source": [ "- 左下角的客户群体收入低,消费低;\n", "\n", "- 左上角的客户群体收入低,消费高;\n", "\n", "- 右上角的客户群体收入高,消费高,是企业的现金牛客户,也是需要用心维系商业关系的大客户;\n", "\n", "- 右下角的客户群体收入高,消费低,这类客户具有消费能力,需要有针对性地进行营销,激发其消费潜力;\n", "\n", "- 正中间的客户群体收入中,消费中,且数据点众多,这类客户是企业的主要客户群体,需要积极维护客户关系,保持其持续的消费动力。" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }