【发布时间】:2017-04-13 00:42:30
【问题描述】:
我正在尝试创建 Jaccard 距离矩阵并对其执行 K-means 以给出集群 ID 和集群中元素的 ID。它的输入是推特推文。以下是代码,我不明白如何将文件中的初始种子用于 kmeans。
install.packages("rjson" ,dependencies=TRUE)
library("rjson")
install.packages("jsonlite" ,dependencies=TRUE)
library("jsonlite")
install.packages("stringdist" ,dependencies=TRUE)
library("stringdist")
data <- fromJSON(sprintf("[%s]", paste(readLines(file("C:\\Users\\Yuzuru Onathoshi\\Desktop\\Assignment5_pxv142730_sxl162530\\Part2\\Input\\Tweets.json")),collapse=",")))
t.feature <- data
t.feature$geo<-NULL
Jmatrix<-stringdistmatrix(t.feature$text,t.feature$text,method = "jaccard")
colnames(Jmatrix) <- t.feature$from_user_id
rownames(Jmatrix) <- t.feature$from_user_id
fit <- kmeans(Jmatrix, 10)
【问题讨论】:
-
你可以用jaccard距离实现自己的kmeans,应该不难。
-
@sandipan 不正确。 k-means 可能不会在其他距离处收敛,除非您还用适当的函数替换了均值。
-
@Anony-Mousse 真的吗?有什么理论结果吗?它背后的数学直觉是什么?如果不意味着我们可以使用类似 k-medoid 的功能。尽管具有与 kmeans 相同的优化功能(仅更改距离度量),但直观地我看不出它为什么不会收敛。 – 桑迪潘 5 小时前
-
是的,PAM/k-medoids 的存在是因为均值仅优化最小二乘……这就是数学直觉:均值不会最小化任意距离函数。它可能会使集群在距离上更糟。
标签: r twitter cluster-analysis k-means tweets