高维数据可视化

tsne

  • n_components 维数 (default: 2)
  • perplexity 邻居个数(default: 30) 2~50
  • early_exaggeration (default: 12) 控制原始空间中集群在低维空间中的紧密程度
  • learning_rate (default: 200.0) 10~1000;若是学习率过高,数据可能看起来像一个“球”,任何一点与其最近的邻居大体相等。 若是学习率过低,大多数点可能会在密集的云中看起来不多,有不多的异常值。
  • n_iter (default: 1000) 迭代次数,至少250
  • n_iter_without_progress (default: 300) 在咱们中止以前,最大的可执行次数,250以后开始算
  • min_grad_norm (default: 1e-7) 梯度norm小于这个时,中止迭代
  • metric (default:euclidean,option:precomputed,correlation)距离的度量方法,必须在scipy.spatial.distance.pdist下,或者是.PAIRWISE_DISTANCE_FUNCTIONS中列出的度量标准,默认为“欧几里德”
  • init(default: “random”);‘random’, ‘pca’,PCA初始化不能与预计算的距离一块儿使用,而且一般比随机初始化更全面地稳定。
  • verbose (default: 0)
  • random_state(default: None)若是int随机种子; 若是没有是the RandomState instance。 请注意,不一样的初始化可能会致使成本函数的不一样局部最小值。
  • method(default: ‘barnes_hut’)
  • angle (default: 0.5,搭配barnes_hut使用) “角度”是从一个点测量的远距离节点的角度大小(在[3]中称为θ)。 若是这个大小低于’angle’,那么它将被用做其中包含的全部点的汇总节点。 该方法对0.2-0.8范围内的参数变化不太敏感。 角度小于0.2时,计算时间的增长迅速增长,角度越大,偏差越大。

  • fit(X[, y]) Fit X into an embedded space.
  • fit_transform(X[, y]) Fit X into an embedded space and return that transformed output.
  • get_params([deep]) Get parameters for this estimator.
  • set_params(**params) Set the parameters of this estimator.

import tensorflow as tf
import math
from sklearn import datasets
from sklearn.manifold import TSNE
import numpy as np
import matplotlib.pyplot as plt
#n_components 维数
#

iris_dataset = datasets.load_iris()
features = []
predict_label=[]
data = open('xx.csv').read().split('\n')
#print data
for i in range(len(data)):
    if (i % 1000 == 0):
        print i
    temp = []
    str=data[i].split(',')
    if (len(str) == 19):
        for j in range(19):
            if (j < 16):
                temp.append(float(str[j]))
            if (j == 18):
                predict_label.append(float(str[j]))
        features.append(temp)
features_np = np.array(features)
predict_label_np=np.array(predict_label)


model = TSNE(learning_rate=100, n_components=2, random_state=0, perplexity=5)
tsne5 = model.fit_transform(features_np)

model = TSNE(learning_rate=100, n_components=2, random_state=0, perplexity=30)
tsne30 = model.fit_transform(features_np)

model = TSNE(learning_rate=100, n_components=2, random_state=0, perplexity=50)
tsne50 = model.fit_transform(features_np)

#color_mapping = {0: sns.xkcd_rgb['bright purple'], 1: sns.xkcd_rgb['lime'], 2: sns.xkcd_rgb['ochre']}
#colors = list(map(lambda x: color_mapping[x], predict_label_np))

plt.figure(figsize=(30, 15))
plt.subplot(311)
#plt.scatter(tsne5[:, 0], tsne5[:, 1], c=colors)
plt.scatter(tsne5[:, 0], tsne5[:, 1], c=predict_label_np)
plt.title("perplexity=5")

plt.subplot(312)
plt.scatter(tsne30[:, 0], tsne30[:, 1], c=predict_label_np)
plt.title("perplexity=30")

plt.subplot(313)
plt.scatter(tsne50[:, 0], tsne50[:, 1], c=predict_label_np)
plt.title("perplexity=50")
plt.show()
plt.close()

参考文档