首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数值数据聚类

数值数据聚类
EN

Data Science用户
提问于 2016-12-23 16:31:20
回答 3查看 1.7K关注 0票数 0

我试图在我的数据集中进行聚类,其中有4个数值字段。请查找所附文件:http://www.filedropper.com/example_3.

我试过用这个代码:

代码语言:javascript
复制
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=2, random_state=0, max_iter = 300).fit(dffinal)

我知道在这个例子中有两个类,这就是我尝试使用两个集群的原因。在4200行中,前3196行属于类,其余行属于另一个类。

但是当我进行聚类时,聚类标签是随机分配的,准确率低于10%。只是想知道我的特性是否不够适合聚类,还是应该尝试使用其他聚类算法。

任何帮助都将不胜感激。谢谢。

EN

回答 3

Data Science用户

发布于 2016-12-23 23:21:31

你忘了预处理你的数据了。

K-均值对尺度和离群值非常敏感。

另外:聚类不是分类。

它很可能是,例如,您的一个类有一个密集的子类型。仅仅是因为聚类发现了标签以外的其他东西(而且它不应该找到相同的东西,是吗?)并不意味着它失败了。它只是没有以与标签相同的方式对数据进行分类(但如果这是您想要的,那么您应该使用分类方法。)

票数 2
EN

Data Science用户

发布于 2016-12-24 11:43:02

我怀疑对这些数据进行聚类不会产生很大的效果。只需绘制一个简单的图表,一次显示两个变量。

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

这里发生了一些事情,有些点的计数大于10,另一些点的Duration3大于10^6,这两件事永远不会在一起发生。这可能暗示了两个组的混合,但我怀疑集群是实现这一目标的方法。大部分的点在靠近原点的水坑里。

票数 1
EN

Data Science用户

发布于 2020-02-20 18:29:00

这个怎么样?将一个dataframe中的两个字段转换为一个数组,并将其输入k意思algo中,以开始生成质心。

代码语言:javascript
复制
#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。

代码语言:javascript
复制
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/

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/15908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档