乐趣区

关于数据挖掘:R语言中的SOM自组织映射神经网络对NBA球员聚类分析附代码数据

原文链接:http://tecdat.cn/?p=19077

最近咱们被客户要求撰写对于 SOM 的钻研报告,包含一些图形和统计输入。

自组织映射(SOM)是一种工具,通过生成二维示意来可视化高维数据中的模式,在高维构造中显示有意义的模式

导入

通过以下形式应用给定的数据(或数据样本)对 SOM 进行“训练”:

  • 定义了网格的大小。
  • 网格中的每个单元都在数据空间中调配了一个初始化向量。
  • 例如,如果要创立 22 维空间的地图,则会为每个网格单元调配一个 22 维向量。
  • 数据被重复输出到模型中进行训练。每次输出训练向量时,都会执行以下过程:
  • 辨认具备最靠近训练向量的代表向量的网格单元。
  • 随着训练向量的屡次输出,收敛的参数使调整变得越来越小,从而使地图稳固。

相干视频

**

拓端

,赞 8

**

拓端

,赞 12

该算法赋予 SOM 的要害特色:数据空间中靠近的点在 SOM 中更靠近。因而,SOM 可能是示意数据中的空间聚类的好工具。

相干视频

**

拓端

,赞 28

Kohonen 映射类型

上面的示例将应用 2015/16 NBA 赛季的球员统计数据。咱们将查看每 36 分钟更新一次的球员统计信息。这些数据可从 http://www.basketball-referen… 取得。咱们曾经清理了数据。

NBA <- read.csv("NBA_cleaned.csv", 

    sep = ",", header = T, check.names = FALSE)

根本 SOM

在创立 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")

请留神,咱们标准化了训练数据,并定义了网格大小。规范 SOM 图可为网格单元的代表矢量创立这些饼图示意,其中半径对应于特定维度上的大小。


点击题目查阅往期内容

R 语言 k -means 聚类、档次聚类、主成分(PCA)降维及可视化剖析鸢尾花 iris 数据集

左右滑动查看更多

01

02

03

04

热图 SOM

咱们能够通过将每个球员调配到具备最靠近该球员状态的代表向量来辨认地图。“计数”类型的 SOM 依据球员数量创立了一个热图。

# 色带



colors <- function(n, alpha = 1) {rev(heat.colors(n, alpha))

}

绘图点

您能够应用“映射”类型的 SOM 将球员绘制为网格上的点。咱们与惯例 SOM 进行可视化比拟。

每个地图单元格的代表性矢量显示在右侧。左侧是依据其状态与这些代表向量的靠近水平绘制的球员图表。

环形 SOM

下一个示例是一种更改几何形态的办法。在为上述示例训练 SOM 时,咱们应用了矩形网格。因为边缘(尤其是拐角处)的单元比外部单元具备更少的街坊,因而偏向于将更多的极其值推到边缘。

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",单元格将依据与它们最近的街坊的间隔着色,这使咱们能够直观地看到高维空间中不同因素之间的间隔。

plot(SOM2, type = "dist.neighbours")

有监督 SOM

有监督的 SOM 使咱们能够进行分类。到目前为止,咱们仅将三维数据映射到二维。当咱们解决更高维度的数据时,SOM 的实用性变得更加显著,因而让咱们应用扩大的球员统计信息列表来做这个受监督的示例:

咱们创立有监督的 SOM,并依据球员在球场上的地位对其进行分类。咱们将数据随机分为训练集和测试集。

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"))

请留神,当咱们从新标准化测试数据时,咱们须要依据训练数据的形式对其进行标准化。

您能够在训练算法中对训练变量(NBA.training)与预测变量(NBA$Pos)进行加权。当初让咱们查看预测的准确性:

##                 

##                  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 参数为权重掂量球员统计数据。

应用type = "codes" 咱们进行绘制,能够 失去规范的可视化球员状态(Codes X)和球员地位预测(Codes Y)。

add.cluster.boundaries(NBA.SOM4, NBA.SOM4.hc)

该视图使咱们能够将球员统计数据与地位预测进行比拟。

可视化预测:自定义 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(自组织映射神经网络)对 NBA 球员聚类分析》。

点击题目查阅往期内容

Python 用 RNN 神经网络:LSTM、GRU、回归和 ARIMA 对 COVID19 新冠疫情人数工夫序列预测 RNN 循环神经网络、LSTM 长短期记忆网络实现工夫序列长期利率预测

