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

求GAFCM的目标函数及基于聚类中心种群的Python实现代码

遗传模糊C均值算法(GAFCM)目标函数及Python实现

一、GAFCM目标函数说明

遗传模糊C均值算法(GAFCM)结合遗传算法全局搜索能力与模糊C均值(FCM)聚类特性,以聚类中心作为种群个体,核心目标函数基于FCM构建,本质是最小化样本到对应聚类中心的加权平方距离之和,权重由样本隶属度决定。

目标函数公式:
$$J(U, V) = \sum_{i=1}^{N} \sum_{k=1}^{C} u_{ik}^m |x_i - v_k|^2$$
其中:

  • $u_{ik}$:样本$x_i$属于聚类$k$的隶属度
  • $m$:模糊指数(通常取2)
  • $v_k$:第$k$个聚类中心
  • $N$:样本总数
  • $C$:聚类类别数

二、Python实现代码

以下是以聚类中心为种群个体的GAFCM目标函数实现,包含距离计算和适应度(目标函数)计算两个核心函数:

import numpy as np

def distfcm_(data, V):
    """
    计算每个聚类中心到所有样本的欧氏距离
    参数:
        data: 样本数据集,形状为(N, D),N为样本数,D为特征维度
        V: 聚类中心集合,形状为(C, D),C为聚类数,D为特征维度
    返回:
        dist: 距离矩阵,形状为(C, N),dist[k][i]代表第k个聚类中心到第i个样本的距离
    """
    dist = np.zeros((V.shape[0], data.shape[0]))
    for k in range(V.shape[0]):
        # 利用numpy自动广播简化计算,适配任意维度样本与聚类中心
        dist[k, :] = np.sqrt(np.sum((data - V[k, :])**2, axis=1))
    return dist

def fitness_function(X, C, c, m, alfa):
    """
    GAFCM的适应度函数(即目标函数),计算加权平方距离之和并返回
    参数:
        X: 样本数据集,形状为(N, D)
        C: 当前种群中的聚类中心个体,形状为(C, D)
        c: 聚类类别数(可根据需求替换内置的cluster_n值)
        m: 模糊指数
        alfa: 预留扩展参数(当前实现未使用,可用于添加正则项等)
    返回:
        obj_fcn: 目标函数值,即加权平方距离总和
    """
    dist = distfcm_(X, C)
    cluster_n = 3
    expo = m
    # 计算隶属度矩阵U
    tmp = dist ** (2 / -(expo - 1))
    U = tmp / np.sum(tmp, axis=0)  # 按列归一化得到隶属度
    mf = U ** expo  # 隶属度的m次幂
    # 计算最终目标函数值
    obj_fcn = np.sum((dist ** 2) * mf)
    return obj_fcn

代码优化说明

  • 优化了原代码的广播逻辑,移除手动创建的固定维度ones((150,4)),利用numpy自动广播特性适配任意维度的样本与聚类中心。
  • 为函数添加清晰注释,明确参数、返回值含义,提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:00:12