【问题标题】:Can somebody tell me the name of the algorithm if it exists or tell me how to find it有人可以告诉我算法的名称(如果存在)或告诉我如何找到它
【发布时间】:2020-01-01 16:48:20
【问题描述】:

这是一个想法:

有一个巨大的 2D 数据集(250,000 个数据点)。 我需要在不损害数据结构的情况下摆脱 90% 的数据点。这意味着(我相信)摆脱最接近的人。密度必须降低...

考虑到我们需要保留结构 - 我们不能随意删除 90%,因为这可能会导致偏差。这其中可能有一点随机元素,但不会太多。 我可以将数据放入二维矩阵并划分为单元格。然后一些单元格会有更多的数据点,有的单元格会更少,有的单元格没有。

我需要将这些数据点或矩阵中的单元格分组为段的算法,这些段中的数据点数量都相对接近。 “新”矩阵中的那些段或单元格可以是不同的大小(我相信这是这个算法的重点)。

我画了一幅画。它不准确,但我希望它会使想法更清晰。

我也用 python 编码:^)

谢谢!!

【问题讨论】:

  • 可以搜索聚类方法(:
  • 您正在寻找集群的质心,请参阅saedsayad.com/clustering_kmeans.htm 从质心展开到要保持在质心附近的前 K 个数据点。
  • 为什么需要分组算法?如果您将域拆分为规则间隔的单元格,然后随机删除每个单元格中 90% 的点,这将减少您提到的偏差,而无需经过复杂的分组。
  • @IvanPopov 因为数据分布不均。它在 1 个单元格中有 4 个数据点,在另一个单元格中有 2000 个。如果我去掉 90%,它将在 1 个单元格中留下 1 个,在 2 个单元格中留下 200 个。这会改变比例......而且我不寻找聚类 - 我知道我在说什么。 :)

标签: python algorithm data-science segment


【解决方案1】:

你正在搜索的算法是一种无监督学习方法,最著名的是python上的kmeans。

您可以在此处找到文档:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

这是一个数组的代码示例:

from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
               [10, 2], [10, 4], [10, 0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
kmeans.labels_

如果你必须为数据框 (df) 调整它,它看起来像这样:

from sklearn.cluster import KMeans
X = df[['column A',..., 'column D']]
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
kmeans.labels_

输出标签是您的集群。

【讨论】:

  • 我不是在寻找集群——我确定,我知道我在说什么。我需要以这样的方式进行分组,以便我可以按比例正确地删除数据。 k-means 对我有什么帮助?
  • 如果你集群了,你可以踢出每个集群的数据点。然后您可以将每组减少 10 个数据点...
  • 通过对数据进行聚类以查看哪些数据集中度最高,这样您就可以按比例降低集中度的密度?
猜你喜欢
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2014-11-25
相关资源
最近更新 更多