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

TensorFlow中K-Means Clustering实现:数据集转张量训练方法咨询

TensorFlow K-means 自有数据集转换与训练方法

前置说明

你使用的tf.compat.v1.estimator.experimental.KMeans要求输入为二维浮点型张量,每行对应1个样本,每列对应1个特征维度,且需通过符合estimator规范的输入函数input_fn传入训练流程。

完整操作步骤

1. 自有数据预处理

首先将你的数据集处理为纯数值的二维矩阵:

  • 过滤无需参与聚类的字段(如样本ID、分类标签、时间戳等)
  • 对分类特征做编码转换(如独热编码、标签编码)
  • 补全/删除缺失值
  • 可选做特征标准化/归一化,大幅提升聚类收敛速度和效果

示例代码(以CSV格式数据集为例):

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler

# 加载本地数据集
df = pd.read_csv("你的数据集路径.csv")
# 指定参与聚类的特征列
feature_cols = ["特征1", "特征2", "特征N"]
raw_features = df[feature_cols].values
# 特征标准化
scaler = StandardScaler()
processed_features = scaler.fit_transform(raw_features)

2. 构造符合要求的输入函数input_fn

KMeans estimator不能直接接收张量对象,需通过input_fn返回数据流水线:

import tensorflow as tf

def build_input_fn(features, batch_size=None, epochs=None, shuffle=True):
    # 未指定批量大小时默认用全量数据训练
    if not batch_size:
        batch_size = features.shape[0]
    def input_fn():
        # 将numpy数组转换为tf数据集,指定浮点类型符合KMeans输入要求
        dataset = tf.data.Dataset.from_tensor_slices(features.astype(np.float32))
        if shuffle:
            dataset = dataset.shuffle(features.shape[0])
        dataset = dataset.repeat(epochs)
        dataset = dataset.batch(batch_size)
        # 聚类无标签,直接返回特征即可
        return dataset
    return input_fn

3. 模型训练

# 设定聚类簇数
NUM_CLUSTERS = 5
# 初始化KMeans模型
kmeans = tf.compat.v1.estimator.experimental.KMeans(
    num_clusters=NUM_CLUSTERS,
    # 特征维度和你的输入特征列数对齐
    feature_columns=[tf.feature_column.numeric_column("x", shape=(processed_features.shape[1],))]
)
# 生成训练输入函数
train_input_fn = build_input_fn(processed_features, epochs=10, shuffle=True)
# 启动训练
kmeans.train(input_fn=train_input_fn, steps=1000)

注意事项

  • 输入特征不能包含非数值、空值,否则转换张量时会报错
  • 所有样本的特征数量必须一致,和初始化时指定的特征维度对齐
  • 超大无需全量加载到内存,可以用tf.data.TextLineDataset等接口做流式读取处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:06:04