K-means聚類演算法

K-means聚類演算法

來自專欄袁帥:互聯網數據分析運營

聚類應用場景

通過客戶消費行為測量,評判客戶價值,對客戶進行細分,找到有價值的客戶和需要關注的客戶。

合理對菜品進行分析,以便區分哪些菜品暢銷、毛利高,哪些菜品滯銷、毛利低。

  1. 聚類演算法簡介

聚類是一種非監督的學習演算法。聚類根據數據自身的距離(相似度)將它們劃分為若干組,劃分的原則是組內樣本最小化而組間距離最大化,如圖所示。

3、常見聚類演算法

4、演算法過程

(1)從N個樣本數據中隨機選取K個對象作為初始的聚類中心;

(2)分別計算每個樣本到各個聚類中心的距離,將對象分配到距離最近的聚類中;

(3)所有對象分配完成後,重新計算K個聚類的中心;

(4)與前一次計算得到的K個聚類中心比較,如果聚類中心發生變化,轉第(2)步,否則轉第(4)步;

(5)當質心不發生變化時停止並輸出聚類結果。

5、matlab中的Kmeans函數

[IDX,C,sumd,D]=kmeans(x,k,param1,val1,param2,val2,…)

輸出:

IDX:每個樣本數據的類別

C:k個類別的中心向量

Sumd:每個類別樣本到中心向量的距離和,1*k維向量

D:每個樣本到中心的距離,n*k維矩陣

輸入:

X—聚類數據,N*P的矩陣

K—聚類數,整數

6、實戰演練

根據餐飲客戶的消費行為數據,將客戶分類成不同的客戶群,並評價這些客戶的價值。

設定聚類個數為k=3,最大迭代次數為』MaxIter』=500,距離選歐式距離』distance』=sqEuclidean

K-means聚類演算法代碼

%% 使用K-Means演算法聚類消費行為特徵數據

clear ;clc;

% 參數初始化

inputfile = ../data/consumption_data.xls; % 銷量及其他屬性數據

k = 3; % 聚類的類別

iteration =500 ; % 聚類最大循環次數

distance = sqEuclidean; % 距離函數

%% 讀取數據

[num,txt]=xlsread(inputfile);

data = num(:,2:end);

%% 數據標準化

data = zscore(data);

%% 調用kmeans演算法

opts = statset(MaxIter,iteration);

[IDX,C,sumd,D] = kmeans(data,k,distance,distance,Options,opts);

%% 列印結果

for i=1:k

disp([第 num2str(i) 組聚類中心為:]);

disp(C(i,:));

end

T = tabulate(IDX) %%統計數組中相同元素的個數,第一列是各種不同取值;第二列是各種不同取值對應的個數;第三列是各種不同取值對應的比例

disp(K-Means聚類演算法完成!);

結果展示

實驗數據與代碼:K-means演算法

鏈接:pan.baidu.com/s/1H81dqo 密碼:38vi


推薦閱讀:

基於 XGBoost 對 Santander 銀行用戶購買行為進行預測
實戰:數據進入Maxcompute的N種方式
每天一道面試題:簡述不完備數據下學習貝葉斯網路結構
數據挖掘軟體WEKA(1),修改數據類型

TAG:聚類演算法 | 機器學習 | 數據挖掘 |