连接 x 和 y 后的聚类数据帧

Clustering dataframe after concatenation of x and y

我有 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: setting an array element with a sequence.

我试图寻找解决这个问题的办法,但没有找到具体的解决办法。即使修改了代码也有任何建议

问题中提供的给定数组 xy

import pandas as pd
from sklearn_extra.cluster import KMedoids

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

首先将数据帧的 xy 连接成每行一个数组:

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)