Çok boyutlu ölçeklemeyi sklearn, pandalar ve numpy ile deniyorum. Im kullanarak veri dosyası 10 sayısal sütun ve eksik değerleri vardır. aşağıdaki gibi ben sklearn.manifold en çok boyutlu ölçekleme ile 2 boyutlu olarak bu on boyutlu verileri alıp görselleştirmek için çalışıyorum:Numpy, Pandalar ve Sklearn'de Çok Boyutlu Ölçeklendirme Uyumu (ValueError)
import numpy as np
import pandas as pd
from sklearn import manifold
from sklearn.metrics import euclidean_distances
seed = np.random.RandomState(seed=3)
data = pd.read_csv('data/big-file.csv')
# start small dont take all the data,
# its about 200k records
subset = data[:10000]
similarities = euclidean_distances(subset)
mds = manifold.MDS(n_components=2, max_iter=3000, eps=1e-9,
random_state=seed, dissimilarity="precomputed", n_jobs=1)
pos = mds.fit(similarities).embedding_
Ama bu değer hatayı alıyorum:
Traceback (most recent call last):
File "demo/mds-demo.py", line 18, in <module>
pos = mds.fit(similarities).embedding_
File "/Users/dwilliams/Desktop/Anaconda/lib/python2.7/site-packages/sklearn/manifold/mds.py", line 360, in fit
self.fit_transform(X, init=init)
File "/Users/dwilliams/Desktop/Anaconda/lib/python2.7/site-packages/sklearn/manifold/mds.py", line 395, in fit_transform
eps=self.eps, random_state=self.random_state)
File "/Users/dwilliams/Desktop/Anaconda/lib/python2.7/site-packages/sklearn/manifold/mds.py", line 242, in smacof
eps=eps, random_state=random_state)
File "/Users/dwilliams/Desktop/Anaconda/lib/python2.7/site-packages/sklearn/manifold/mds.py", line 73, in _smacof_single
raise ValueError("similarities must be symmetric")
ValueError: similarities must be symmetric
düşündüm euclidean_distances döndü simetrik matris. Neyi yanlış yapıyorum ve nasıl düzeltebilirim?
ilk kontrol aşağıdaki gibidir:
Bu SciPy ile yapılabilir. bunu rasgele girdilerle denediğimde işe yarıyor. rastgele giriş ile deneyebilirsiniz? –
'scipy.spatial.distance_matrix' kullanmayı deneyin. Ya da sadece euclidean mesafesini kullanıyorsanız, sklearn'in, "Benzerlik =" euclidean "kullanarak hesaplamasını sağlayabilirsiniz. –
Benzer bir soruna rastladım ve toleransı 20 ('np.abs (benzerlikler - benzerlikler. T) .max()' ile çarparak L71'de sklearn/manifold/mds.py'ye yerleştirmek zorunda kaldım. ~ 1e-12 <1e-13 yerine benim için, kontrol çok sıkıydı ve başarısız oldu – jorgeca