zoukankan      html  css  js  c++  java
  • 利用Kemeans进行聚类及TSNE降维可视化

    一、kmeans聚类

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns 
    import re
    pd.set_option('max_columns', 600)
    pd.set_option('max_rows', 500)
    from sklearn.manifold import TSNE
    from scipy.cluster.vq import vq, kmeans, whiten
    
    a = np.random.multivariate_normal([0, 0], [[4, 1], [1, 4]], size=10)
    b = np.random.multivariate_normal([30, 10],
                                      [[10, 2], [2, 1]],
                                      size=10)
    
    features=np.concatenate((a, b))
    #白化处理
    whitened = whiten(features)
    #k-means聚类
    codebook, distortion = kmeans(whitened, 3)# 返回聚类中心点和每个类的平均误差
    #返回每行数据聚类的编号及偏差
    codes, error = vq(whitened, codebook)
    #将聚类结果形成dataframe
    df=pd.DataFrame(features)
    df['code']=codes
    
    #可视化展现聚类效果
    d=df.loc[df.code==0,:]
    plt.plot(d[0],d[1],'r.')
    d=df.loc[df.code==1,:]
    plt.plot(d[0],d[1],'go')
    d=df.loc[df.code==2,:]
    plt.plot(d[0],d[1],'b*')
    plt.show()

    二、TNSE

    TSNE提供了一种有效的降维方式,可以对高于2维数据的聚类结果以二维的方式展示出来。

    #!/usr/bin/env python
    #-- coding:utf-8 --
    
    #接kmeans.py
    #k_means.py中得到三维规范化数据data_zs;
    #r增加了最后一列,列索引为“聚类类别”
    
    from sklearn.manifold import TSNE
    
    tsne=TSNE()
    tsne.fit_transform(data_zs)  #进行数据降维,降成两维
    #a=tsne.fit_transform(data_zs) #a是一个array,a相当于下面的tsne_embedding
    tsne=pd.DataFrame(tsne.embedding_,index=data_zs.index) #转换数据格式
    
    import matplotlib.pyplot as plt 
    
    d=tsne[r[u'聚类类别']==0]
    plt.plot(d[0],d[1],'r.')
    
    d=tsne[r[u'聚类类别']==1]
    plt.plot(d[0],d[1],'go')
    
    d=tsne[r[u'聚类类别']==2]
    plt.plot(d[0],d[1],'b*')
    
    plt.show()

  • 相关阅读:
    shell 环境变量
    websphere 进程
    shell 安装使用VIM
    shell seq 用法
    shell 变量自增
    WebService学习笔记系列(二)
    WebService学习笔记系列(一)
    类加载器及其委托机制的深入分析
    Java工具类:给程序增加版权信息
    QQ互联API接口失效,第三方网站的死穴
  • 原文地址:https://www.cnblogs.com/gczr/p/14613087.html
Copyright © 2011-2022 走看看