Switch to unified view

a b/python-scripts/runSingleCluster.py
1
import numpy as np
2
from sklearn.cluster import KMeans
3
import numpy as np
4
from sklearn.metrics import silhouette_score, davies_bouldin_score
5
from sklearn.preprocessing import normalize
6
7
8
9
# data_names = ['VAE_FCTAE_EM','AE_FAETC_EM', 'AE_FCTAE_EM', 'DAE_FAETC_EM', 'DAE_FCTAE_EM', 'LSTMVAE_FCTAE_EM']
10
data_names = ['SVAE_FCTAE_EM','MMDVAE_EM']
11
for data_name in data_names:
12
    # encoded_factors=np.loadtxt('./result/cancer_do_cluster/{f}/{d}.txt'.format(f=f, d=data_name))
13
    encoded_factors=np.loadtxt('./result/single-cell/{d}.txt'.format(d=data_name))
14
    savepath='./result/single-cell/{d}_cluster_result.txt'.format(d=data_name)
15
    with open(savepath, 'w') as f2:
16
        print('method:{d}\n'.format(d=data_name))
17
        f2.write('method:{d}\n'.format(d=data_name))
18
        for typenum in range(2,7,1):
19
            all_silhouette=[]
20
            all_DBI=[]
21
            for i in range(100):
22
                clf = KMeans(n_clusters=typenum)
23
                clf.fit(encoded_factors)  # 模型训练
24
                labels = clf.labels_
25
                silhouetteScore = silhouette_score(encoded_factors, labels, metric='euclidean')
26
                all_silhouette.append(silhouetteScore)
27
                davies_bouldinScore = davies_bouldin_score(encoded_factors, labels)
28
                all_DBI.append(davies_bouldinScore)
29
            avg_silhouette=np.mean(all_silhouette)
30
            avg_DBI=np.mean(all_DBI)
31
32
            # print("silhouetteScore:", avg_silhouette)
33
            # print("davies_bouldinScore:", avg_DBI)
34
            print('k:{k}\nsilhouetteScore:{s}\ndavies_bouldinScore:{d}\n'.format(k=typenum, s=avg_silhouette,d=avg_DBI))
35
            f2.write('*'*20+'\n')
36
            f2.write('k:{k}\nsilhouetteScore:{s}\ndavies_bouldinScore:{d}\n'.format(k=typenum, s=avg_silhouette,d=avg_DBI))
37
38
39
#直接拼接
40
# files = ['aml', 'breast', 'colon', 'kidney', 'liver', 'lung', 'melanoma', 'ovarian', 'sarcoma','gbm']
41
# for f in files:
42
#     datapath='./data/cancer_do_cluster/{f}'.format(f=f)
43
#     omics1 = np.loadtxt('{}/log_exp_omics.txt'.format(datapath))
44
#     omics1 = np.transpose(omics1)
45
#     omics1 = normalize(omics1, axis=0, norm='max')
46
#     print(omics1.shape)
47
#     omics2 = np.loadtxt('{}/log_mirna_omics.txt'.format(datapath))
48
#     omics2 = np.transpose(omics2)
49
#     omics2 = normalize(omics2, axis=0, norm='max')
50
#     print(omics2.shape)
51
#     omics3 = np.loadtxt('{}/methy_omics.txt'.format(datapath))
52
#     omics3 = np.transpose(omics3)
53
#     omics3 = normalize(omics3, axis=0, norm='max')
54
#     print(omics3.shape)
55
#     omics = np.concatenate((omics1, omics2, omics3), axis=1)
56
#     encoded_factors=omics
57
#     savepath='./result/cancer_do_cluster/{f}/Contact_cluster_result.txt'.format(f=f)
58
#     with open(savepath, 'w') as f2:
59
#         print('cancer:{f}\nmethod:直接拼接'.format(f=f))
60
#         f2.write('cancer:{f}\nmethod:直接拼接\n'.format(f=f))
61
#         for typenum in range(2,7,1):
62
#             all_silhouette=[]
63
#             all_DBI=[]
64
#             for i in range(100):
65
#                 clf = KMeans(n_clusters=typenum)
66
#                 clf.fit(encoded_factors)  # 模型训练
67
#                 labels = clf.labels_
68
#                 silhouetteScore = silhouette_score(encoded_factors, labels, metric='euclidean')
69
#                 all_silhouette.append(silhouetteScore)
70
#                 davies_bouldinScore = davies_bouldin_score(encoded_factors, labels)
71
#                 all_DBI.append(davies_bouldinScore)
72
#             avg_silhouette=np.mean(all_silhouette)
73
#             avg_DBI=np.mean(all_DBI)
74
75
#             # print("silhouetteScore:", avg_silhouette)
76
#             # print("davies_bouldinScore:", avg_DBI)
77
#             print('k:{k}\nsilhouetteScore:{s}\ndavies_bouldinScore:{d}\n'.format(k=typenum, s=avg_silhouette,d=avg_DBI))
78
#             f2.write('zly'*20+'\n')
79
#             f2.write('k:{k}\nsilhouetteScore:{s}\ndavies_bouldinScore:{d}\n'.format(k=typenum, s=avg_silhouette,d=avg_DBI))            
80