kmeansアルゴリズムをPythonで実装し、kのさまざまな値に対してクラスタの性能をとして計算しようとしました。 ここでは、データセットの小さな部分にはほとんど変わりません。これはValueError:複数の要素を持つ配列の真理値はあいまいです。シルエットパフォーマンスアルゴリズム
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
LINE-コメントにエラーと一緒に得られる
data-
[[ 0. 0. 5.]
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 7.]
[ 0. 0. 0.]
[ 0. 0. 12.]
[ 0. 0. 0.]
[ 0. 0. 7.]
[ 0. 0. 9.]
[ 0. 0. 11.]]
Clusters
[[array([ 0., 0., 5.]), array([ 0., 0., 0.]), array([ 0., 0., 0.]), array([ 0., 0., 0.]), array([ 0., 0., 0.])], [array([ 0., 0., 7.]), array([ 0., 0., 12.]), array([ 0., 0., 7.]), array([ 0., 0., 9.]), array([ 0., 0., 11.])]]
[ 0. 0. 5.]
[[0.0, 0.0, 5.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
follows-ようにして得られた端末上
def avgdist(pt, clust):
dists = []
for elem in clust:
dists.append(np.linalg.norm(pt-elem))
return np.mean(dists)
def silhouette(data, clusts):
s = []
print("data-")
print(data)
for i in range(len(clusts)):
for j in range(len(clusts[i])):
clusts[i][j] = clusts[i][j].tolist()
print("Clusters")
print(clusts)
for elem in data:
a = []
b = []
print(elem)
for clust in clusts:
print(clust)
if elem in clust: #Error in this line
b.append(avgdist(elem, clust))
else:
a.append(avgdist(elem, clust))
s.append((min(b)-min(a)/(max(min(b), min(a)))))
return np.mean(s)
出力は、私が何かわからないよう助けてくださいですそのエラーは私の状況では意味します。同様の質問からエラーの性質を知ることができましたが、ここでは該当しません。
編集 - 私はあなたの問題はあなたがリスト(CLUST)のリストが含まれている場合は、当該行で評価しようということである
.....
if elem.tolist() in clust: #Error in this line
.....
を(報告のみ1つの比較)を印刷しますあなたはSOの答えを得ることを満足しています? [誰かが私の質問に答えたときに何をすべきですか?](https://stackoverflow.com/help/someone-answers)を読むことを検討してください。 – Kanak