У меня есть небольшая проблема для выполнения TSNE на моем наборе данных, используя сходство с косинусом.Косинус сходства TSNE в sklearn.manifold
Я вычислил косинус сходство всех мои векторов, поэтому у меня есть квадратная матрица, которая содержит мой косинус сходства:
A = [[ 1 0.7 0.5 0.6 ]
[ 0.7 1 0.3 0.4 ]
[ 0.5 0.3 1 0.1 ]
[ 0.6 0.4 0.1 1 ]]
Затем я использую TSNE так:
A = np.matrix([[1, 0.7,0.5,0.6],[0.7,1,0.3,0.4],[0.5,0.3,1,0.1],[0.6,0.4,0.1,1]])
model = manifold.TSNE(metric="precomputed")
Y = model.fit_transform(A)
Но я не уверен, что использовать предварительно вычисленные метрики сохранить смысл моего косинус подобия:
#[documentation][1]
If metric is “precomputed”, X is assumed to be a distance matrix
Но когда я пытаюсь использовать косинус метрику, я получил сообщение об ошибке:
A = np.matrix([[1, 0.7,0.5,0.6],[0.7,1,0.3,0.4],[0.5,0.3,1,0.1],[0.6,0.4,0.1,1]])
model = manifold.TSNE(metric="cosine")
Y = model.fit_transform(A)
raise ValueError("All distances should be positive, either "
ValueError: All distances should be positive, either the metric or
precomputed distances given as X are not correct
Так что мой вопрос, как это можно выполнить с помощью TSNE косинуса метрики на существующем наборе данных (подобие матрицы)?
какая версия scikit учится? - Код работает для меня. – cel
Извините, я обновляю свой код, я использую функцию 'fit_transform' для преобразования моего ввода. И ошибка, кажется, что оттуда ... я закодирован небольшая часть, которая не работает: 'от sklearn импорт многообразия импорта NumPy как нп A = np.matrix ([[1, 0,7 , 0,5,0,6], [1, 0,7,0,5,0,6], [0,5,0,3,1,0,1], [0,6,0,4,0,1,1]]) модель = коллектор.TSNE (метрическая = "косинус") Y = model.fit_transform (A) ' – HugoLasticot