今天测试一个数据时,发现scanpy画的图和使用sklearn画的图有点不一样,解决过程如下

测试1

from sklearn import datasets
import scanpy as sc
import numpy as np
import random
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
np.random.seed(1)
random.seed(1)iris = datasets.load_iris()
X = iris.data
label=iris.targetadata=sc.AnnData(X,dtype="float64")# 必须加入float64,否则结果不一致
adata.obs["celltype"]=label.astype(int).astype(str)
sc.tl.tsne(adata,random_state=0,use_fast_tsne=False)
#sc.tl.tsne(adata,random_state=0)
axis=sc.pl.tsne(adata,color=["celltype"],size=100,show=False)
sc_tsne=adata.obsm["X_tsne"]
#print(ax)print(np.min(sc_tsne[:,0]))
print(np.max(sc_tsne[:,0]))
print(np.min(sc_tsne[:,1]))
print(np.max(sc_tsne[:,1]))
print("====================")# import pickle
# #with open()
# file = open('/Users/xiaokang/Desktop/data/tsne.pkl', 'rb')
# tsne2=pickle.load(file)target=label
tsne = TSNE(learning_rate=1000,init='random', random_state=0)
X_transformed = tsne.fit_transform(X)
fig=plt.figure()
for label in np.unique(target):plt.scatter(X_transformed[label==target,0], X_transformed[label==target,1],label=label)
plt.legend(loc="upper left")
plt.show()
#print(X_transformed)
print(np.min(X_transformed[:,0]))
print(np.max(X_transformed[:,0]))
print(np.min(X_transformed[:,1]))
print(np.max(X_transformed[:,1]))print("==================")
params_sklearn = dict(perplexity=30,random_state=0,verbose=False,early_exaggeration=12,learning_rate=1000,
)
from sklearn.manifold import TSNE
# unfortunately, sklearn does not allow to set a minimum number
# of iterations for barnes-hut tSNE
tsne3 = TSNE(**params_sklearn)
X_transformed=tsne3.fit_transform(X)
fig=plt.figure()
for label in np.unique(target):plt.scatter(X_transformed[label==target,0], X_transformed[label==target,1],label=label)
plt.legend(loc="upper left")
plt.show()print(np.min(X_transformed[:,0]))
print(np.max(X_transformed[:,0]))
print(np.min(X_transformed[:,1]))
print(np.max(X_transformed[:,1]))

复现digits数据集结果

from sklearn import datasets
import scanpy as sc
import numpy as np
import random
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.datasets import load_digits
np.random.seed(1)
random.seed(1)#降维
X,target= load_digits(return_X_y=True)
label=target.copy()adata=sc.AnnData(X,dtype="float64")# 必须加入float64,否则结果不一致
adata.obs["Group"]=label.astype(int).astype(str)
sc.tl.tsne(adata,random_state=0,use_fast_tsne=False)
#sc.tl.tsne(adata,random_state=0)
axis=sc.pl.tsne(adata,color=["Group"],size=100,show=False,title="scanpy(TSNE)")
sc_tsne=adata.obsm["X_tsne"]
#print(ax)print(np.min(sc_tsne[:,0]))
print(np.max(sc_tsne[:,0]))
print(np.min(sc_tsne[:,1]))
print(np.max(sc_tsne[:,1]))
print("====================")np.random.seed(1)
random.seed(1)#降维
X,target= load_digits(return_X_y=True)
X=X.astype("float32")# 这句不能删,X默认是float64的,但是scanpy内部做PCA之前把数据又变成了float32,所以
# 所以为了保持最终的结果一致,使用sklearn的PCA之前,我也将它变成了float32类型的
# adata=sc.AnnData(X)
# X=adata.X
# print(X.dtype)
#X=X.toarray()
label=target.copy()
target=label
pca=PCA(n_components=50,svd_solver="arpack",random_state=0)# 次数必须设置随机种子,否则结果和scanpy的结果略有差异
X=pca.fit_transform(X)
#print(X)tsne = TSNE(random_state=0,learning_rate=1000)
X_transformed = tsne.fit_transform(X)
fig=plt.figure()
for label in np.unique(target):plt.scatter(X_transformed[label==target,0], X_transformed[label==target,1],label=label)
plt.legend(loc="upper left")
plt.title("Sklearn(TSNE)")
plt.show()
#print(X_transformed)
print(np.min(X_transformed[:,0]))
print(np.max(X_transformed[:,0]))
print(np.min(X_transformed[:,1]))
print(np.max(X_transformed[:,1]))

