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
相关产品推荐
相关产品推荐

