Запуск вашего внутреннего цикла:
for point, value in zip(tsne, df[feature].values):
try:
plt.scatter(point[0], point[1], alpha=value, facecolor=color, marker=marker, s=s, label=feature)
вместо этого с 1d numpy массивами определенно ускорит процесс.
Внутренний цикл можно заменить на что-то вроде:
x = tsne[:, 0] # is `tsne` an (n, 2) numpy array?
y = tsne[:, 1]
alpha_values = df[feature].values
try:
plt.scatter(x, y, alpha=alpha_values, facecolor=color, marker=marker, s=s, label=feature)
except:
pass
Если все еще слишком медленно для вас, вы также можете переключиться на штриховку данных в Holoviews , но сначала попробуйте удалить внутренний цикл for, поскольку это определенно сильно замедляет работу.