gpt4 book ai didi

r - 聚类分析完成后如何知道新数据属于哪个簇

转载 作者:行者123 更新时间:2023-12-01 07:58:43 25 4
gpt4 key购买 nike

在完成聚类分析后,当我输入一些新数据时,我如何知道数据属于哪个聚类?

data(freeny)
library(RSNNS)
options(digits=2)
year<-as.integer(rownames(freeny))
freeny<-cbind(freeny,year)
freeny = freeny[sample(1:nrow(freeny),length(1:nrow(freeny))),1:ncol(freeny)]
freenyValues= freeny[,1:5]
freenyTargets=decodeClassLabels(freeny[,6])
freeny = splitForTrainingAndTest(freenyValues,freenyTargets,ratio=0.15)
km<-kmeans(freeny$inputsTrain,10,iter.max = 100)
kclust=km$cluster

最佳答案

kmeans 返回一个包含 $centers 中聚类中心坐标的对象。您想找到新对象最接近的簇(根据距离的平方和):

v <- freeny$inputsTrain[1,] # just an example
which.min( sapply( 1:10, function( x ) sum( ( v - km$centers[x,])^2 ) ) )

以上返回 8 - 与 freeny$inputsTrain 的第一行分配到的集群相同。

在另一种方法中,您可以先创建聚类,然后使用受监督的机器学习来训练模型,然后将其用作预测。但是,模型的质量将取决于聚类真正代表数据结构的程度以及您拥有的数据量。我已经使用 PCA(我最喜欢的工具)检查了您的数据:

pca <- prcomp( freeny$inputsTrain, scale.= TRUE )
library( pca3d )
pca3d( pca )

我的印象是你最多有 6-7 个清晰的类可以使用:

enter image description here

但是,应该运行更多的 kmeans 诊断(弯头图等)以确定最佳的聚类数量:

wss <- sapply( 1:10, function( x ) { km <- kmeans(freeny$inputsTrain,x,iter.max = 100 ) ; km$tot.withinss } )
plot( 1:10, wss )

enter image description here

此图建议将 3-4 个类别作为最佳类别。有关更复杂和信息丰富的方法,请参阅聚类图:http://www.r-statistics.com/2010/06/clustergram-visualization-and-diagnostics-for-cluster-analysis-r-code/

关于r - 聚类分析完成后如何知道新数据属于哪个簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com