
一篇文章透徹解讀聚類分析及案例實操(二)
4 SAS聚類分析案例
1 問題背景
考慮下面案例,一個棒球管理員希望根據隊員們的興趣相似性將他們進行分組。顯然,在該例子中,沒有響應變量。管理者希望能夠方便地識別出隊員的分組情況。同時,他也希望了解不同組之間隊員之間的差異性。
該案例的數據集是在SAMPSIO庫中的DMABASE數據集。下面是數據集中的主要的變量的描述信息:
在這個案例中,設置TEAM,POSITION,LEAGUE,DIVISION和SALARY變量的模型角色為rejected,設置SALARY變量的 模型角色為rejected是由于它的信息已經存儲在LOGSALAR中。在聚類分析和自組織映射圖中是不需要目標變量的。如果需要在一個目標變量上識別 分組,可以考慮預測建模技術或者定義一個分類目標。
2 聚類方法概述
聚類分析經常和有監督分類相混淆,有監督分類是為定義的分類響應變量預測分組或者類別關系。而聚類分析,從另一方面考慮,它是一種無監督分類技術。 它能夠在所有輸入變量的基礎上識別出數據集中的分組和類別信息。這些組、簇,賦予不同的數字。然而,聚類數目不能用來評價類別之間的近似關系。自組織映射 圖嘗試創建聚類,并且在一個圖上用圖形化的方式繪制出聚類信息,在此處我們并沒有考慮。
1) 建立初始數據流
2) 設置輸入數據源結點
打開輸入數據源結點
從SAMPSIO庫中選擇DMABASE數據集
設置NAME變量的模型角色為id,TEAM,POSIOTION,LEAGUE,DIVISION和SALARY變量的模型角色為rejected
探索變量的分布和描述性統計信息
選擇區間變量選項卡,可以觀察到只有LOGSALAR和SALARY變量有缺失值。選擇類別變量選項卡,可以觀察到沒有缺失值。在本例中,沒有涉及到任何類別變量。
關閉輸入數據源結點,并保存信息。
3) 設置替代結點
雖然并不是總是要處理缺失值,但是有時候缺失值的數量會影響聚類結點產生的聚類解決方案。為了產生初始聚類,聚類結點往往需要一些完整的觀測值。當缺失值太多的時候,需要用替代結點來處理。雖然這并不是必須的,但是在本例中使用到了。
4) 設置聚類結點
打開聚類結點,激活變量選項卡。K-means聚類對輸入數據是敏感的。一般情況下,考慮對數據集進行標準化處理。
在變量選項卡,選擇標準偏差單選框
選擇聚類選項卡
觀察到默認選擇聚類數目的方法是自動的
關閉聚類結點
5) 聚類結果
在聚類結點處運行流程圖,查看聚類結果。
6) 限定聚類數目
打開聚類結點
選擇聚類選項卡
在聚類數目選擇部分,點擊選擇標準按鈕
輸入最大聚類數目為10
點擊ok,關閉聚類結點
7)結果解釋
我們可以定義每個類別的信息,結合背景識別每個類型的特征。選擇箭頭按鈕,
選擇三維聚類圖的某一類別,
在工具欄選擇刷新輸入均值圖圖標,
點擊該圖標,可以查看該類別的規范化均值圖
同理,可以根據該方法對其他類別進行解釋。
8)運用Insight結點
Insight結點可以用來比較不同屬性之間的異常。打開insight結點,選擇整個數據集,關閉結點。
從insight結點處運行。
變量_SEGMNT_標識類別,distance標識觀測值到所在類別中心的距離。運用insight窗口的analyze工具評估和比較聚類結果。
首先把_SEGMNT_的度量方式從interval轉換成nominal。
以R基礎包自帶的鳶尾花(Iris)數據進行聚類分析。分析代碼如下:
###### 代碼清單 #######
data(iris); attach(iris)
iris.hc <- hclust( dist(iris[,1:4]))
# plot( iris.hc, hang = -1)
plclust( iris.hc, labels = FALSE, hang = -1)
re <- rect.hclust(iris.hc, k = 3)
iris.id <- cutree(iris.hc, 3)
table(iris.id, Species)
###### 運行結果 #######
> table(iris.id,Species)
Species
iris.id setosa versicolor virginica
1 50 0 0
2 0 23 49
3 0 27 1
聚類分析生成的圖形如下:
結果表明,函數cuttree()將數據iris分類結果iris.hc編為三組分別以1,2, 3表示,保存在iris.id中。將iris.id與iris中Species作比較發現:1應該是setosa類,2應該是virginica類(因為 virginica的個數明顯多于versicolor),3是versicolor。
仍以R基礎包自帶的鳶尾花(Iris)數據進行K-均值聚類分析,分析代碼如下:
###### 代碼清單 #######
library(fpc)
data(iris)
df<-iris[,c(1:4)]
set.seed(252964) # 設置隨機值,為了得到一致結果。
(kmeans <- kmeans(na.omit(df), 3)) # 顯示K-均值聚類結果
plotcluster(na.omit(df), kmeans$cluster) # 生成聚類圖
生成的圖如下:
Python篇
Python運行條件:
1.Python運行環境與編輯環境;
2.Matplotlib.pyplot圖形庫,可用于快速繪制2D圖表,與matlab中的plot命令類似,而且用法也基本相同。
# coding=utf-8
##
作者:Chan
程序:kmeans算法
##
import matplotlib.pyplot as plt
import math
import numpy
import random
#dotOringalNum為各個分類最初的大小
dotOringalNum=100
#dotAddNum最后測試點的數目
dotAddNum=1000
fig = plt.figure()
ax = fig.add_subplot(111)
sets=
colors=[‘b’,’g’,’r’,’y’]
#第一個分類,顏色為藍色,在左下角
a=
txx=0.0
tyy=0.0
for i in range(0,dotOringalNum):
tx=float(random.randint(1000,3000))/100
ty=float(random.randint(1000,3000))/100
a.append([tx,ty])
txx+=tx
tyy+=ty
#ax.plot([tx],[ty],color=colors[0],linestyle=”,marker=’.’)
#a的第一個元素為a的各個元素xy值之合
a.insert(0,[txx,tyy])
sets.append(a)
#第二個分類,顏色為綠色,在右上角
b=
txx=0.0
tyy=0.0
for i in range(0,dotOringalNum):
tx=float(random.randint(4000,6000))/100
ty=float(random.randint(4000,6000))/100
b.append([tx,ty])
txx+=tx
tyy+=ty
#ax.plot([tx],[ty],color=colors[1],linestyle=”,marker=’.’)
b.insert(0,[txx,tyy])
sets.append(b)
#第三個分類,顏色為紅色,在左上角
c=
txx=0.0
tyy=0.0
for i in range(0,dotOringalNum):
tx=float(random.randint(1000,3000))/100
ty=float(random.randint(4000,6000))/100
c.append([tx,ty])
txx+=tx
tyy+=ty
#ax.plot([tx],[ty],color=colors[2],linestyle=”,marker=’.’)
c.insert(0,[txx,tyy])
sets.append(c)
#第四個分類,顏色為黃色,在右下角
d=
txx=0
tyy=0
for i in range(0,dotOringalNum):
tx=float(random.randint(4000,6000))/100
ty=float(random.randint(1000,3000))/100
d.append([tx,ty])
txx+=tx
tyy+=ty
#ax.plot([tx],[ty],color=colors[3],linestyle=”,marker=’.’)
d.insert(0,[txx,tyy])
sets.append(d)
#測試
for i in range(0,dotAddNum):
tx=float(random.randint(0,7000))/100
ty=float(random.randint(0,7000))/100
dist=9000.0
setBelong=0
for j in range(0,4):
length=len(sets[j])-1
centX=sets[j][0][0]/length
centY=sets[j][0][1]/length
if (centX-tx)*(centX-tx)+(centY-ty)*(centY-ty)
運行效果:
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25