【问题标题】:K-means Clustering with R使用 R 进行 K 均值聚类
【发布时间】:2017-12-09 01:00:24
【问题描述】:

我正在尝试使用 R 中的 K-means 聚类对一些数据进行聚类。要聚类的数据是来自推文样本的一组特定特征。推文被标记为 xy。数据示例如下所示,用户名和 ID 被删除,这些字段不用于聚类。

总共有 24.6k 数据项,其中大约 17k 标记为 y,其余标记为 x。集群后我期望的是两个集群,每个集群中的数据量大致对应。但是,聚类似乎将所有数据的最大部分分配给同一个聚类,而只有几千个项目分配给第二个聚类。聚类结果如下:

如您所见,几乎所有的数据都分配给集群 2。

我不确定我的问题是什么,它可能是我的数据结构或我的 R 实现的问题。

我尝试了各种不同的聚类和绘图方法,包括ggplot2This question 有一些用处,但我的结果还是一样。

我的 R 实现如下。注意归一化的方法取自this answer。谁能指出我的正确方向,为什么我的数据被分配到同一个集群,即使我有两个不同的标签?

Clustering.R

#Imports
library(jsonlite)
library(tm)
library(fpc)

#Includes
source("./Clustering_Functions.R")

#Program 
rawData <- getInput()
clusterData <- filterData(rawData)
clusterData <- scaleData(clusterData)
aCluster <- performClustering(clusterData)
table(rawData$stance, aCluster$cluster)
plotOutput(clusterData, aCluster)

函数.R

getInput <- function() {
  json_file <- "path/file.json"

  #Set data to dataframe
  frame <- fromJSON(json_file)
  return(frame)
}

#Filter the raw data, remove columns not for clustering
filterData <- function(frame) {
  kcFrame <- frame[c( -3, -4, -9)]
  return (kcFrame)
}

#Scale the columns to uniform data, values 0-100
scaleData <- function(kcFrame) {
  doScale <- function(x) x* 100/max(x, na.rm = TRUE)
  kcFrame <- data.frame(lapply(kcFrame, doScale))
  return (kcFrame)
}

#Apply K-means clustering
performClustering <- function(kcFrame) {
  kc <- kmeans(kcFrame, centers = 2)
  return (kc)
}

#Graph the clusters
plotOutput <- function(kcFrame, kc) {
  plotcluster(kcFrame, kc$cluster)
}

编辑:我怀疑问题出在我的数据上;标签 xy 在特征方面没有足够的区别。

【问题讨论】:

    标签: r k-means


    【解决方案1】:

    您的实现对我来说看起来不错。请考虑,这很可能是您的数据结构。这种行为并不少见。通常情况下,您拥有多数和少数类别/集群 - 想想它,例如作为一个源自“健康”分布的集群,而少数源自“不健康”分布(例如考虑疾病)。

    还要考虑,它是一种无监督的方法,因此它只是旨在发现底层数据结构方面的最大差异,这并不意味着它是与您的目标相关的差异。再次考虑让患有疾病的患者,如果您使用 k-means 对他们进行聚类,很可能不会根据健康/疾病得到聚类,而是根据男性和女性进行聚类。

    你可以例如尝试增加数字 k 或选择监督/半监督聚类方法(R 中有很多选项,谷歌是你的朋友)。

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 2017-03-07
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 2013-02-01
      • 2015-03-02
      相关资源
      最近更新 更多