我正在绘制星团的散点图。
与sklearn.cluster.KMeans方法我得到一个和我的2D矩阵X一样长的列表。。。你知道吗
跑步
k = 5
df = pd.read_csv('data_latlong.csv')
lat = df['Lat'].values
long = df['Long'].values
X = np.matrix(list(zip(lat, long)))
kmeans = KMeans(n_clusters=k).fit(X)
plt.figure(figsize=(10, 10))
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.title("n = 5")
plt.show()
提供以下值错误:
ValueError:“c”参数有3909个元素,不能与大小为3909的“x”和大小为3909的“y”一起使用。
有什么建议吗?
谢谢!你知道吗
溶液-正确制备X:
而不是X = np.matrix(list(zip(lat, long)))
我用过X = np.array([lat, long]).T
.T
用于转置(而不是使用zip()
)-然后我得到了X[:, 0]
和X[:, 1]
的正确形状!你知道吗
TL;DR:试试
c=kmeans.labels_.reshape(kmeans.labels_.shape[0])
。这将把标签从(3909,1)数组转换为(3909,1)向量。你知道吗你在sklearn“iris”数据集上所做的一切对我很有用:
注意,我的
clust.labels_
是一个(150,)向量。相反,如果我将其重塑为a(150,1)并尝试传递它,我会得到与您相同的错误:所以我想我们有不同版本的sklearn,我的标签放在向量中,而你的标签放在数组中。解决方法是反其道而行之,并尝试将标签从数组重塑为向量:
另请参见
相关问题 更多 >
编程相关推荐