使用TSNE进行降维。为什么3D图形不起作用?

我使用了Sklearn的Digits数据集,并尝试使用TSNE(t分布随机邻域嵌入)将维度从64降至3:

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns#%matplotib inlinefrom sklearn.manifold import TSNEfrom sklearn.datasets import load_digitsfrom mpl_toolkits.mplot3d import Axes3Ddigits = load_digits()digits_df = pd.DataFrame(digits.data,)digits_df["target"] = pd.Series(digits.target)tsne = TSNE(n_components=3)digits_tsne = tsne.fit_transform(digits_df.iloc[:,:64])digits_df_tsne = pd.DataFrame(digits_tsne,                            columns =["Component1","Component2","Component3"])finalDf = pd.concat([digits_df_tsne, digits_df["target"]], axis = 1)#Visualizing 3Dfigure = plt.figure(figsize=(9,9))axes = figure.add_subplot(111,projection = "3d")dots = axes.scatter(xs = finalDf[:,0],ys = finalDf[:,1],zs = finalDf[:,2],                   c = digits.target, cmap = plt.cm.get_cmap("nipy_spectral_r",10))

finalDf的数据如下:

enter image description here

错误信息:

TypeError: '(slice(None, None, None), 0)' is an invalid key

哪里出错了?谁能帮帮我?


回答:

您试图对pandas数据框进行numpy切片操作,这是无效的,因此首先需要将数据框转换为numpy数组。

这是更新后的代码:

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns#%matplotib inlinefrom sklearn.manifold import TSNEfrom sklearn.datasets import load_digitsfrom mpl_toolkits.mplot3d import Axes3Ddigits = load_digits()digits_df = pd.DataFrame(digits.data,)digits_df["target"] = pd.Series(digits.target)tsne = TSNE(n_components=3)digits_tsne = tsne.fit_transform(digits_df.iloc[:,:64])digits_df_tsne = pd.DataFrame(digits_tsne,                            columns =["Component1","Component2","Component3"])finalDf = pd.concat([digits_df_tsne, digits_df["target"]], axis = 1)#Visualizing 3Dfigure = plt.figure(figsize=(9,9))axes = figure.add_subplot(111,projection = "3d")dots = axes.scatter(xs = finalDf.to_numpy()[:,0],ys = finalDf.to_numpy()[:,1],zs = finalDf.to_numpy()[:,2],                   c = digits.target, cmap = plt.cm.get_cmap("nipy_spectral_r",10))

enter image description here

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中创建了一个多类分类项目。该项目可以对…

发表回复

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