zoukankan      html  css  js  c++  java
  • TSNE-图像二分类可视化

    import numpy as np
    import sklearn
    from sklearn.manifold import TSNE
    import cv2
    # Random state.
    RS = 20150101
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib.patheffects as PathEffects
    import matplotlib
    from numpy import *
    
    # We import seaborn to make nice plots.
    import seaborn as sns
    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    
    sns.set_style('darkgrid')
    sns.set_palette('muted')
    sns.set_context("notebook", font_scale=1.5,
                    rc={"lines.linewidth": 2.5})
    
    P_dataset = []
    P_lable = []
    N_dataset = []
    N_lable = []
    # this function is for read image,the input is directory name
    def read_N_directory(directory_name):
        # this loop is for read each image in this foder,directory_name is the foder name with images.
        for filename in os.listdir(r"./"+directory_name):
            #print(filename) #just for test
            #img is used to store the image data 
            image = cv2.imread(directory_name + "/" + filename)
          #  print("image=",image)
            image = cv2.resize(image,(100,100),interpolation=cv2.INTER_CUBIC)
            img = image.flatten()
        #    print(img.shape)
            N_dataset.append(img)
            N_img_dataset = np.matrix(N_dataset)
            lable0 = 0
            N_lable.append(lable0)
            N_number = np.matrix(N_lable)
        #print("N_img=",N_img_dataset)    
       # print("N_lable=",N_lable)    
        print("N",N_number.shape) 
      #  print("N=",N_img_dataset)
        return N_img_dataset,N_lable
    
         
    def read_P_directory(directory_name):
        # this loop is for read each image in this foder,directory_name is the foder name with images.
        for filename in os.listdir(r"./"+directory_name ):
            #print(filename) #just for test
            #img is used to store the image data 
            image = cv2.imread(directory_name + "/" + filename)
         #   ResizeImage(image,img,46,46,type)
            #image = image.resize((46, 46),Image.ANTIALIAS)
            image = cv2.resize(image,(100,100),interpolation=cv2.INTER_CUBIC)
           # print(image.shape)
        #    np.savetxt("./datasets1.tsv",image,delimiter=',')
            img = image.flatten()
           # print(img.shape)
            P_dataset.append(img)   
           # print("dataset",dataset)       
            P_img_dataset = np.matrix(P_dataset)
            lable1 = 1
            P_lable.append(lable1)    
            P_number = np.matrix(P_lable)
       # print("P_lable=",P_lable) 
        print("P",P_number.shape)
        #print("P=",P_img_dataset)
        return P_img_dataset,P_lable
    
    def scatter(x, colors):
        # We choose a color palette with seaborn.
        palette = np.array(sns.color_palette("hls", 10))
    
        # We create a scatter plot.
        f = plt.figure(figsize=(8, 8))
        ax = plt.subplot(aspect='equal')
        sc = ax.scatter(x[:,0], x[:,1], lw=0, s=40,
                        c=palette[colors.astype(np.int)])
        plt.xlim(-25, 25)
        plt.ylim(-25, 25)
        ax.axis('off')
        ax.axis('tight')
        # We add the labels for each digit.
        txts = []
        for i in range(10):
            # Position of each label.
            xtext, ytext = np.median(x[colors == i, :], axis=0)
            txt = ax.text(xtext, ytext, str(i), fontsize=24)
            txt.set_path_effects([
                PathEffects.Stroke(linewidth=5, foreground="w"),
                PathEffects.Normal()])
            txts.append(txt)
    
        return f, ax, sc, txts
    
    if __name__=="__main__":
      N_img_dataset,N_lable = read_N_directory("temp_cells_1030_org/side200/1") 
      P_img_dataset,P_lable = read_P_directory("temp_cells_1030_org/side200/7") 
      dataset = np.vstack((N_img_dataset,P_img_dataset))
      lable = np.hstack((N_lable,P_lable))
      print("datasets=",dataset)
    #  print("lable=",lable)
    #  np.savetxt("./datasets.tsv",dataset,delimiter=',')
    #  return dataset,lable
     # dataset,lable = main()
      digits_proj = TSNE(random_state=RS).fit_transform(dataset)
    #print("digits_proj",digits_proj)
      scatter(digits_proj, lable)
      plt.savefig('side200.png', dpi=120)
      plt.show()
    

      

  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/niulang/p/11765346.html
Copyright © 2011-2022 走看看