You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中准备T-SNE转换输入?解决ValueError问题

T-SNE可视化报错:ValueError: setting an array element with a sequence.

我尝试用以下代码对Pandas DataFrame中的数据集进行T-SNE可视化:

N = 10000
df_subset = df.sample(n=N, random_state=1)
data_subset = df_subset.values
tsne = TSNE(n_components=2, verbose=1, perplexity=40, n_iter=300)
tsne_results = tsne.fit_transform(data_subset)

但运行最后一行时触发错误:ValueError: setting an array element with a sequence.

即使改用df_subset.to_numpy()转换数据,错误依然存在。从数据形态能看出,data_subset的单个元素是序列结构(而非单一数值),这不符合T-SNE对输入数据的要求。

解决方法:

  • 清理非数值/嵌套结构列:T-SNE要求输入是纯数值型二维数组,先检查DataFrame中是否存在包含列表、数组等嵌套结构的列,直接删除这类列,或者将序列型数据拆分为多个数值列(比如某列是固定长度的列表,可使用df_subset[目标列].apply(pd.Series)拆分)。
  • 统一数据类型:用df_subset.dtypes查看各列类型,对object类型列做处理:如果是字符串类别,用One-Hot编码或LabelEncoder转换为数值;如果是嵌套结构,必须先扁平化处理。
  • 验证输入数组有效性:处理完成后,用data_subset.shape确认数组为二维结构(例如(10000, 特征数)),且每个元素都是单一数值,无嵌套序列。

内容的提问来源于stack exchange,提问作者robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:41:25