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

MNIST数据集t-SNE可视化图表快速消失问题及解决咨询

问题解决:t-SNE可视化图表快速消失

图表快速消失不是内存问题,核心原因是你使用了plt.show(block=False)参数:这个参数会让matplotlib以非阻塞模式显示图表,当程序执行到末尾后,Python进程结束,图表窗口就会被自动关闭。

以下是几种可行的解决方法:

方法1:移除block=False参数(最推荐)

直接使用plt.show(),它会阻塞程序运行,直到你手动关闭图表窗口:

# 替换原来的plt.show(block=False)
plt.show()

方法2:添加程序暂停逻辑(保留非阻塞需求时用)

如果需要保持非阻塞模式(比如同时运行其他代码),可以在plt.show(block=False)后添加暂停指令,让程序持续运行直到你触发结束:

plt.show(block=False)
# 两种暂停方式选其一:
plt.pause(-1)  # 暂停直到你关闭窗口或按任意键
# 或者用input():
# input("Press Enter to close the plot...")

方法3:修改matplotlib后端配置(全局生效)

如果你经常遇到这类问题,可以修改matplotlib的后端为交互式后端(比如TkAgg、Qt5Agg),在代码开头添加:

import matplotlib
matplotlib.use('TkAgg')  # 替换成你系统支持的交互式后端

修改后的完整代码示例

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
import seaborn as sns
from sklearn.preprocessing import StandardScaler

df = pd.read_csv('mnist_train.csv')
y = df['label']
X = df.drop('label', axis=1)
standardized_X = StandardScaler().fit_transform(X)
data_1000 = standardized_X[0:1000, :]
labels_1000 = y[0:1000]

model = TSNE(n_components=2, random_state=1)
transformed = model.fit_transform(data_1000)

tsne = np.vstack((transformed.T, labels_1000)).T
tsne_df = pd.DataFrame(data=tsne, columns=("Dim_1", "Dim_2", "label"))

sns.FacetGrid(tsne_df, hue='label', height=6).map(plt.scatter, 'Dim_1', 'Dim_2')
plt.legend()
plt.show()  # 移除block=False参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:40:29