機器學習第十六講:K-means → 自動把超市顧客分成不同消費群體

機器學習第十六講:K-means → 自動把超市顧客分成不同消費群體

資料取自《零基礎學機器學習》。
查看總目錄:學習大綱

關于DeepSeek本地部署指南可以看下我之前寫的文章:DeepSeek R1本地與線上滿血版部署:超詳細手把手指南


K-means是一種用于自動將相似數據分組的無監督學習算法。下面用超市顧客分組的例子詳細講解:

一、核心原理(類似整理雜貨鋪)

假設你有一堆散落的商品要分類擺放,但不知道應該分幾類。K-means的解決步驟是:

  1. 隨機選位置:先猜測分3類,在賣場隨機選3個貨架位置作為初始"中心點" [1-3][3]
  2. 就近擺放:把所有商品擺到離它最近的貨架周圍,形成3個臨時區域 [^3]
  3. 調整中心:在每個臨時區域中心放個新貨架,替代原來的隨機位置 [^3]
  4. 重復優化:根據新貨架位置重新擺放商品,直到貨架位置不再明顯變化 [^3]
隨機選3個中心點
商品歸類到最近中心
計算每個類的新中心
中心是否變化?
得到最終分類

二、超市顧客分群實戰

案例背景:某超市收集了200名顧客的:

  • 年收入(萬元)
  • 消費分數(0-100分,綜合消費金額和頻率)[^1]
數據準備
選擇特征
確定K值
聚類分析
  1. 選擇關鍵特征:這里選年收入和消費分數,就像選"尺子"來度量顧客差異 [^1]

    示例數據片段:
    | 顧客ID | 年收入 | 消費分數 |
    |--------|--------|----------|
    | 001 | 38 | 82 |
    | 002 | 43 | 78 |

  2. 確定分組數量K:用手肘法找最佳分組數 [^3]

    • 原理:計算不同K值時的總誤差(各點到中心的距離和)
    • 圖示:當誤差下降變緩時,就像人手臂的"肘關節",選這個K值
    # 代碼示例(Python)
    cost = []
    for k in 110:用K-means分組記錄當前總誤差
    plt.plot(cost)  # 找肘部拐點
    
  3. 生成4個消費群體(當K=4時)[1][2]

    • 簇1(藍):高收入-高消費 → 重點維護的VIP客戶
    • 簇2(綠):中等收入-高消費 → 高潛力客戶
    • 簇3(紅):低收入-低消費 → 普通客戶
    • 簇4(青):高收入-低消費 → 需提升消費意愿

三、應用價值與局限

適用場景 ? 銀行客戶分群/新聞主題聚類/市場細分 [^5-3]
優點:簡單高效,適合處理大型數據集
缺點:需要人工確定K值,對異常值敏感

生活類比:就像給圖書館散落的書籍分類,先估計大概有幾個主題區,不斷調整書架位置直到形成自然的圖書集群 [^3]


目錄:總目錄
上篇文章:機器學習第十五講:決策樹全面講解:像玩"20個問題"游戲猜身份🎮
下篇文章:機器學習第十七講:PCA → 把100維數據壓縮成3D視圖仍保持主要特征


[^1-3]《零基礎學機器學習》第一章第三節類型劃分
[^5-3]《零基礎學機器學習》第五章第五節聚類算法
[1][2][^3]參見客戶聚類案例代碼(《零基礎學機器學習》第十章教學用例)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80596.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80596.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80596.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spring中yml配置上下文與tomcat等外部容器不一致問題

結論:外部優先級大于內部 在 application.yml 中配置了: server:port: 8080servlet:context-path: /demo這表示你的 Spring Boot 應用的上下文路徑(context-path)是 /demo,即訪問你的服務時,URL 必須以 /d…

論文研讀——《AnomalyGPT:使用大型視覺語言模型檢測工業異常》

這篇論文提出了 AnomalyGPT,一個基于大型視覺語言模型的工業異常檢測框架,首次將通用多模態對話能力引入工業視覺場景,通過引入圖像解碼器增強像素級感知,設計 Prompt 學習器實現任務自適應控制,并利用合成異常樣本解決…

供應鏈安全檢測系列技術規范介紹之一|軟件成分分析

軟件成分分析的概念及意義 軟件成分分析Software Compostition Analysis(SCA)是一種用于管理開源組件應用安全的方法。軟件成分分析系統可以快速跟蹤和分析應用軟件的開源組件,發現相關組件、支持庫以及它們之間直接和間接依賴關系&#xff0…

conda更換清華源

1、概覽 anaconda更換速度更快、更穩定的下載源,在linux環境測試通過。 2、conda源查看 在修改之前可以查看下現有conda源是什么,查看conda配置信息,如下: cat ~/.condarc 可以看到你的conda源,以我的conda源舉例&am…

Docker配置容器開機自啟或服務重啟后自啟

要將一個 Docker 容器設置為開機自啟,你可以使用 docker update 命令或配置 Docker 服務來實現。以下是兩種常見的方法: 方法 1:使用 docker update 設置容器自動重啟 使用 docker update 設置容器為開機自啟 你可以使用以下命令&#xff0c…

