如何解决用于tSNE的散点图选择器
我通过tSNE将8000个数据分为四个标签,每个标签有2000个。此时,我使用了sns.scatterplot,并且我想将选择器用于tSNE图。我按照下面的代码进行操作,但未实现。如果我不应该使用sns.scatterplot,请告诉我另一个绘图方法。请帮忙。谢谢。
部分代码:
import numpy as np
from sklearn.datasets import fetch_openml
import seaborn as sns
import plotnine as p9
import matplotlib.pyplot as plt
def pick_handler(event):
mouseevent = event.mouseevent
artist = event.artist
def onpick(event):
thisline = event.artist
xdata = thisline.get_xdata()
ydata = thisline.get_ydata()
ind = event.ind
points = tuple(zip(xdata[ind],ydata[ind]))
print('onpick points:',points)
fig = plt.figure()
import pandas as pd
feat_cols = ['pixel'+str(i) for i in range(X.shape[1]) ]
df = pd.DataFrame(X,columns=feat_cols)
df['y'] = y
df['label'] = df['y'].apply(lambda i: str(i))
X,y = None,None
print( 'Size of the dataframe: {}'.format(df.shape) )
import matplotlib.pyplot as plt
import time
from sklearn.manifold import TSNE
np.random.seed(42)
rndperm = np.random.permutation(df.shape[0])
n_sne = 8000
df_subset = df.loc[rndperm[:n_sne],:].copy()
data_subset = df_subset[feat_cols].values
time_start = time.time()
tsne = TSNE(n_components=2,verbose=1,perplexity=200,n_iter=300)
tsne_results = tsne.fit_transform(df.loc[rndperm[:n_sne],feat_cols].values)
print( 't-SNE done! Time elapsed: {} seconds'.format(time.time() - time_start ))
df_subset['tsne-2d-one'] = tsne_results[:,0]
df_subset['tsne-2d-two'] = tsne_results[:,1]
fig.canvas.mpl_connect('pick_event',onpick)
sns.scatterplot(
x="tsne-2d-one",y="tsne-2d-two",hue="y",palette=sns.color_palette("hls",4),data=df_subset,legend="full",alpha=0.7
)
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。