この関数にはネストされたループが含まれています。私はコードのより速い実行のために並列化する必要があります。Pythonでネストされたforループを並列化する方法
def euclid_distance(X,BOW_X):
d3=[]
d2=[]
for l in range(len(X)):
for n in range(l+1,len(X)):
d1=[]
for m in range(len(X[l])):
min1=999
p=0
while(p<len(X[n])):
d=scipy.spatial.distance.euclidean(X[l][m],X[n][p])
d=d*numpy.min([BOW_X[l][m],BOW_X[n][p]])
if(d<min1):
min1=d
if(min1==0):
break
p+=1
d1.append(min1)
d2.append(d1)
for i in range(len(d2)):
d3.append(sum(d2[i]))
return (d3)
この Xを行うにはいくつかの方法は、ベクトルが含まれているリストのリストを含む配列ですあります。
X、BOW_X、C、および期待される出力の小さな例を挙げることができますか? –
X = array([[[1,2,3]、[2,7,6]、[3,0,1]]、[[3,3,3]、[1,1,1]]、 [1,2,3] [1,2,3] [1,2,3] [1,2,3] [1,2,3] [[6,7,5]、[9,0,1]、[3,7,5]、[0,4,4]]、dtype = object) [1,2,3] - >単語のベクトルrep [1,2,3]、[2,7,6]、[3,0,1]] - > 3ワードを含む文書 この配列には、 2、4ワードresp BOW_X = array([[[0.1,0.02,0.3]、[0.2,0.7,0.6]、[0.03,0,0.1]]、[[0.03,0.3,0.03]、[0.1、 [0,0.4,0.04]]、dtype = object) 出力:I(0,0,0,0,0) 1つの文書内の各単語の最小距離を他の文書の各単語から計算したい場合は、minを格納します。それを追加してdist b/w 2 docsを入手してください – fawkes94
説明が必要な場合は元に戻す – fawkes94