1. 程式人生 > >【原創】Kmeans演算法 優缺點分析

【原創】Kmeans演算法 優缺點分析

優點:
原理簡單(靠近中心點),實現容易(1、2 天),聚類效果中上(依賴K的選擇)

缺點:
1. 無法確定K的個數 (根據什麼指標確定K)
2. 對離群點敏感 (容易導致中心點偏移)
3. 演算法複雜度不易控制 O(NKm), 迭代次數可能較多 (m可能會比較大)
4. 區域性最優解而不是全域性優 (這個和初始點選誰有關)
5. 結果不穩定 (受輸入順序影響)
6. 無法增量計算 (同5)
etc

各種改進版也是針對不同缺點的迴避。

但每個問題又不是特別有普適性,所以我認為根據具體情況做出合適的改進會更好。

由於Kmeans實現簡單,通過一定的數理知識迴避相應的缺點也不是特別複雜,所以根據已有資料做針對性的修改更合適。 改進版:
k-modes
k-centroids
etc. 

未經博主允許,不能轉載任何文章。

相關推薦

原創Kmeans演算法 優缺點分析

優點: 原理簡單(靠近中心點),實現容易(1、2 天),聚類效果中上(依賴K的選擇) 缺點: 1. 無法確定K的個數 (根據什麼指標確定K) 2. 對離群點敏感 (容易導致中心點偏移) 3. 演算法複雜度不易控制 O(NKm), 迭代次數可能較多 (m可能會比較大) 4. 區域性最優解而不是全域性

原創源碼角度分析Android的消息機制系列(一)——Android消息機制概述

run 權限 開發 等待 通過 讀取 概述 走了 color ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 1.為什麽需要Android的消息機制 因為Android系統不允許在子線程中去訪問UI,即Android系統不允許在子線程中更新UI。 為什麽不允許

原創源碼角度分析Android的消息機制系列(二)——ThreadLocal的工作過程

機制 simple hand 這就是 數據存儲 read etc lena 並且 ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 在上一篇文章中,我們已經提到了ThreadLocal,它並非線程,而是在線程中存儲數據用的。數據存儲以後,只能在指定的線程中獲取到數據

原創源碼角度分析Android的消息機制系列(三)——ThreadLocal的工作原理

沒有 cit gen 管理 pre 靜態 bsp 允許 clas ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 先看Android源碼(API24)中對ThreadLocal的定義: public class ThreadLocal<T>

原創源碼角度分析Android的消息機制系列(四)——MessageQueue的工作原理

enc 容易 工作 trie oss 當前 within which ptime ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 MessageQueue,主要包含2個操作:插入和讀取。讀取操作會伴隨著刪除操作,插入和讀取對應的方法分別為enqueueMes

原創源碼角度分析Android的消息機制系列(六)——Handler的工作原理

