python - fit_transform(image) TSNE 方法的 Numpy 数组格式

标签 python numpy machine-learning scikit-learn

我正在使用 tSNE 的 Scikit-learn 来询问大约 1000 个散点图,但我似乎需要一个 2D numpy 数组来访问 fit_transform 方法。我是 Python 新手。

我的代码,

from sklearn.manifold import TSNE
import numpy as np
import cv2
mypath='/Path/to/files/scatterplots/'
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
photos = np.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
  photos[n] = cv2.imread( join(mypath,onlyfiles[n]) )

fig, axes = plt.subplots(2, 2, figsize=(10,10), subplot_kw={'xticks':(), 'yticks':()})
for ax, img in zip(axes.ravel(), photos):
   ax.imshow(img)

输出 enter image description here

问题代码

tsne = TSNE(random_state=50)
digits_tsne = tsne.fit_transform (photos.data)

错误

ValueError Traceback(最近一次调用最后一次) 在

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sklearn/manifold/t_sne.py in fit_transform(self, X, y)

892             Embedding of the training data in low-dimensional space.
893         """

--> 894 嵌入 = self._fit(X)

  • t_sne.py 中还有 3 行错误输出

我相信 fit_transform 方法需要一个 2D numpy 数组,例如

'target': array([0, 1, 2, 3])

其中 0-3 指的是每个散点图 1-4 后面的不同数据(寄生虫)。

请求 如何将目标数组合并到图像 numpy 数组中,以便 fit_transform 可以看到它并处理它?<​​/em>

最佳答案

请检查 t-SNE 的文档:

X : array, shape (n_samples, n_features)

为了让您的案例发挥作用,您需要将图像转换为一维数组并从中组装一个矩阵。

从代码角度来看,以下代码片段应该完成二维 t-SNE 聚类的工作:

arr = [cv2.imread( join(mypath,onlyfiles[n])).ravel() for n in range(0, len(onlyfiles))]
X = np.vstack[arr]
tsne = TSNE(n_components=2).fit_transform(X)

关于python - fit_transform(image) TSNE 方法的 Numpy 数组格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54561630/

相关文章:

python - 如何使用 Python Selenium 在网站上的内部滚动条上滚动?

python - 如何在 Python 2 中下载大文件

Python、Beautiful Soup、WebScraping、Pandas、Dataframe

python - 重现次数

Python 子进程 Popen

Python - 创建偏斜离散正态概率分布以采样整数

python - 使用 pandas 和 scikit (OneHotEncoder) 虚拟化逻辑回归的分类变量

python - sklearn : How to reset a Regressor or classifier object in sknn

machine-learning - 如何更加重视机器学习中的某些特征?

machine-learning - 二进制数而不是一个热向量