Я кластеризовал некоторые 3D-координаты, используя ДБСКАН (используя python). Я смог сгруппировать его в разные кластеры. Но теперь я хочу разделить координаты, принадлежащие каждому из этих кластеров, и распечатать эти координаты в разных текстовых файлах. Может ли кто-нибудь помочь мне, как это сделать.
Я уже пробовал группировать в отдельные кластеры и получать координаты каждого кластера. совершенно другие коды также будут в порядке
Я не могу опубликовать свои коды из-за какой-то проблемы. Но я опубликую команды, которые я использовал, чтобы сделать свой. (Это 2D)
from sklearn.cluster import DBSCAN
import numpy as np
data = np.random.rand(500,3)
db = DBSCAN(eps=0.12, min_samples=1).fit(data)
labels = db.labels_
from collections import Counter
Counter(labels)
Если кластеры выглядят следующим образом .Counter({0: 34, 1: , 2: 25, 3: 10, -1: 3}), я хочу получить координаты для каждой из этих точек в каждом кластере. Пример: - для 1-й кластер (для кластера «0»), я хочу напечатать координаты 34 точек, принадлежащих 1-му кластеру, в отдельном текстовом файле, как показано ниже. /33,11 15,87 13,73/-26,49 0,16 -23,98/37,06 2,04 -15,55/-40,18 3,20 -15,02/39,40 3,04 15,67 /38,75 2,71 -15,41. Я хочу распечатать координаты точек, принадлежащих каждому кластеру в текстовых файлах. Помогите, пожалуйста. я в этом.
14,072 -13,749 -32,760 -37,100 1,953 -15,720 -32,143 12,990 -13,488 -41,077 4,651 -15,651 -34,219 13,611 -13,090 -33,117 15,875 -13,738 -26,494 0,165 -23,985 -37,069 2,042 -15,559 -40,187 3,209 -15,021 -39,407 3,043 -15,675 -38,752 2,719 -15,411 Таким образом, я хочу распечатать координаты точек, принадлежащих каждому кластеру, в отдельных текстовых файлах. @sentence, пожалуйста, прочтите также комментарий выше. Места не хватило, чтобы хорошо показать корридиантес. Я хочу так в отдельных текстовых файлах для каждого кластера. Надеюсь, ты меня понял
@предложение, пожалуйста, дайте мне знать. Если вы не получили мой вопрос
Посмотрим, получу ли я это. У вас есть набор точек, вы их группируете и хотите хранить в файлах в соответствии с их кластерным назначением. Это правильно? Если да, то какой файл вы хотите использовать? csv, txt, пкл?
Да, это так. Я хочу в текстовом файле. Я хочу хранить координаты точек для каждого кластера в разных текстовых файлах. означает, что один файл будет содержать координаты x, y, z, принадлежащие первому кластеру. Следующий будет содержать координаты 2-го кластера. Так.
Чтобы хранить образцы (numpy.array
) в файлах .txt
, вы должны сначала разделить свои образцы на разделы на основе назначения кластера, а затем сохранить полученные разделы.
from collections import defaultdict
clusters = defaultdict(list)
for i,c in enumerate(db.labels_):
clusters[c].append(data[i])
for k,v in clusters.items():
np.savetxt('cluster{}.txt'.format(k), v, delimiter = ",", fmt='%s')
и вы получаете 68 текстовых файлов, каждый из которых содержит координаты одного или нескольких образцов из вашего набора данных.
Это именно то, что я хотел. Но я хочу что-то напечатать перед тремя координатами. я могу сделать это в этом? Я хочу, чтобы это было напечатано так: «ATOM 1 O HOH X 1 -37,100 1,953 -15,720 1,00 43,38 O», как файл PDB в белках. Если 2 цифры могут увеличиваться с каждой строкой, это здорово. Большое спасибо.
Я опубликовал новый вопрос с заголовком «Разделение координат для каждого кластера в DBSCAN с использованием python». не могли бы вы проверить это. Спасибо
Пожалуйста, приведите пример результата, которого вы хотите достичь.