/ / виберіть n кластер для хімічного відбитка пальця - python, cluster-аналіз, rdkit

вибирати n скупчення для хімічного відбитка пальців - python, кластерний аналіз, rdkit

Здрастуйте, я намагаюся вкласти хімічний відбиток

Я використовую rdkit, який забезпечує ієрархічнуметод кластера, проблема полягає в тому, що я знаю, скільки кластерів я хочу мати 13 кластерів, тому я використовую метод kmean, заснований на оцінці подібності tanimoto з scikit

ось мій код:

smiles = []
molFin = []
fps = []
np_fps = []

#mol["idx"] contain the name of the molecules
for x in mol["idx"]:
res = cs.search(x)
#get the smiles code of a molecule
smi = res[0].smiles

#get the fingerprint of the molecule
fp = Chem.MolFromSmiles(str(smi))
fp = FingerprintMols.FingerprintMol(fp)
fps.append(fp)


#compute the similarity score (end up with a cross molecule matrix where each occurence correspond to the taminoto score)

dists = []
nfps = len(fps)
for i in range(0,nfps):
sims = DataStructs.BulkTanimotoSimilarity(fps[i],fps)
dists.append(sims)

#store the value on a data frame and apply kmean
mol_dist = pd.DataFrame(dists)

k_means = cluster.KMeans(n_clusters=13)
k1 = k_means.fit_predict(mol_dist)
mol["cluster"]  = k1

#get the result
final = mol[["idx","cluster"]]

Схоже, кластеризація працює певним чином, але я поняття не маю, як ми робимо кластеризацію для хімічного відбитка пальців, чи застосовуватимемо алгоритм кластеризації безпосередньо на них, наче відбитки пальців?

Відповіді:

0 для відповіді № 1

Я думаю, що проблема кластеризації полягає в тому, як вибрати відповідний k. Ваша проблема може бути вирішена наступним чином:

  1. визначити відповідне число k-кластерів. Ви можете використовувати деякі методи, такі як лікоть, ... перейдіть за посиланням нижче - https://datasciencelab.wordpress.com/2013/12/27/finding-the-k-in-k-means-clustering

  2. Маючи k-номери, ви вибираєте відповідні функції разом із отриманим k-кластером, а потім кластеризуєте свій набір даних та оцінюєте.

З повагою !