我想比较使用Fragment fragment =
fragmentManager.findFragmentByTag.findFragmentById
(R.id.fragment);
or
Fragment currentFragment =
fragmentManager.findFragmentByTag("fragmentTag");
的k-means库计算的两个不同的聚类。
sklearn
哪里
from sklearn.cluster import KMeans
ya = KMeans(n_clusters=3).fit_predict(Xa)
yb = KMeans(n_clusters=3).fit_predict(Xb)
和
ya
array([0, 2, 1, 1, 2, 2, 0, 2, 2, 1, 0, 0, 1, 2, 0, 1, 0, 0, 0, 0, 2, 2, 2,
2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2,
2, 0, 1, 0, 2, 2, 2], dtype=int32)
群集相同但标签不同。为了计算我正在做的差异:
yb
array([1, 2, 0, 0, 2, 2, 1, 2, 2, 0, 1, 1, 0, 2, 1, 0, 1, 1, 1, 1, 2, 2, 2,
2, 2, 1, 2, 1, 2, 1, 2, 2, 2, 1, 1, 0, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2,
2, 1, 0, 1, 2, 2, 2], dtype=int32)
但当然由于标签不起作用。有没有办法比较两个集群?
答案 0 :(得分:0)
通常,使用confusion matrix评估具有已知目标的聚类。你可以在你的情况下使用它,即使它们都不是真正的目标。
如果您只是想直接比较数组,可以将一个值映射到另一个:
ya = np.array([{0:1, 2:2, 1:0}[a] for a in ya])
答案 1 :(得分:0)
我用这种方式解决了,可能不是很优雅,但它有效
ya = KMeans(n_clusters=3).fit_predict(Xa)
yb = KMeans(n_clusters=3).fit_predict(Xb)
ya= KMeans(n_clusters=3).fit_predict(Xa)
cla = list()
m = 0
for i in range(0,3):
tmp = np.where(ya == i)
cla.append(list(tmp[0]))
cla = sort(cla)
yb= KMeans(n_clusters=3).fit_predict(Xb)
clb = list()
m = 0
for i in range(0,3):
tmp = np.where(yb == i)
clb.append(list(tmp[0]))
clb = sort(clb)
e = 0
for i in range(0,3):
sm = difflib.SequenceMatcher(None,list(cla[i]),list(clb[i]))
e += 1 - sm.ratio()
答案 2 :(得分:0)
比较聚类(或聚类和类!)的常用方法是thr 调整后的rand指数(ARI)。
它解决了完全群集号码发生变化的问题。