Кластеризация фрейма данных после объединения x и y - PullRequest
2 голосов
/ 05 августа 2020

У меня есть массивы x и y, x состоит из трех массивов, а y состоит из трех массивов, которые состоят из семи значений

x= [np.array([6.03437288]), np.array([6.39850922]), np.array([6.07835145])]
y= [np.array([[-1.06565856, -0.16222044,  7.85850477, -2.62498475, -0.46315498,
        -0.33087472, -0.1394244 ]]), 
    np.array([[-1.41487104e+00,  5.81421750e-03,  7.92917001e+00,
        -3.37987517e+00,  1.14685839e-01, -2.91779263e-01,
         2.51753851e-01]]), 
    np.array([[-1.56496814,  0.2612637 ,  7.60577761, -3.55727614,  0.18844392,
        -0.75112678, -0.48055978]])]

Я объединяю x и y в один фрейм данных

df = pd.DataFrame({'x': x,'y': y})

, затем я попытался сгруппировать этот фрейм данных по k-medoids

kmedoids = KMedoids(n_clusters=3, random_state=0).fit(df)
cluster_labels = kmedoids.predict(df)

, но столкнулся с этой ошибкой

ValueError: установка элемента массива с последовательностью.

Пытался найти решение этой проблемы, конкретного решения не нашел. любые предложения даже с измененным кодом

1 Ответ

0 голосов
/ 05 августа 2020

Данные массивы x и y, как указано в вопросе:

import pandas as pd
from sklearn_extra.cluster import KMedoids

df = pd.DataFrame({'x': x,'y': y})

Первое объединение x и y фрейма данных в один массив для каждой строки:

df2 = df.apply(lambda r: np.append(r.x, r.y), axis = 1)

Затем создайте один массив X:

X = np.array(df2.values.tolist())

, который можно передать методу кластеризации:

kmedoids = KMedoids(n_clusters=3, random_state=0).fit(X)
cluster_labels = kmedoids.predict(X)

результат кластеризации:

array([2, 0, 1], dtype=int64)
...