T-SNE无法将高维数据转换为超过4维。

6

我想在DBSCAN聚类算法中使用T-sne特征,但是sklearn的实现在n_components>4时无法运行。

from sklearn.manifold import TSNE
X = np.array([[0, 0, 0,2, 0, 0,2], [0, 1, 1,53, 0, 0,2], [1, 0, 1,12, 0, 0,2], [1, 1, 1,75, 0, 0,2]])
X_embedded = TSNE(n_components=5).fit_transform(X)

错误:

ValueError                                Traceback (most recent call last)
<ipython-input-22-79c671f39a06> in <module>
----> 1 tsne_data = model.fit(clustering_ready_data_encoded)

~/anaconda3/lib/python3.8/site-packages/sklearn/manifold/_t_sne.py in fit(self, X, y)
    902         y : Ignored
    903         """
--> 904         self.fit_transform(X)
    905         return self

~/anaconda3/lib/python3.8/site-packages/sklearn/manifold/_t_sne.py in fit_transform(self, X, y)
    884             Embedding of the training data in low-dimensional space.
    885         """
--> 886         embedding = self._fit(X)
    887         self.embedding_ = embedding
    888         return self.embedding_

~/anaconda3/lib/python3.8/site-packages/sklearn/manifold/_t_sne.py in _fit(self, X, skip_num_points)
    685 
    686         if self.method == 'barnes_hut' and self.n_components > 3:
--> 687             raise ValueError("'n_components' should be inferior to 4 for the "
    688                              "barnes_hut algorithm as it relies on "
    689                              "quad-tree or oct-tree.")

ValueError: 'n_components' should be inferior to 4 for the barnes_hut algorithm as it relies on quad-tree or oct-tree.

我知道在聚类算法中使用T-sne不是首选特征,但我仍然想尝试。

1个回答

10
您可以将method='exact'设置为,因为barnes_hut方法只在n_components<4时有效。

不幸的是,Exact 方法雖然為 O(N^2),但速度非常緩慢。 - Jamal Azizbeigi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接