我很难理解如何开始解决这个问题。我有一个矩阵,包含569行,每行代表一个数据样本,30列代表每个样本的特征。我的直觉是绘制每一行,看看是否有聚类存在,但我在一个散点图上无法绘制超过两行。
我已经花了几个小时查看了教程,但无法理解如何将它们应用到我的数据上。我知道散点图需要两个向量作为参数,那么我怎么可能绘制所有569个样本来进行聚类呢?我是不是遗漏了什么基本的东西?
#our_data是一个大小为569 x 30的二维矩阵 plt.scatter(our_data[0,:], our_data[1,:], s = 40)
我的目标是开始对569个样本进行K-means聚类。
回答:
由于你有一个30维的特征空间,将这样的数据绘制在二维空间(即画布上)是困难的。在这种情况下,通常先应用降维技术。这可以帮助理解数据结构。你可以尝试先应用主成分分析(PCA),例如:
#your_matrix.shape = (569, 30)from sklearn.decomposition import PCApca = PCA(n_components=2)projected_data = pca.fit_transform(your_matrix)plt.scatter(projected_data[:,0], projected_data[:, 1]) # 这可能对理解数据结构非常有帮助... plt.show()
你还可以查看其他(包括非线性)的降维技术,例如T-sne。
然后你可以应用K-means或其他方法;或者对投影后的数据应用K-means。