You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将K-Means聚类标签与原始数据的Cookie ID、会话ID关联导出

解决K-Means聚类标签与用户ID关联的问题

看起来你已经完成了聚类的核心部分,差的就是最后一步把聚类标签和原始的cookie_id、ses_num对应起来。问题出在你把各列数据拆分存储后,丢失了行与行之间的对应关系——其实只要在读取数据时保留完整的行记录,就能轻松把聚类标签匹配回去。

下面是修改后的完整代码,我会一步步解释关键改动:

import csv
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 1. 读取数据时同时保存完整行和聚类特征
rows = []  # 存储每一行的原始数据(cookie_id、ses_num等)
features = []  # 存储用于聚类的num_material和num_jump

with open('num_jumps_materials_in_network.csv', "r") as file:
    reader = csv.reader(file, delimiter='|', quotechar='"')
    header = next(reader)  # 保存原始表头
    for row in reader:
        rows.append(row)
        # 提取聚类用的特征并转成整数
        num_mat = int(row[2])
        num_jump = int(row[3])
        features.append([num_mat, num_jump])

# 2. 转换特征数组并执行K-Means聚类
X = np.array(features)
kmeans = KMeans(n_clusters=6)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

# 3. 将聚类标签与原始行数据关联
# 构造输出表头(添加cluster列)
output_header = header + ['cluster']
output_rows = []
# 按顺序把每个聚类标签添加到对应行的末尾
for row, cluster_label in zip(rows, y_kmeans):
    output_row = row + [str(cluster_label)]
    output_rows.append(output_row)

# 4. 输出结果(控制台打印 + 写入文件)
# 控制台打印你需要的格式
print('|'.join(output_header))
for row in output_rows:
    print('|'.join(row))

# 写入到新的CSV文件方便后续分析
with open('clustered_network_data.csv', 'w', newline='') as outfile:
    writer = csv.writer(outfile, delimiter='|')
    writer.writerow(output_header)
    writer.writerows(output_rows)

# 保留你原来的可视化代码(可选)
fig, (ax1, ax2) = plt.subplots(2, figsize=(15,15))
fig.suptitle('Clustering users by k-means (k=6)')
ax1.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=30, cmap='gist_rainbow')
ax2.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=30, cmap='gist_rainbow')
ax2.set_xlim([0, 500])
ax2.set_ylim([0, 500])
plt.savefig('k_means_clusters_demo.png')

关键改动说明:

  • 保留完整行记录:用rows列表存储每一行的原始数据,确保后续聚类标签和原始数据的索引完全对应(因为features和rows是按读取顺序一一存储的)。
  • 关联聚类标签:通过zip(rows, y_kmeans)把每一行数据和对应的聚类标签配对,直接添加到行末尾。
  • 输出格式匹配:最终输出的表头和行数据都用|分隔,完全符合你需要的格式。

运行这段代码后,你会在控制台看到类似这样的输出:

cookie_id|ses_num|num_material|num_jump|cluster
2345|1|2|1|0
2345|2|8|12|2
3456|1|3|2|1

同时会生成一个包含聚类结果的CSV文件clustered_network_data.csv,方便后续分析使用。

内容的提问来源于stack exchange,提问作者aysess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:57:53