scanpy TSNE画图和sklearn TSNE画图复现相关推荐

  1. r语言 断轴 画图_R语言基础画图/绘图/作图

    R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介绍. 0 结构 每种图形构成 ...

  2. R语言使用Rtsne包进行TSNE分析:提取TSNE分析结果合并到原dataframe中、可视化tsne降维的结果、并圈定降维后不匹配的数据簇(tSNE identifying mismatch)

    R语言使用Rtsne包进行TSNE分析:提取TSNE分析结果合并到原dataframe中.可视化tsne降维的结果.并使用两个分类变量从颜色.形状两个角度来可视化tsne降维的效果.并圈定降维后不匹配 ...

  3. python在手机上可以画图吗_python简单画图教程!python怎么在屏幕上画图

    python的tutle画图教程? 是turtle海龟画图,import turtle调用模块 内置一些函数,可以自己依据需求加入,网上有教程的 什么,Python可以画图写报告 是的,比如matpl ...

  4. python画图marker显示_python画图(标记、marker、设置标记大小、marker符号大全)(图文详细入门教程五)...

    初衷 本人由于平常写论文需要输出一些结果图,但是苦于在网上搜python画图时,详细的教程非常多,但是就是找不到能马上解决自己问题那一行代码,所以打算写一些适合需求简单的朋友应急用的教程,应急就必须方 ...

  5. 小学用计算机画图教案,小学信息技术画图教案.doc

    小学信息技术画图教案 小学信息技术画图教案 篇一:三年级信息技术下册画图教案 第1单元 做好画图准备 [教学目的与要求] (1)学习启动与退出"画图"程序的方法. (2)了解&qu ...

  6. sklearn tsne降维方法举例

    问题 给定4X3维度的数据,我们想要在二维图上可视化,该怎么操作呢? 解决 我们可以通过调用sklearn中的tsne将给定的数据做降维操作,进而实现数据的可视化,如代码所示: import nump ...

  7. sklearn tsne

    采用tsne画数据集的分布图 from sklearn.manifold import TSNE import numpy as np import time import matplotlib.py ...

  8. python 画图 线标注_Python画图的这几种方法,你学会了吗

    点击上方"科技学堂"订阅最新科技教育信息 循环是计算机程序中最基础的控制方法,在Python学习中,熟练使用循环语句是非常重要的."Python轻松学"课程我们 ...

  9. python 画图_学python画图最快的方式——turtle小海龟画图

    python中的画图方式主要有三种:turtle.tkinter.pygame,我们先从最简单的turtle开始. turtle翻译过来是海龟,我们一般喊它小海龟画图. turtle是一款简单易上手的 ...

最新文章

  1. python os system用法_Python调用系统命令os.system()和os.popen()的实现
  2. 「赠书」贾扬清推荐,国内首本数据竞赛图书
  3. 用springmvc作接口时返回json数据中文乱码
  4. r语言的逻辑回归分类
  5. html添加子节点方法,HTML DOM appendChild() 方法
  6. 11.PHP memcache 与 memcached 区别
  7. 活动目录权限委派|父域子域管理
  8. Cross-entropy 和 Binary cross-entropy
  9. 原版黑苹果安装教程(Clover引导)
  10. 获取微信公众号发布内容封面图片url
  11. Less 颜色操作函数Mix的计算方法
  12. MySQL 系统自带的数据库有哪些?每个数据库的作用是什么?
  13. Downloads Help 下载帮助
  14. Unity3d资源反编译. AssetBundle格式简析+简单应用+爬坑
  15. 利用MATLAB仿真实现交通红绿灯识别的目的
  16. 单工 半双工 全双工的区别
  17. python 循序渐进学习:输出线段图案、正方形图案、直角三角形图案、翻转直角三角形图案、带空格直角三角形图案
  18. login登录页面 html,login.html
  19. 一次性免费临时邮箱,专注个人隐私保护
  20. c语言设计贪吃蛇实验报告,贪吃蛇游戏程序设计实验报告

热门文章

  1. 2837xd代码生成模块学习(2)——ADC、ePWM模块、Timer0
  2. 微信小程序+SpringBoot实现用户登录
  3. 基于java+springmvc+mybatis+vue+mysql的二手手机回收平台系统
  4. 解决mac mysql无法启动
  5. STM32F4-CAN通讯
  6. ChatGPT:深度拆解(24H限时下载)
  7. mysql横切纵切_什么是纵切,横切.
  8. 北京市行政区划 (2023)
  9. ESB与dubbo的区别
  10. 乾坤微前端优化(一)