我正在做一个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的数据
1条答案
按热度按时间bvhaajcl1#
是的,您从“# From here”注解中提供的代码片段确实正确地将集群标签分配给了每个公司。
相关代码行:
Company = pd.DataFrame(dataset_copy.index)
:这一行从dataset_copy
的索引创建了一个DataFrame
,dataset_copy
可能是公司名称或标识符。cluster_labels = pd.DataFrame(kmeans.labels_)
:在这里,您将k-means算法分配的标签转换为DataFrame
。kmeans.labels_
数组包含分配给X
中每个样本的聚类编号。labels_df = pd.concat([Company, cluster_labels], axis=1)
:这一行将公司名称及其对应的集群标签沿着列(axis=1
)连接起来。这将产生一个新的DataFrame
labels_df
,其中每行包含一个公司名称及其关联的集群标签。因此,
labels_df
中的每个公司都与k-means算法分配的聚类编号相匹配。不过,还有一种更优雅的方式,
dataset_copy.index
和kmeans.labels_
都是一维数组,所以你可以用更优雅的方式创建DataFrame
进行Map:字符串