मैं इस प्रकार एक बड़े (100K 30K द्वारा) और (बहुत) svmlight प्रारूप में विरल डाटासेट जो मैं लोड है:विरल कार्यान्वयन/scikit सीखने
import numpy as np
from scipy.cluster.vq import kmeans2
from scipy.spatial.distance import pdist, squareform
from sklearn.datasets import load_svmlight_file
X,Y = load_svmlight_file("somefile_svm.txt")
जो एक विरल scipy रिटर्न सरणी एक्स
मैं बस के रूप में
D = pdist(X)
दुर्भाग्य से सभी प्रशिक्षण अंक जोड़ो में दूरी की गणना करने की जरूरत है, केवल scipy.spatial.distance काम में दूरी गणना कार्यान्वयन घने matrices के लिए। डाटासेट के आकार के कारण इसे करने के लिए, कहते हैं अव्यवहार्य है, के साथ इस समस्या के संबंध बहुत सराहना की जाएगी विरल मैट्रिक्स दूरी गणना कार्यान्वयन या समाधान के लिए कोई भी संकेत दिए गए के रूप में
D = pdist(X.todense())
pdist का उपयोग करें।
बहुत धन्यवाद
आपके उत्तर के लिए धन्यवाद। सबसे पहले यह मेरी समस्या का समाधान था क्योंकि "euclidean_distances" स्पैस डेटा के साथ काम करता है, हालांकि 'D = euclidean_distances (X, X) 'के साथ भी मुझे स्मृति त्रुटि से बाहर निकलता है। – Nicholas
@ निकोलस: 'euclidean_distances' अनिवार्य रूप से' X.shape [0] '×' X.shape [0] 'घने सरणी देता है, जो आपके मामले में 1e10 है। –
@ निकोलस यदि आप बड़े डेटासेट पर दिशा-के-साधनों को लागू करना चाहते हैं (दिशा में 'एक्स.शिप [0] '), तो आपको' sklearn.cluster.MiniBatchKMeans' क्लास को आजमाएं)। यह छोटे हिस्सों द्वारा इनपुट सेट को क्रमशः संसाधित करता है इसलिए स्मृति उपयोग नियंत्रित होता है। – ogrisel