R語言中的SOM(自組織映射神經(jīng)網(wǎng)絡)對NBA球員聚類分析|附代碼數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=19077
自組織映射?(SOM)是一種工具,通過生成二維表示來可視化高維數(shù)據(jù)中的模式,在高維結構中顯示有意義的模式?(?點擊文末“閱讀原文”獲取完整代碼數(shù)據(jù)********?)。
導入
通過以下方式使用給定的數(shù)據(jù)(或數(shù)據(jù)樣本)對SOM進行“訓練”:
定義了網(wǎng)格的大小。
網(wǎng)格中的每個單元都在數(shù)據(jù)空間中分配了一個初始化向量。
例如,如果要創(chuàng)建22維空間的地圖,則會為每個網(wǎng)格單元分配一個22維向量。
數(shù)據(jù)被反復輸入到模型中進行訓練。每次輸入訓練向量時,都會執(zhí)行以下過程:
識別具有最接近訓練向量的代表向量的網(wǎng)格單元。
隨著訓練向量的多次輸入,收斂的參數(shù)使調整變得越來越小,從而使地圖穩(wěn)定。
該算法賦予SOM的關鍵特征:數(shù)據(jù)空間中接近的點在SOM中更接近。因此,SOM可能是表示數(shù)據(jù)中的空間聚類的好工具。
相關視頻
**
拓端
,贊27
Kohonen映射類型
下面的示例將使用2015/16 NBA賽季的球員統(tǒng)計數(shù)據(jù)。我們將查看每36分鐘更新一次的球員統(tǒng)計信息。這些數(shù)據(jù)可從?http://www.basketball-reference.com/獲得。我們已經(jīng)清理了數(shù)據(jù)。
NBA?<-?read.csv("NBA_cleaned.csv",?
????sep?=?",",?header?=?T,?check.names?=?FALSE)
基本SOM
在創(chuàng)建SOM之前,我們需要選擇要在其中搜索模式的變量。
colnames(NBA)
##??[1]?""???????"Player"?"Pos"????"Age"????"Tm"?????"G"??????"GS"????
##??[8]?"MP"?????"FG"?????"FGA"????"FG%"????"3P"?????"3PA"????"3P%"???
##?[15]?"2P"?????"2PA"????"2P%"????"FT"?????"FTA"????"FT%"????"ORB"???
##?[22]?"DRB"????"TRB"????"AST"????"STL"????"BLK"????"TOV"????"PF"????
##?[29]?"PTS"
我們從簡單示例開始:
som(scale(NBA[res1],?grid?=?somgrid(6,?4,?"rectangular")

請注意,我們標準化了訓練數(shù)據(jù),并定義了網(wǎng)格大小。標準SOM圖可為網(wǎng)格單元的代表矢量創(chuàng)建這些餅圖表示,其中半徑對應于特定維度上的大小。
點擊標題查閱往期內容

R語言k-means聚類、層次聚類、主成分(PCA)降維及可視化分析鳶尾花iris數(shù)據(jù)集

左右滑動查看更多

01

02

03

04

熱圖SOM
我們可以通過將每個球員分配到具有最接近該球員狀態(tài)的代表向量來識別地圖?!坝嫈?shù)”類型的SOM根據(jù)球員數(shù)量創(chuàng)建了一個熱圖。
#?色帶
colors?<-?function(n,?alpha?=?1)?{
????rev(heat.colors(n,?alpha))
}

繪圖點
您可以使用“映射”類型的SOM將球員繪制為網(wǎng)格上的點。我們與常規(guī)SOM進行可視化比較。

每個地圖單元格的代表性矢量顯示在右側。左側是根據(jù)其狀態(tài)與這些代表向量的接近程度繪制的球員圖表。
環(huán)形SOM
下一個示例是一種更改幾何形狀的方法。在為上述示例訓練SOM時,我們使用了矩形網(wǎng)格。由于邊緣(尤其是拐角處)的單元比內部單元具有更少的鄰居,因此傾向于將更多的極端值推到邊緣。
par(mfrow?=?c(1,?2))plot(NBA.SOM2,?type?=?"mapping",?pchs?=?20,?main?=?"Mapping?Type?SOM")plot(NBA.SOM2,?main?=?"Default?SOM?Plot")

映射距離
當用繪制時?type = "dist.neighbours"
,單元格將根據(jù)與它們最近的鄰居的距離著色,這使我們可以直觀地看到高維空間中不同要素之間的距離。
plot(SOM2,?type?=?"dist.neighbours")

有監(jiān)督SOM
有監(jiān)督的SOM使我們可以進行分類。到目前為止,我們僅將三維數(shù)據(jù)映射到二維。當我們處理更高維度的數(shù)據(jù)時,SOM的實用性變得更加明顯,因此讓我們使用擴展的球員統(tǒng)計信息列表來做這個受監(jiān)督的示例:
我們創(chuàng)建有監(jiān)督的SOM,并根據(jù)球員在球場上的位置對其進行分類。我們將數(shù)據(jù)隨機分為訓練集和測試集。
indices?<-?sample(nrow(NBA),?200)
training?<-?scale(NBA[indices,?NBA.measures2])
testing?<-?scale(NBA[-indices,?NBA.measures2],?center?=?attr(training,?
????"scaled:center"),?scale?=?attr(training,?"scaled:scale"))
請注意,當我們重新標準化測試數(shù)據(jù)時,我們需要根據(jù)訓練數(shù)據(jù)的方式對其進行標準化。
您可以在訓練算法中對訓練變量(NBA.training
)與預測變量(NBA$Pos
)進行加權。現(xiàn)在讓我們檢查預測的準確性:
##?????????????????##??????????????????Center?Point?Guard?Power?Forward?Shooting?Guard##???Center?????????????16???????????0????????????26??????????????1##???Point?Guard?????????0??????????49?????????????0?????????????12##???Power?Forward??????10???????????1????????????29??????????????5##???Shooting?Guard??????0???????????8?????????????4?????????????38##???Small?Forward???????0???????????0????????????15??????????????9##?????????????????##??????????????????Small?Forward##???Center?????????????????????4##???Point?Guard???????????????11##???Power?Forward??????????????8##???Shooting?Guard????????????19##???Small?Forward?????????????38
可視化預測:
這次,我們使用xweight
?參數(shù)為權重衡量球員統(tǒng)計數(shù)據(jù)?。
使用type = "codes"
?我們進行繪制,可以?得到標準的可視化球員狀態(tài)(Codes X
)和球員位置預測(Codes Y
)。
add.cluster.boundaries(NBA.SOM4,?NBA.SOM4.hc)

該視圖使我們可以將球員統(tǒng)計數(shù)據(jù)與位置預測進行比較。
可視化預測:自定義SOM
在最后一個示例中,我們將對該type = mapping
?圖進行一些自定義,?以便我們可以同時表示實際球員位置和SOM的預測位置。我們將從可視化開始。

背景顏色繪制的球員點的背景代表其真實位置。
bg.pallet?<-?c("red",?"blue",?"yellow",?"purple",?"green")
#?為所有單元格制作僅背景顏色的矢量
base.color.vector?<-?bg.pallet[match(position.predictions,?levels(NBA$Pos))]
#?設置alpha以最大的預測置信度標準化max.conf?<-?apply(NBA.SOM4$codes$Y,?1,?max)

點擊文末?“閱讀原文”
獲取全文完整資料。
本文選自《R語言中的SOM(自組織映射神經(jīng)網(wǎng)絡)對NBA球員聚類分析》。
點擊標題查閱往期內容
Python用RNN神經(jīng)網(wǎng)絡:LSTM、GRU、回歸和ARIMA對COVID19新冠疫情人數(shù)時間序列預測RNN循環(huán)神經(jīng)網(wǎng)絡 、LSTM長短期記憶網(wǎng)絡實現(xiàn)時間序列長期利率預測
結合新冠疫情COVID-19股票價格預測:ARIMA,KNN和神經(jīng)網(wǎng)絡時間序列分析
深度學習:Keras使用神經(jīng)網(wǎng)絡進行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機器學習神經(jīng)網(wǎng)絡分類預測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡的參數(shù)優(yōu)化方法預測時間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡序列模型回歸擬合預測、準確度檢查和結果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡對不穩(wěn)定降雨量時間序列進行預測分析
R語言中的神經(jīng)網(wǎng)絡預測時間序列:多層感知器(MLP)和極限學習機(ELM)數(shù)據(jù)分析報告
R語言深度學習:用keras神經(jīng)網(wǎng)絡回歸模型預測時間序列數(shù)據(jù)
Matlab用深度學習長短期記憶(LSTM)神經(jīng)網(wǎng)絡對文本數(shù)據(jù)進行分類
R語言KERAS深度學習CNN卷積神經(jīng)網(wǎng)絡分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡預測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機器學習神經(jīng)網(wǎng)絡分類預測銀行客戶流失模型
R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡)模型進行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓練人工神經(jīng)網(wǎng)絡(ANN)模型
【視頻】R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡)模型進行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡進行簡單文本分類
R語言用神經(jīng)網(wǎng)絡改進Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡RNN的溫度時間序列預測
R語言神經(jīng)網(wǎng)絡模型預測車輛數(shù)量時間序列
R語言中的BP神經(jīng)網(wǎng)絡模型分析學生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡對序列數(shù)據(jù)進行分類
R語言實現(xiàn)擬合神經(jīng)網(wǎng)絡預測和結果可視化
用R語言實現(xiàn)神經(jīng)網(wǎng)絡預測股票實例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡進行時間序列預測
python用于NLP的seq2seq模型實例:用Keras實現(xiàn)神經(jīng)網(wǎng)絡機器翻譯
用于NLP的Python:使用Keras的多標簽文本LSTM神經(jīng)網(wǎng)絡分類
對用電負荷時間序列數(shù)據(jù)進行K-medoids聚類建模和GAM回歸
R語言有限混合模型(FMM,finite mixture model)EM算法聚類分析間歇泉噴發(fā)時間
R語言k-Shape時間序列聚類方法對股票價格時間序列聚類
Python主題建模LDA模型、t-SNE 降維聚類、詞云可視化文本挖掘新聞組數(shù)據(jù)集
R語言用關聯(lián)規(guī)則和聚類模型挖掘處方數(shù)據(jù)探索藥物配伍中的規(guī)律
K-means和層次聚類分析癌細胞系微陣列數(shù)據(jù)和樹狀圖可視化比較
KMEANS均值聚類和層次聚類:亞洲國家地區(qū)生活幸福質量異同可視化分析和選擇最佳聚類數(shù)
PYTHON實現(xiàn)譜聚類算法和改變聚類簇數(shù)結果可視化比較
有限混合模型聚類FMM、廣義線性回歸模型GLM混合應用分析威士忌市場和研究專利申請數(shù)據(jù)
R語言多維數(shù)據(jù)層次聚類散點圖矩陣、配對圖、平行坐標圖、樹狀圖可視化城市宏觀經(jīng)濟指標數(shù)據(jù)
r語言有限正態(tài)混合模型EM算法的分層聚類、分類和密度估計及可視化
Python Monte Carlo K-Means聚類實戰(zhàn)研究
R語言k-Shape時間序列聚類方法對股票價格時間序列聚類
R語言對用電負荷時間序列數(shù)據(jù)進行K-medoids聚類建模和GAM回歸
R語言譜聚類、K-MEANS聚類分析非線性環(huán)狀數(shù)據(jù)比較
R語言實現(xiàn)k-means聚類優(yōu)化的分層抽樣(Stratified Sampling)分析各市鎮(zhèn)的人口
R語言聚類有效性:確定最優(yōu)聚類數(shù)分析IRIS鳶尾花數(shù)據(jù)和可視化Python、R對小說進行文本挖掘和層次聚類可視化分析案例
R語言k-means聚類、層次聚類、主成分(PCA)降維及可視化分析鳶尾花iris數(shù)據(jù)集
R語言有限混合模型(FMM,finite mixture model)EM算法聚類分析間歇泉噴發(fā)時間
R語言用溫度對城市層次聚類、kmean聚類、主成分分析和Voronoi圖可視化
R語言k-Shape時間序列聚類方法對股票價格時間序列聚類
R語言中的SOM(自組織映射神經(jīng)網(wǎng)絡)對NBA球員聚類分析
R語言復雜網(wǎng)絡分析:聚類(社區(qū)檢測)和可視化
R語言中的劃分聚類模型
基于模型的聚類和R語言中的高斯混合模型
r語言聚類分析:k-means和層次聚類
SAS用K-Means 聚類最優(yōu)k值的選取和分析
用R語言進行網(wǎng)站評論文本挖掘聚類
基于LDA主題模型聚類的商品評論文本挖掘
R語言鳶尾花iris數(shù)據(jù)集的層次聚類分析
R語言對用電負荷時間序列數(shù)據(jù)進行K-medoids聚類建模和GAM回歸
R語言聚類算法的應用實例