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

Python中能否依据其他三列特征对city列城市数据进行聚类?

城市聚类可行性及实现方案

完全可以基于cat1、cat2、cat3三列特征对城市做聚类,这个思路是合理的,具体实现逻辑如下:

核心逻辑

聚类的核心是给每个城市生成对应的特征向量,再基于向量相似度做聚合。因为原始数据集里同一城市大概率对应多条记录,所以第一步需要先按城市维度做特征聚合。

实现步骤

  • 第一步:按city字段分组聚合,生成每个城市的特征向量
    根据cat1/cat2/cat3的字段类型(分类/数值)选择对应的聚合方式,示例如下:
    import pandas as pd
    # 聚合生成城市维度特征,可根据实际字段类型调整聚合规则
    city_feature = df.groupby('city').agg(
        # 分类特征可以算唯一值数量、众数、各分类占比等
        cat1_unique_cnt = ('cat1', 'nunique'),
        cat1_top = ('cat1', lambda x: x.mode()[0] if not x.mode().empty else None),
        # 数值特征可以算均值、分位数、方差等
        cat2_mean = ('cat2', 'mean'),
        cat3_std = ('cat3', 'std'),
        record_cnt = ('city', 'count')
    ).reset_index()
    
  • 第二步:特征预处理
    对分类特征做编码(独热编码/标签编码均可),数值特征做标准化,消除不同特征量级对聚类结果的影响:
    from sklearn.preprocessing import StandardScaler
    # 去掉城市名列,只保留特征列做预处理
    X = city_feature.drop('city', axis=1)
    # 分类特征编码步骤此处省略,根据实际字段类型补充
    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(X)
    
  • 第三步:执行聚类
    选择适配的聚类算法(K-Means、DBSCAN、层次聚类等),根据业务需求确定聚类数量即可:
    from sklearn.cluster import KMeans
    # 示例用K-Means聚成3类,可自行调整参数
    cluster = KMeans(n_clusters=3, random_state=42)
    city_feature['cluster'] = cluster.fit_predict(X_scaled)
    

执行完成后,city_feature表中就包含了每个城市对应的聚类标签。

注意事项

  • 聚合规则需要和特征的业务含义匹配,避免生成无意义的特征导致聚类结果失真
  • 聚类完成后建议做效果校验,可查看同类城市的cat1/cat2/cat3特征分布是否具有一致性,再根据校验结果调整特征或聚类参数

内容的提问来源于stack exchange,提问作者a.programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:00:01