Вывод кластеров правильно — Python

Итак, я пытаюсь визуализировать кластеры и точки в Dash, но у меня возникают проблемы с побочной функцией. Вместо того, чтобы давать мне все кластеры и наборы точек, я получаю только первое из каждого измерения. И я знать это должно быть существенная ошибка новичка, но мой мозг отказывается выбираться из той ямы, которую он сам выкопал.

Итак, что я делаю неправильно здесь?

def make_dataset(data, clusters):
# Check if there are clusters to plot
if len(clusters) <= 0:
    return

ndim = data.shape[1] #number of features
nrecords = data.shape[0] #data points
data_extent = [[min(data[:, x]), max(data[:, x])] for x in range(0, ndim)]

# Plot clusters in each dimension
for dim in range(1, ndim + 1):
    # Get all clusters in 'dim' dimension(s)
    clusters_in_dim = []
    for c in clusters:
        if len(c.dimensions) == dim:
            clusters_in_dim.append(c)

    # Check if there are clusters in 'dim' dimension(s)
    dim_nclusters = len(clusters_in_dim)
    if dim_nclusters <= 0:
        continue

    # Plot all data points as black points
    if dim == 1:
        xnoise = data[:, 0] #label = noise
        ynoise = [0] * nrecords #label = noise
        ptx1 = [0] * nrecords
        pty1 = data[:, 1]

    elif dim == 2:
        ptx2 = data[:, 0] #label = noise
        pty2 = data[:, 1] #label = noise

    # For all clusters in 'dim' dimension(s)
    for i, c in enumerate(clusters_in_dim):
        c_size = len(c.data_point_ids)
        c_attrs = list(c.dimensions)
        c_elems = list(c.data_point_ids)

        if dim == 1:  # one-dimensional clusters
            cx1 = data[c_elems, 0] if c_attrs[0] == 0 else [0] * c_size
            cy1 = data[c_elems, 1] if c_attrs[0] == 1 else [0] * c_size

        elif dim == 2:  # two-dimensional clusters
            cx2 = data[c_elems, c_attrs[0]]
            cy2 = data[c_elems, c_attrs[1]]

return xnoise, ynoise, ptx1, pty1, ptx2, pty2, cx1, cy1, cx2, cy2

моя догадка состоит в том, чтобы сохранить переменные x и y в виде массивов, но буду ли я перебирать их, например:

    for x in range(len(clusters)):
    ptx1.append(clusters[x])

это вообще имеет смысл? для этого лучше использовать наборы или списки, так как я должен иметь доступ к каждому кластеру отдельно для визуализации

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
30
1

Ответы 1

Вы перезапись ваши переменные.

Таким образом, возвращается только последнее значение.

Другие вопросы по теме