我有一个独特的ML用例 - 我需要对数据库表进行分类。它们包含元数据,即字母数字。我知道有些表与其他表相似,但我不知道有多少组存在。
有没有办法可以将这些数据提供给集群分类器,并找出我的表池中存在多少个可能的组?
提前感谢您的回复!
答案 0 :(得分:0)
这不是您的问题的答案,但是一旦我找到了解决此群集问题的良好指标,就可以让您初步了解可行的方法以及如何解决此问题。
我们假设我们发现欧几里德度量标准非常适合,那么我们可以做到以下几点(我在这里使用随机数,只是为了说明)
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个簇将适合该问题。
但请记住,您需要根据您的问题选择合适的算法,因此您需要对表格相似且表格完全不同的标准。