5
sklearn
'dan bir kümeleme algoritması için özel bir uzaklık metriği işlevi kullanırken bir performans darboğazına giriyorum.Bu küçük mesafe Python işlevinin performansı nasıl geliştirilir
çalıştırın yılan Run tarafından gösterildiği gibi sonuç şudur:
dbscan_metric
fonksiyonudur. fonksiyonu çok basit görünüyor ve ben oldukça hızlandırmak için en iyi yaklaşım ne olurdu bilmiyorum: bu yavaş çok duyacağız olmaya neden olduğunu ne olduğu
def dbscan_metric(a,b):
if a.shape[0] != NUM_FEATURES:
return np.linalg.norm(a-b)
else:
return np.linalg.norm(np.multiply(FTR_WEIGHTS, (a-b)))
Herhangi düşünceler.
Bu diziler ne kadar büyük? Eğer if ifadesinden kurtulur ve veri kümesinin iki ifadesinden birini zorlarsanız hızlanır mı? ... 'nı (a)! = NUM_FEATURES' yerine deneyebilir ve daha hızlı bir şekilde ... –
cevabı a ve b dizilerinin ne kadar büyük olduğuna bağlıdır. Hangi numpy sürümünü kullanıyorsunuz? profile bakılırsa, muhtemelen küçüktürler ve python yükünün egemenliği altındadırlar, bu durumda, – jtaylor
'u azaltmak için cython'u kullanmanız gerekir. [email protected]'de 71 saniyenin harcanması ve 170 sn'nin başka yerlerde harcanması garip görünüyor mu? Bu diyagramı nasıl anlayacağımı bildiğimi sanıyordum, ama bu garip görünüyor. Tüm tahmin edebileceğim şey, ekstra 170 saniyenin bir şekilde çağrı yüküne dahil olduğudur. Inlinlemeyi deneyebilir misin? – user1245262