• sklearn 笔记 TSNE


    0 基本介绍

    机器学习笔记:t-SNE_UQI-LIUWJ的博客-CSDN博客

            将高维数据降维,使得高维数据各点的联合概率,和对应的低维数据各点的联合概率之间的 KL散度尽量小

            对T-SNE使用不同的初始化,我们可以获得不同的结果

    1 基本使用方法

    1. class sklearn.manifold.TSNE(
    2. n_components=2,
    3. *,
    4. perplexity=30.0,
    5. early_exaggeration=12.0,
    6. learning_rate='warn',
    7. n_iter=1000,
    8. n_iter_without_progress=300,
    9. min_grad_norm=1e-07,
    10. metric='euclidean',
    11. metric_params=None,
    12. init='warn',
    13. verbose=0,
    14. random_state=None,
    15. method='barnes_hut',
    16. angle=0.5,
    17. n_jobs=None,
    18. square_distances='deprecated')

    2 参数介绍

    n_components需要降至的维度
    perplexity
    • 用来约束高维分布中的σi
    • 更大的数据集需要更大的perplexity
    • 一般数值在5~50之间
    early_exaggeration
    • 控制原始空间中的自然簇在嵌入空间中的紧密程度以及它们之间的空间大小。
    • 对于在原始空间中较大的自然簇,他们在嵌入空间的距离中会更大。(t-SNE性质)
    • 【这个参数的选择不是很关键】
    learning_rate

    t-SNE的学习率

    • 如果学习率过大,那么最后学到的低维空间中的点会像一个“球”,即各个点和他们最近的邻居之间是等距离的
    • 如果学习率国小,那么最后大多数点都会被压缩到一个很密集的“云”中,只有很少的outlier

    除了浮点数之外,这里也可以设置learning_rate为'auto',可以被计算为max(N / early_exaggeration / 4, 50) 【N是sample size】

    n_iter优化需要的最大迭代次数(至少需要250)
    n_iter_without_progress

    如果多少轮没有更好地优化进展,那么就可以终止优化。(在250轮之后开始check)

    每50轮check一次优化进展,所以一般是50的倍数

    min_grad_norm如果梯度的范数小于这个阈值,那么停止优化
    metric

    如何计算两个元素i和j之间的距离

    • 如果metric是“precomputed”,那么X是一个距离矩阵
    • 如果metric是一个可调用的函数,那么这个函数会输入X矩阵的两行(i和j元素),然后返回一个value,表示i和j元素的距离
    • 默认情况下,metric是“euclidean”,表示平方欧几里得距离
    metric_params如果metric是一个可调用的函数,那么这里是额外的参数
    init
    • ‘random’——随机初始一个低维embedding
    • 'pca'——使用pca初始化低维embedding
    • 一个ndarray——(n_samples,n_components)维度

    3 使用举例

    1. import numpy as np
    2. from sklearn.manifold import TSNE
    3. X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
    4. tsne=TSNE(n_components=2).fit(X)
    5. ################################# 两种方式找低维嵌入 ###################################
    6. X_embed=tsne.fit_transform(X)
    7. X_embed
    8. '''
    9. array([[-141.00409 , 379.51575 ],
    10. [ 32.38434 , 121.13147 ],
    11. [-225.9871 , -52.276257],
    12. [-399.37567 , 206.10808 ]], dtype=float32)
    13. '''
    14. tsne.embedding_
    15. '''
    16. array([[-141.00409 , 379.51575 ],
    17. [ 32.38434 , 121.13147 ],
    18. [-225.9871 , -52.276257],
    19. [-399.37567 , 206.10808 ]], dtype=float32)
    20. '''
    21. #########################################################################################
    22. tsne.kl_divergence_
    23. #0.048726845532655716
    24. #T-SNE的KL散度
    25. tsne.n_features_in_
    26. #3
    27. #输入的特征个数
    28. tsne.n_iter_
    29. #499 迭代次数

  • 相关阅读:
    使用GBase 8s数据库
    SAP SALV14 增强SALV使SALV支持列级别、行级别、单元格级别的编辑模式切换
    leetcode 42. 接雨水-java
    elementui表格el-table最右侧操作列展示不完全
    大语言模型提示工程简介
    C语言实现基于高效率IP路由查找的内容
    MongoDB深度学习
    React中的路由基础知识(一级路由),5版本的!!!
    Spring Boot 之配置文件
    推荐几个实用的在线小工具~
  • 原文地址:https://blog.csdn.net/qq_40206371/article/details/126265225