だから、あなたは、空間内の点だけでなく、「未踏」の点の集合を「探検」のセットを持っています。あなたは、彼らの最も近い探検点までの未踏の点からの平均距離が最小になるように探索するK未踏のポイントを選択します。
これは、一つ未踏のポイントを1つずつ選んで、平均距離を測定するブルートフォースによってよりも効果的に行うことができますか?
私は仕事を得ることの下にPythonの機能を持っています。それは非常に遅くなるようしかし、それは大規模なセットのために現実的ではありません。私は、少なくとも数百人未踏のポイントの何千もののセットのためにこれを使用したいです。だから、より効果的であることが必要です。私は良い近似を行うと、最適なソリューションを必要としません!
これは、何らかの形で、ネストされたforループなしで行うことができますか?
それとも何とか唯一の最も可能性の高いポイントが評価のために選択されるだろうか?
すべてのアイデアが高く評価されます!
import numpy as np
explored = np.random.rand(100,3)
unexplored = np.random.rand(100000,3)
def k_anchors(explored, unexplored, K):
anchors = np.empty((K, unexplored.shape[1]))
for j in range(K):
proximity_sum = np.zeros((len(unexplored),))
for k in range(len(unexplored)):
temp_results = np.concatenate(( explored, unexplored[k].reshape((-1,3)) ))
proximity = np.zeros((len( unexplored ),))
for i in range(len( unexplored )):
i_prox = (abs((unexplored[i,:] - temp_results))).sum(axis=1)
proximity[i] = i_prox.min()
proximity_sum[k] = proximity.sum()
idx = np.argmin( proximity_sum )
anchors[j,:] = unexplored[ idx ]
unexplored = np.delete(unexplored, idx, 0)
explored = np.concatenate(( explored, unexplored[ idx ] ))
return anchors
print( k_anchors(explored, unexplored, 5) )
解決
バリス缶Tayizによって提案された問題は、K手段アルゴリズムのバリエーションで解決しました、そしてそれは魅力のように働きました。
要するに、私はKランダムな点と共に、重心として調査ポイントを初期化。Kのみランダムな点は、データをフィッティングする際に変化させました。私にとっては、数Kは、私は今、すべての時間関数は、私が探検することができますどのように多くのポイントと呼ばれるよう最適化する必要はありませんでした。
議論し、この質問に答えるために貴重な時間がかかったみんなに感謝!
あなたは、その目的のために、教師なし学習アルゴリズムを使用することができます。あなたはk個の手段のためのk = 3を選択した場合、例えば、センターに最も近い点を模索しなければなりません。Kを選択すると、別の問題です。あなたはこの記事を見ていることを達することができるhttps://medium.com/analytics-vidhya/how-to-determine-the-optimal-k-for-k-means-708505d204eb。n番目/ n番目- -のn-1番目のあなたは乗誤差の内、クラスタ和(WSS)の違いのn + 1番目のために使用することができます。この比率は、WSSを測定しながら、最良のkが得られます。