urn long empty isa pat stat 開啟 it is performed ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 先看Handler的定義: /** * A Handler allows you to send and proc

筆記 定位演算法效能分析

目錄 1 CRLB Computation 2 Mean and Variance Analysis PERFORMANCE ANALYSIS FOR LOCALIZATION ALGORITHMS CRLB給出了使用相同資料的任何無偏估計可獲得的方差的下界,因此它可以作為與

原創Linux Mutex機制分析

# 背景 - `Read the fucking source code!` --By 魯迅 - `A picture is worth a thousand words.` --By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex-A53,雙核 3. 使用工具:S

原創Open JDK更換過程及更換後的問題總結與分析

javac 原則 是否 java環境 sys classpath 運行環境 too 計算 由於2019年1月起Oracle對通用計算以外的應用場景開始收費,綜合看來還是主要針對嵌入式的Java應用進行收費,畢竟嵌入式設備的數量是龐大的,可以有數億元進賬。 因Oracle

今日頭條文章js生成cp和as引數轉換為php和python演算法原創

今日頭條js生成cp和as引數轉換為php和python演算法 【原創】 cp 和 as 引數實際是對當前時間戳的加密後得到的 JS !function(t) {     var i = {};    

原創Windows上應用程式報錯常用分析方法總結

在日常使用Windows的過程中,經常會遇到應用程式不能正常啟動、關閉等使用問題。對於Windows來說,解決這些問題的方法比較多,大多時候我們可以通過百度或谷歌搜尋來解決。但更多的時候,我們需要找出背後的原因,也要掌握分析問題和解決問題的方法。 分析應用程式異常的問題,一般的出發點有兩個,第一從應用程式本

原創建立與保持時間裕量詳細分析

  筆者這段時間在找工作中發現,關於時序分析的基礎概念,時序關係表示式及時序違例計算幾乎是每個IC/FPGA崗位筆試面試的必考內容。就此,從建立保持時間裕量出發,夯實基礎。本文主要是對之前轉載部落格【時序約束學習筆記1】Vivado入門與提高--第12講 時序分析中的基本概念和術語 做一些總結和個人理解。  

原創My97DatePicker報錯 Uncaught TypeError: Cannot read property 'length' of null 分析

公司ui前端框架的日曆外掛使用的是第三方的My97DatePicker,在使用過程中,為了滿足日期格式化的要求 寫了下面兩種寫法 下面這樣展示 “年-月-日 時:分:秒” 是正常,且無報錯 但是換個格式,下面這個是"時分秒"的格式就有問題 報錯如下: VM3

原創驚!史上最全的select加鎖分析(Mysql)

引言 大家在面試中有沒遇到面試官問你下面六句Sql的區別呢 select * from table where id = ? select * from table where id < ? select * from table where id = ? lock in share mode sele

原創演算法分享(4)Cardinality Estimate 基數計數概率演算法

讀過《程式設計珠璣》(<Programming Pearls>)的人應該還對開篇的Case記憶猶新,大概的場景是: 作者的一位在電話公司工作的朋友想要統計一段時間內不同的電話號碼的個數,電話號碼的數量很大,當時的記憶體很小,所以不能把所有的電話號碼全部放到記憶體來去重統計,他的朋友很苦惱。 作

原創演算法分享(5)聚類演算法DBSCAN

簡介 DBSCAN:Density-based spatial clustering of applications with noise is a data clustering algorithm proposed by Martin Ester, Hans-Peter

原創MySQL CPU %sys高的案例分析(一)

【現象】 最近關注MySQL CPU告警的問題時,發現有一種場景,有一些伺服器最近都較頻繁的出現CPU告警,其中的現象是 SYS CPU佔比較高。 下面的截圖來源於“MySQL CPU報警”採集的檔案   【問題分析】 可以分析出這伺服器CPU升高的原因是由於表的高併發寫入引起。優化方案通常是通

原創案例分享(3)使用者行為分析--見證scala的強大

場景分析 使用者行為分析應用的場景很多,像線上網站訪問統計,線下客流分析(比如影象人臉識別、wifi探針等),比較核心的指標有幾個: PV | UV | SD | SC 指標說明: PV(Page View):網站瀏覽量或者商場門店的訪問量UV(Unique Visitor):獨立訪客數,即

原創案例分享(4)定位分析--見證scala的強大

一 場景分析 定位分析廣泛應用,比如室外基站定位,室內藍芽beacon定位,室內wifi探針定位等,實現方式是三點定位 Trilateration 理想情況   這種理想情況要求3個基站‘同時’採集‘準確’的距離資訊, 實際情況 3個基站採集資料的時間是分開的; 採集資料的距離

原創MySQL CPU %sys高的案例分析(二)

後面又做了補充測試,增加了每秒context switch的監控,以及SQL執行時各步驟消耗時間的監控。 【測試現象一】 啟用1000個併發執行緒的壓測程式,保持壓測程式持續執行,保持innodb_spin_wait_delay預設值不變 在10:17:14秒將innodb_spin_wait_de