我试图在我的数据集中进行聚类,其中有4个数值字段。请查找所附文件:http://www.filedropper.com/example_3.
我试过用这个代码:
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=2, random_state=0, max_iter = 300).fit(dffinal)我知道在这个例子中有两个类,这就是我尝试使用两个集群的原因。在4200行中,前3196行属于类,其余行属于另一个类。
但是当我进行聚类时,聚类标签是随机分配的,准确率低于10%。只是想知道我的特性是否不够适合聚类,还是应该尝试使用其他聚类算法。
任何帮助都将不胜感激。谢谢。
发布于 2016-12-23 23:21:31
你忘了预处理你的数据了。
K-均值对尺度和离群值非常敏感。
另外:聚类不是分类。
它很可能是,例如,您的一个类有一个密集的子类型。仅仅是因为聚类发现了标签以外的其他东西(而且它不应该找到相同的东西,是吗?)并不意味着它失败了。它只是没有以与标签相同的方式对数据进行分类(但如果这是您想要的,那么您应该使用分类方法。)
发布于 2016-12-24 11:43:02
我怀疑对这些数据进行聚类不会产生很大的效果。只需绘制一个简单的图表,一次显示两个变量。

所有这些似乎都没有提供自然聚类的证据。其中一个情节可能会给你带来一线希望:伯爵对Duration3

这里发生了一些事情,有些点的计数大于10,另一些点的Duration3大于10^6,这两件事永远不会在一起发生。这可能暗示了两个组的混合,但我怀疑集群是实现这一目标的方法。大部分的点在靠近原点的水坑里。
发布于 2020-02-20 18:29:00
这个怎么样?将一个dataframe中的两个字段转换为一个数组,并将其输入k意思algo中,以开始生成质心。
#format the data as a numpy array to feed into the K-Means algorithm
data = np.asarray([np.asarray(df['Field1']),np.asarray(df['Field2'])]).T
# computing K-Means with K = 5 (5 clusters)
centroids,_ = kmeans(data,5)
# assign each sample to a cluster
idx,_ = vq(data,centroids)最后,将群集号映射回您正在使用的数据集的ID。
details = [(name,cluster) for name, cluster in zip(returns.index,idx)]
for detail in details:
print(detail)基本上就是这样。有关我上面描述的所有细节,请参阅下面的链接。
https://www.pythonforfinance.net/2018/02/08/stock-clusters-using-k-means-algorithm-in-python/
https://datascience.stackexchange.com/questions/15908
复制相似问题