Numpy array format for fit_transform(image) TSNE method

我在使用Scikit-learn进行tSNE分析,大约有1000个散点图,但我似乎需要一个二维的numpy数组来访问fit_transform方法。我是Python的新手。

我的代码如下:

from sklearn.manifold import TSNEimport numpy as npimport cv2mypath='/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 (most recent call last) in

/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 embedding = self._fit(X)

  • 3 further lines of error output within t_sne.py

我认为fit_transform方法需要一个二维的numpy数组,例如:

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

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

请求如何将目标数组与图像的numpy数组结合起来,以便fit_transform方法能够识别并处理它?


回答:

请查看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)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注