聚類算法是沒用因變量的。
聚類算法有層次聚類、基于劃分的聚類臣缀、兩步聚類法坝橡、基于密度的聚類。
聚類方法的邏輯
客戶細(xì)分是將全體客戶劃分為多個(gè)分組并刻畫特征的過(guò)程精置,使得組內(nèi)客戶高度相似计寇,組間客戶差異明顯。
基本邏輯:
步驟1:從N個(gè)觀測(cè)和K各屬性數(shù)據(jù)開始脂倦;
步驟2:計(jì)算N各觀測(cè)兩者之間的距離番宁;
步驟3:將相離最近的觀測(cè)聚為一類,距離遠(yuǎn)的分為不同類赖阻。最終達(dá)到組間的距離最大化蝶押,組間的距離最大化。
特別注意:
聚類分析前要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化(scale)火欧,然后做主成分分析(降維)棋电。
K-means聚類示例
- 得知當(dāng)前文件位置
getwd()
- 更改文件位置
setwd("E:/R/……") - 這里使用河流化學(xué)成份對(duì)有害藻類影響的數(shù)據(jù)集
- 數(shù)據(jù)屬性說(shuō)明:
- season 季節(jié)
- size 河流大小
- speed 河流速度
- mxPH 最大PH值
- mnO2 最小含氧量
- Cl 平均氯化物含量
- NO3 平均硝酸鹽含量
- NH4 平均氨含量
- oPO4 平均正磷酸鹽含量
- PO4 平均磷酸鹽含量
- Chla 平均葉綠素含量
- algae 有害藻的頻率數(shù)目
- 讀入數(shù)據(jù)
vdata=read.csv("algpre.csv") - 加載包,查看數(shù)據(jù)缺失情況
library(ggplot2)
library(dfexplore)
dfplot(vdata)
summary(vdata) - 層次聚類苇侵、基于劃分聚類(Kmeans)赶盔、基于密度聚類都只可以用于連續(xù)變量,
- 使用mxPH,mnO2,Cl,NO3,NH4,oPO4,PO4,Chla這些屬性進(jìn)行聚類。
Vdata2<-vdata[,c("mxPH","mnO2","Cl","NO3","NH4","oPO4","PO4","Chla")] - 進(jìn)行kmeans聚類前榆浓,需要進(jìn)行標(biāo)準(zhǔn)化處理于未,這里使用scale函數(shù)進(jìn)行標(biāo)準(zhǔn)化
data1=scale(Vdata2) - 加載fpc包,使用pamk函數(shù)陡鹃,確定聚類個(gè)數(shù)
library(fpc)
pamk.result=pamk(data1)
pamk.result$nc - 使用stats包中的kmeans函數(shù),iter.max最大迭代次數(shù)烘浦,可寫可不寫,但是數(shù)據(jù)量很大的時(shí)候萍鲸,一定要寫防止死機(jī)谎倔。
kmd=kmeans(data1,centers = pamk.result$nc,iter.max = 100) - 輸出聚類結(jié)果
type=kmd$cluster - 查看聚類結(jié)果分布
table(type) - 聚類中心結(jié)果輸出
centerver=kmd$centers
centerver - 將聚類中心結(jié)果寫入本地excel中,用excel雷達(dá)圖來(lái)描述聚類因子特征,找出每類的優(yōu)勢(shì)特征和劣勢(shì)特征猿推。
write.csv(centerver,'E:/R/……/centerver.csv') - 把聚類結(jié)果添加到原始數(shù)據(jù)中
data2<-cbind(vdata,type=kmd$cluster)
下篇將補(bǔ)上“主成分分析和因子分析”的實(shí)際操作片习。