pandas 如何在k-means聚类中匹配标签及其聚类点?

n1bvdmb6  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(82)

我正在做一个k-means聚类,我想确保标签与正确的聚类编号相匹配。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import pairwise_distances_argmin_min

dataset = pd.read_csv('ratio.csv', index_col=0).T
dataset_copy = dataset
dataset_copy = dataset_copy.dropna()

X = dataset_copy.iloc[:, [0, 1, 2, 3]].values

kmeans = KMeans(n_clusters=4, init='k-means++', random_state=42)
y_kmeans = kmeans.fit_predict(X)

# From here
Company = pd.DataFrame(dataset_copy.index)
cluster_labels = pd.DataFrame(kmeans.labels_)

labels_df = pd.concat([Company, cluster_labels],axis = 1)

字符串

From here中的代码是否为群集编号分配了正确的标签?

我在代码中使用的数据集的一部分:
x1c 0d1x的数据

bvhaajcl

bvhaajcl1#

是的,您从“# From here”注解中提供的代码片段确实正确地将集群标签分配给了每个公司。
相关代码行:
Company = pd.DataFrame(dataset_copy.index):这一行从dataset_copy的索引创建了一个DataFramedataset_copy可能是公司名称或标识符。
cluster_labels = pd.DataFrame(kmeans.labels_):在这里,您将k-means算法分配的标签转换为DataFramekmeans.labels_数组包含分配给X中每个样本的聚类编号。
labels_df = pd.concat([Company, cluster_labels], axis=1):这一行将公司名称及其对应的集群标签沿着列(axis=1)连接起来。这将产生一个新的DataFramelabels_df,其中每行包含一个公司名称及其关联的集群标签。
因此,labels_df中的每个公司都与k-means算法分配的聚类编号相匹配。

不过,还有一种更优雅的方式,dataset_copy.indexkmeans.labels_都是一维数组,所以你可以用更优雅的方式创建DataFrame进行Map:

labels_df = pd.DataFrame({'Company': dataset_copy.index, 'Cluster': kmeans.labels_})

字符串

相关问题