联合新冠疫情 COVID-19 股票价格预测:ARIMA,KNN 和神经网络工夫序列剖析
深度学习:Keras 应用神经网络进行简略文本分类剖析新闻组数据
用 PyTorch 机器学习神经网络分类预测银行客户散失模型
PYTHON 用 LSTM 长短期记忆神经网络的参数优化办法预测工夫序列洗发水销售数据
Python 用 Keras 神经网络序列模型回归拟合预测、准确度检查和后果可视化
Python 用 LSTM 长短期记忆神经网络对不稳固降雨量工夫序列进行预测剖析
R 语言中的神经网络预测工夫序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R 语言深度学习:用 keras 神经网络回归模型预测工夫序列数据
Matlab 用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R 语言 KERAS 深度学习 CNN 卷积神经网络分类辨认手写数字图像数据(MNIST)
MATLAB 中用 BP 神经网络预测人体脂肪百分比数据
Python 中用 PyTorch 机器学习神经网络分类预测银行客户散失模型
R 语言实现 CNN(卷积神经网络)模型进行回归数据分析
SAS 应用鸢尾花 (iris) 数据集训练人工神经网络 (ANN) 模型
【视频】R 语言实现 CNN(卷积神经网络)模型进行回归数据分析
Python 应用神经网络进行简略文本分类
R 语言用神经网络改良 Nelson-Siegel 模型拟合收益率曲线剖析
R 语言基于递归神经网络 RNN 的温度工夫序列预测
R 语言神经网络模型预测车辆数量工夫序列
R 语言中的 BP 神经网络模型剖析学生问题
matlab 应用长短期记忆(LSTM)神经网络对序列数据进行分类
R 语言实现拟合神经网络预测和后果可视化
用 R 语言实现神经网络预测股票实例
应用 PYTHON 中 KERAS 的 LSTM 递归神经网络进行工夫序列预测
python 用于 NLP 的 seq2seq 模型实例: 用 Keras 实现神经网络机器翻译
用于 NLP 的 Python:应用 Keras 的多标签文本 LSTM 神经网络分类

对用电负荷工夫序列数据进行 K -medoids 聚类建模和 GAM 回归

R 语言无限混合模型(FMM,finite mixture model)EM 算法聚类分析间歇泉喷发工夫
R 语言 k -Shape 工夫序列聚类办法对股票价格工夫序列聚类
Python 主题建模 LDA 模型、t-SNE 降维聚类、词云可视化文本开掘新闻组数据集
R 语言用关联规定和聚类模型开掘处方数据摸索药物配伍中的法则
K-means 和档次聚类分析癌细胞系微阵列数据和树状图可视化比拟

KMEANS 均值聚类和档次聚类:亚洲国家地区生存幸福品质异同可视化剖析和抉择最佳聚类数
PYTHON 实现谱聚类算法和扭转聚类簇数后果可视化比拟
无限混合模型聚类 FMM、狭义线性回归模型 GLM 混合利用剖析威士忌市场和钻研专利申请数据
R 语言多维数据档次聚类散点图矩阵、配对图、平行坐标图、树状图可视化城市宏观经济指标数据
r 语言无限正态混合模型 EM 算法的分层聚类、分类和密度估计及可视化
Python Monte Carlo K-Means 聚类实战钻研
R 语言 k -Shape 工夫序列聚类办法对股票价格工夫序列聚类
R 语言对用电负荷工夫序列数据进行 K -medoids 聚类建模和 GAM 回归
R 语言谱聚类、K-MEANS 聚类分析非线性环状数据比拟
R 语言实现 k -means 聚类优化的分层抽样 (Stratified Sampling) 剖析各市镇的人口
R 语言聚类有效性:确定最优聚类数剖析 IRIS 鸢尾花数据和可视化 Python、R 对小说进行文本开掘和档次聚类可视化剖析案例
R 语言 k -means 聚类、档次聚类、主成分(PCA)降维及可视化剖析鸢尾花 iris 数据集
R 语言无限混合模型 (FMM,finite mixture model)EM 算法聚类分析间歇泉喷发工夫
R 语言用温度对城市档次聚类、kmean 聚类、主成分剖析和 Voronoi 图可视化
R 语言 k -Shape 工夫序列聚类办法对股票价格工夫序列聚类
R 语言中的 SOM(自组织映射神经网络) 对 NBA 球员聚类分析
R 语言简单网络分析:聚类(社区检测)和可视化
R 语言中的划分聚类模型
基于模型的聚类和 R 语言中的高斯混合模型
r 语言聚类分析:k-means 和档次聚类
SAS 用 K -Means 聚类最优 k 值的选取和剖析
用 R 语言进行网站评论文本开掘聚类
基于 LDA 主题模型聚类的商品评论文本开掘
R 语言鸢尾花 iris 数据集的档次聚类分析
R 语言对用电负荷工夫序列数据进行 K -medoids 聚类建模和 GAM 回归
R 语言聚类算法的利用实例

退出移动版