Python实现基于TSK模糊聚类的预测模型及性能评估
Python实现基于TSK模糊聚类的预测模型及性能评估
本文提供了一段修正后的Python代码,该代码使用TSK模糊聚类方法构建预测模型,并计算了模型的性能指标CRMSE和CMAPE。pythonimport numpy as npimport skfuzzy as fuzz
成分数据矩阵data = np.array([[0.758, 0.171, 0.049, 0.022], [0.758, 0.172, 0.047, 0.023], ... [0.562, 0.179, 0.175, 0.084]])
计算熵序列entropy_sequence = -np.sum(data * np.log2(data), axis=1)
TSK模型参数设置N = 5 # 集群数cntr, u_orig, _, _, _, _, _ = fuzz.cluster.cmeans(data.T, N, 2, error=0.005, maxiter=1000, init=None)
TSK模型预测target_values = np.zeros_like(entropy_sequence)for i in range(len(entropy_sequence)): alphas = u_orig[:, i] # 获取隶属度 rules = np.argmax(u_orig, axis=0)[i] # 获取控制规则 target_values[i] = np.mean(data[i]) + alphas[rules] * (np.std(data[i]) / np.std(entropy_sequence)) * (entropy_sequence[i] - np.mean(entropy_sequence))
CRMSE计算crmse = np.sqrt(np.mean((entropy_sequence - target_values)**2))
CMAPE计算cmape = np.mean(np.abs(entropy_sequence - target_values) / entropy_sequence) * 100
print('CRMSE: ', crmse)print('CMAPE: ', cmape)
代码解读:
- 导入库: 导入NumPy和scikit-fuzzy库。2. 准备数据: 定义成分数据矩阵
data,并计算熵序列entropy_sequence。3. TSK模型训练: - 设置TSK模型参数,如集群数N。 - 使用fuzz.cluster.cmeans()函数进行模糊聚类,获得隶属度矩阵u_orig。4. TSK模型预测: - 遍历每个样本,根据隶属度矩阵和控制规则计算目标值target_values。5. 模型评估: - 计算模型的性能指标CRMSE和CMAPE。
注意事项:
- 请确保已安装NumPy和scikit-fuzzy库。- 代码中使用了数据矩阵的转置
data.T,以确保隶属度矩阵的维度正确。
希望这段代码能够帮助你理解和应用TSK模糊聚类方法进行预测!
原文地址: https://www.cveoy.top/t/topic/cgTC 著作权归作者所有。请勿转载和采集!