python如何实现TSNE检验并绘图
一般而言TSNE就是一种数据可视化的工具,能够将高维数据降到2-3维(降维),然后画成图。现在也有蛮多可以直接使用的套件,如sklearn.manifold(具体可看:Sklearn TSNE官网)。
代码实现
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
x_tsne = TSNE(n_components=2, learning_rate=100, random_state=501).fit_transform(x_train) # 降至2维
解释:
n_components=2, 降至的维数(一般为2)
learning_rate=100, 学习率
random_state=501,随机种子
fit_transform(x_train), 要降维的数据
代码以及画图
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
def plt_tsne(x_train, y_train, name):
x_train = np.array(pd.read_csv(x_train,index_col=None,header=None))
y_ = np.array(pd.read_csv(y_train, index_col=None, header=None))
x_tsne = TSNE(n_components=2, learning_rate=100, random_state=501).fit_transform(x_train)
plt.figure(figsize=(6, 6))
r = 2 # 4ls
area = np.pi * r ** 2 # 点面积
plt.scatter(x_tsne[y_ == 0, 0], x_tsne[y_ == 0, 1], s=area, c='g', alpha=0.4, label='m5C')
plt.scatter(x_tsne[y_ == 1, 0], x_tsne[y_ == 1, 1], s=area, c='b', alpha=0.4, label='non m5C')
plt.legend()
plt.savefig(name)
return plt
if __name__ == '__main__':
x = pd.read_csv('...')
y = pd.read_csv('...')
title = 'my_title'
plt_tsne(x, y, title)
效果展示
图片来源:https://blog.csdn.net/qq_45714906/article/details/118568358