python - fit_transform(image) TSNE 方法的 Numpy 数组格式
问题描述
我正在使用 Scikit-learn for tSNE 来询问大约 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)
问题代码
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 可以看到并处理它?
解决方案
请查看t-SNE 的文档:
X:数组,形状(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)
推荐阅读
- memory-management - 将设备内存和内核分配的内存映射到同一个 vma
- sql - 雪花 SQL 中的 JSON 解析
- vb.net - Amazon Vendor Central - 如何创建散列工资单?
- reactjs - 使用 AND 和 OR 过滤选项 - Material UI DataGrid/XGrid
- python - 如何重置torch Sequential中的图层参数?
- javascript - JS WebSocket,与服务器建立连接时出现问题
- azure - Azure autoML 权重列
- objective-c - 在 Objective C 中创建 NSAlert 时,我需要释放 NSAlert 吗?
- javascript - 如何使用事件传播将两个跨度标签与 Javascript 连接起来?
- python - 如何完全按照显示的方式打印文件?