R中具有NA和定性数据的无监督监督集群

时间:2018-01-31 23:38:03

标签: r cluster-analysis unsupervised-learning

我的篮球运动员数据如下所示:

 Player   Weight  Height  Shots   School 
  A         NA      70      23      AB
  B        130      62      10      AB
  C        180      66      NA      BC
  D        157      65      22      CD

我想做无监督和监督(基于高度)聚类。通过查看在线资源,我发现我可以使用kmeans进行无人监督,但我不知道如何处理NAs而不会丢失大量数据。我也不知道如何处理定量变量" school"。有没有办法解决无监督和监督聚类的问题?

2 个答案:

答案 0 :(得分:0)

K-means不能用于分类数据。一种解决方法是使用有关学校的数据,例如注册数量或本地SES数据。

R中的

kmeans()无法处理NA,因此您可以省略它们(并且应该检查NA在其他因素中是否相当均匀地分布)或者使用{{1来自cluster::clara()库。

你没有具体提到有关超学习的问题,所以我无法解决这个问题。

答案 1 :(得分:0)

您遇到的问题称为缺少数据。你必须在开始集群之前做出决定。在大多数情况下,具有遗漏数据的样本(此处为NA)被简单省略。在准备数据和清理数据挖掘的过程步骤时发生的事情。在R中,您可以使用以下代码执行此操作:

na.omit(yourdata) 

它省略了包含NA的记录或样本(在行中)。

但是如果要将它们包含在群集过程中,则可以使用整个群集中该要素的平均值作为缺失值选项。 在你的情况下,考虑重量:

  

对于玩家A,你可以为他的体重设置(130 + 180 + 157)/ 3。

另一个问题:看来你对监督和无监督学习的含义有点困惑。在有监督的学习中,您需要定义样本的类标签。然后你建立一个模型(分类器)并训练它以了解每类样本,训练后你可以使用模型来预测测试样本的标签,就像你给它一个具有这个值的玩家(W = 100,H) = 190,shot = 55)它会给你预测的类别标签。

对于无监督学习,您只需要对数据进行聚类以查找样本的组或聚类关系。为此,您不需要类标签,您应该定义要基于它们对样本进行聚类的功能,例如,您可以仅根据其权重对聚类播放器进行聚类,或者仅根据它们的高度对它们进行聚类。 ..或者您可以使用所有高度,重量和拍摄功能进行聚类。这可以在R中使用以下代码:

clus <- kmeans(na.omit(data$weight), 5) #for cluster them to 5 clusters based on weight
clus <- kmeans(na.omit(data[,1:3]),5) # to cluster them based on weight, height, shots into 5 clusters.

在这里考虑使用na.omit删除在其列中具有NA的行。

如果这有助于您,请告诉我。