• sklearn.manifold.TSNE可视化高位数据工具


    manifold learning流形学习

    多维度数据集非常难于可视化。反而2维或者3维数据很容易通过图表展示数据本身的内部结构,等价的高维绘图就远没有那么直观了。为了实现数据集结构的可视化,数据的维度必须通过某种方式降维。

    最简单的降维手段是数据的随机投影。虽然这种方式实现一定程度的数据结构可视化,但是选择的随意性导致结果远不如意。在随机投影中,更有趣的结构容易丢失。

    ​ 为了解决这种问题,人们设计了一系列监督或非监督的线性降维框架,例如Principal Component Analysis(PCA,主成分分析)、Independent Component Analysis(独立成分分析)、 Linear Discriminant Analysis(线性判别分析)…这些算法定义了特殊的评估量用于多维数据选择有趣的线性投影,这些手段是有效的,不过经常会错失数据结构中的非线性项。

    ​ Manifold Learing是一种非线性降维的手段,可以看作一种生成类似PCA的线性框架,不同的是可以对数据中的非线性结构敏感。虽然存在监督变体,但是典型的流式学习问题是非监督的:它从数据本身学习高维结构,不需要使用既定的分类

    t-SNE 

    是可视化高维数据的工具。它将数据点之间的相似性转换为联合概率,并尝试最小化低维嵌入和高维数据的联合概率之间的Kullback-Leibler差异。t-SNE的成本函数不是凸的,即使用不同的初始化,我们可以获得不同的结果。

    如果特征的数量非常多,强烈建议使用另一种降维方法(例如,对于密集数据使用PCA或对于稀疏数据使用TruncatedSVD)将尺寸数量减少到合理的数量(例如50个)。这将抑制一些噪声并加快样本之间成对距离的计算。有关更多技巧

    用法

    反正只需要了解这个函数的大概用途是将特征弄成一坨,变成一个变量,然后和聚类后的label画图就OK了,具体原理细节,暂时不深究

    class sklearn.manifold.TSNE(n_components=2, *, perplexity=30.0, early_exaggeration=12.0, learning_rate=200.0, 
    n_iter=1000, n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', init='random', verbose=0,
    random_state=None, method='barnes_hut', angle=0.5, n_jobs=None)

    参数什么的请参考官方文档:https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html

    这里主要看一些怎么使用

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    
    X=load_iris().data
    kmeans = KMeans(n_clusters=3,random_state=0)
    kmeans.fit(X)
    
    labels = kmeans.labels_
    labels = pd.DataFrame(labels,columns=['labels'])
    X=pd.DataFrame(X)
    X.insert(4,'labels',labels)
    
    from sklearn.manifold import TSNE
    tsne = TSNE()
    a = tsne.fit_transform(X)
    liris = pd.DataFrame(a,index=X.index)
    
    d1 = liris[X['labels']==0]
    #plt.plot(d1[0],d1[1],'r.')
    d2 = liris[X['labels']==1]
    #plt.plot(d2[0],d2[1],'go')
    d3 = liris[X['labels']==2]
    #plt.plot(d3[0],d3[1],'b*')
    plt.plot(d1[0],d1[1],'r.',d2[0],d2[1],'go',d3[0],d3[1],'b*')

  • 相关阅读:
    团队绩效打分
    软件对标分析
    目前校园百晓生APP与CSDN软件的对比
    Alpha版
    团队项目第一阶段成果展示
    意见汇总
    团队第一阶段冲刺评价
    冲刺(十)
    【WPF学习】第五十八章 理解逻辑树和可视化树
    【WPF学习】第五十七章 使用代码创建故事板
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/14072237.html
Copyright © 2020-2023  润新知