连接 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.
我试图寻找解决这个问题的办法,但没有找到具体的解决办法。即使修改了代码也有任何建议
问题中提供的给定数组 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)
我有 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.
我试图寻找解决这个问题的办法,但没有找到具体的解决办法。即使修改了代码也有任何建议
问题中提供的给定数组 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)