在R中使用什么包进行Kmeans预测?

时间:2018-02-27 19:17:18

标签: r cluster-analysis k-means

似乎' SwarmSVM'包曾经有一个kmeans.predict函数,但不再有。

我想将数据帧划分为训练+测试子集以训练模型然后进行测试。我目前只能使用' kmeans'创建集群的功能,但我无法确定用于训练和测试模型的功能/包。

2 个答案:

答案 0 :(得分:2)

k -means是一种聚类方法,即用于无监督学习,不受监督,因此不能用于预测未来数据,因为添加更多数据会改变中心。可以进行分类的监督替代方案包括 k -NN,LDA / QDA和SVM,但是这种方法需要具有已知类别的训练集。

所有这一切,你可能使用predictstats::kmeans编写dist方法,因为你可能正在寻找最近的中心点。几乎没有优化,但功能齐全:

predict.kmeans <- function(object, newdata){
    centers <- object$centers
    n_centers <- nrow(centers)
    dist_mat <- as.matrix(dist(rbind(centers, newdata)))
    dist_mat <- dist_mat[-seq(n_centers), seq(n_centers)]
    max.col(-dist_mat)
}

set.seed(47)
in_train <- sample(nrow(iris), 100)
mod_kmeans <- kmeans(iris[in_train, -5], 3)
test_preds <- predict(mod_kmeans, iris[-in_train, -5])

table(test_preds, iris$Species[-in_train])
#>           
#> test_preds setosa versicolor virginica
#>          1      0          0        10
#>          2      0         18         7
#>          3     15          0         0

答案 1 :(得分:1)

install.packages("class")
library(class)

使用knn功能

有关进一步的帮助,请参阅

 ?knn