Flink 的水印機制

Apache Flink 的 水印機制(Watermark Mechanism) 主要用于解決 事件時間流中的亂序問題(Out-of-Order Events),確保窗口(Window)能夠在合適的時間觸發計算,從而提供準確、一致的處理…

【每天一個知識點】embedding與representation

“Embedding(嵌入)”與“Representation(表示)”在機器學習、自然語言處理(NLP)、圖神經網絡等領域常被使用,它們密切相關,但語義上有一定區別。 一、定義 1. Representation&#…

SpringBoot(二)--- SpringBoot基礎(http協議、分層解耦)

目錄 前言 一、SpringBoot入門 1.入門程序 2.解析 二、HTTP協議 1.HTTP概述 2.HTTP請求協議 2.1 GET方式的請求協議 2.2 POST方式的請求協議 2.3 兩者的區別 2.4 獲取請求數據 3.HTTP響應協議 三、分層解耦 1.三層架構 2.IOC&DI 2.1 入門 2.2 IOC詳解 2.…

Please install it with pip install onnxruntime

無論怎么安裝都是 Please install it with pip install onnxruntime 我python 版本是3.11 ,我換成3.10 解決了

【數據結構入門訓練DAY-35】棋盤問題

本次訓練聚焦于使用深度優先搜索(DFS)算法解決棋盤上的棋子擺放問題。題目要求在一個可能不規則的nn棋盤上擺放k個棋子,且任意兩個棋子不能位于同一行或同一列。輸入包括棋盤大小n和棋子數k,以及棋盤的形狀(用#表示可放…

【日常筆記】wps如何將值轉換成東西南北等風向漢字

在WPS表格中,若要將數值(如角度值)轉換成“東、南、西、北”等風向漢字,可通過以下步驟結合自定義函數或條件判斷實現: 一、wps如何將值轉換 方法一:使用LOOKUP函數(簡化公式)&…

Web性能優化的未來:邊緣計算、AI與新型渲染架構

一、邊緣計算與性能優化深度整合 1.1 邊緣節點計算卸載策略 ? 智能任務分割:將非關鍵路徑計算卸載到邊緣節點 // 客戶端代碼 const edgeTask = new EdgeTask(image-processing); edgeTask.postMessage(imageData, {transfer

spring中的EnvironmentPostProcessor接口詳解

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站 EnvironmentPostProcessor 是 Spring Boot 提供的一個關鍵擴展接口,允許開發者在 Spring 應用環境初始化后、應用上下文創建前&…

Vue3知識點梳理

注:純手打,如有錯誤歡迎評論區交流! 轉載請注明出處:https://blog.csdn.net/testleaf/article/details/148056625 編寫此文是為了更好地學習前端知識,如果損害了有關人的利益,請聯系刪除! 本文章…

C++23 新增的查找算法詳解:ranges::find_last 系列函數

文章目錄 引言C Ranges 庫簡介ranges::find_last、ranges::find_last_if 和 ranges::find_last_if_not 概述ranges::find_last示例代碼代碼解釋 ranges::find_last_if函數簽名參數解釋示例代碼代碼解釋 ranges::find_last_if_not示例代碼代碼解釋 使用場景總結 引言 在 C 的發…

DW_DMAC簡介

基本概念: DMA:全稱direct memory access,即直接存儲器訪問。dma可以在中央處理器CPU不參與的情況下,實現外設和內存之間的數據直接傳輸,從而提高數據傳輸效率 外設與計算機內存之間的數據傳輸,一般可通過…

信號量基礎入門:并發控制的核心概念

問題的復雜性產生的根本原因在于,如 2.2 節所述,共享變量的訪問始終是“單向信息流”。也就是說,一個進程可以分配新值或檢查當前值,但這種檢查不會為其他進程留下任何痕跡。結果是,當一個進程想要對共享變量的當前值作…

(十九)Java集合框架深度解析:從基礎到高級應用

一、集合框架概述 1.1 什么是集合框架 Java集合框架(Java Collections Framework, JCF)是Java語言中用于表示和操作集合的一套標準化體系結構。它提供了一組接口、實現類和算法,用于存儲和操作對象組,解決了數組在存儲對象時的諸多限制。 集合框架的主…

Blender cycles烘焙貼圖筆記

下載了一些槍模型,一個模型有七八個材質,一個扳機、準星還有單獨的材質,用的貼圖只有一小部分有內容,對Draw Call非常不友好。不得不學一下怎么用Blender減材質。 找到了這個視頻如何在Blender中將多種材料多張貼圖烘焙成一張貼圖…

mysql的高可用

1. 環境準備 2臺MySQL服務器(node1: 192.168.1.101,node2: 192.168.1.102)2臺HAProxy Keepalived服務器(haproxy1: 192.168.1.103,haproxy2: 192.168.1.104)虛擬IP(VIP: 192.168.1.100&#x…