【问题标题】:Classify Database Tables using Unsupervised Machine Learning?使用无监督机器学习对数据库表进行分类?
【发布时间】:2018-09-07 15:45:21
【问题描述】:

我有一个独特的机器学习用例——我需要对数据库表进行分类。它们包含字母数字的元数据。我知道有些表与其他表相似,但我不知道存在多少组。

有没有办法可以将此数据提供给集群分类器并找出我的表池中存在多少可能的组?

提前感谢您的回复!

【问题讨论】:

  • 嗯,这取决于您使用的指标。你知道哪些表比其他表更相似吗?你能以某种方式量化这个吗?
  • Scikit-learn 有 many 用于无监督学习的方法。如果您需要帮助确定哪一个最适合您的数据,您将在stats stack exchange 上获得更好的答案。其他明智的做法是提供一小部分数据样本、您尝试过的内容以及您期望的结果,这将非常有帮助

标签: pandas machine-learning neural-network deep-learning unsupervised-learning


【解决方案1】:

这不是您问题的答案,但可以让您初步了解什么是可能的,以及一旦我找到了解决此聚类问题的良好指标,我将如何解决此问题。

假设我们发现欧几里得度量非常适合,那么我们可以执行以下操作(我在这里使用随机数,只是为了说明)

X = np.random.randint(100, size=(20,5))

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

for i in range(2,10):
    km = KMeans(n_clusters=i)
    y_pred = km.fit_predict(X)
    print('num_clusters: ' + str(i) + "\t" + str(silhouette_score(X,y_pred)))

输出:

num_clusters: 2 0.24318056918852374
num_clusters: 3 0.21859606573283147
num_clusters: 4 0.2320853440044738
num_clusters: 5 0.21159893083770434
num_clusters: 6 0.2436021768392968
num_clusters: 7 0.2798416731321928
num_clusters: 8 0.31839456337186695
num_clusters: 9 0.27654631385700396

轮廓对集群的匹配程度以及集群之间的重叠程度关于给定指标的程度进行评分。满分是 1 最差是 0。所以在这种特殊情况下,8 个集群可以解决问题。

但请记住,您需要根据您的问题选择适当的算法,因此您需要有一个表相似和表完全不同的标准

【讨论】:

    猜你喜欢
    • 2021-03-04
    • 2019-04-16
    • 2017-08-22
    • 2018-07-28
    • 2019-06-04
    • 2014-04-20
    • 2018-09-25
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多