使用TSK模型进行熵序列预测:Python代码示例
以下代码使用TSK模型对熵序列进行预测,并计算CRMSE和CMAPE指标,评估模型的预测效果。
import numpy as np
import skfuzzy as fuzz
# 成分数据矩阵
data = np.array([[0.758, 0.171, 0.049, 0.022],
[0.758, 0.172, 0.047, 0.023],
[0.762, 0.17, 0.047, 0.021],
[0.762, 0.17, 0.047, 0.021],
[0.76, 0.171, 0.047, 0.021],
[0.762, 0.166, 0.051, 0.021],
[0.761, 0.171, 0.048, 0.02],
[0.757, 0.175, 0.049, 0.019],
[0.747, 0.182, 0.052, 0.019],
[0.75, 0.174, 0.057, 0.019],
[0.746, 0.175, 0.061, 0.018],
[0.747, 0.18, 0.055, 0.018],
[0.715, 0.204, 0.062, 0.017],
[0.696, 0.215, 0.067, 0.022],
[0.68, 0.232, 0.066, 0.022],
[0.661, 0.246, 0.068, 0.025],
[0.653, 0.243, 0.077, 0.027],
[0.661, 0.234, 0.078, 0.027],
[0.702, 0.201, 0.074, 0.023],
[0.702, 0.199, 0.076, 0.023],
[0.724, 0.178, 0.074, 0.024],
[0.724, 0.175, 0.074, 0.027],
[0.725, 0.17, 0.075, 0.03],
[0.715, 0.167, 0.084, 0.034],
[0.716, 0.164, 0.085, 0.035],
[0.692, 0.174, 0.094, 0.04],
[0.702, 0.168, 0.084, 0.046],
[0.685, 0.17, 0.097, 0.048],
[0.674, 0.171, 0.102, 0.053],
[0.658, 0.173, 0.113, 0.056],
[0.638, 0.184, 0.12, 0.058],
[0.622, 0.187, 0.13, 0.061],
[0.606, 0.189, 0.136, 0.069],
[0.59, 0.189, 0.145, 0.076],
[0.577, 0.19, 0.153, 0.08],
[0.569, 0.188, 0.159, 0.084],
[0.559, 0.186, 0.167, 0.088],
[0.562, 0.179, 0.175, 0.084]])
# 计算熵序列
entropy_sequence = -np.sum(data * np.log2(data), axis=1)
# TSK模型参数设置
N = 5 # 集群数
cntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(entropy_sequence.reshape(-1, 1), 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[:, i] # 获取隶属度
rules = np.argmax(u, 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库,并运行上述代码。它将会输出计算得到的CRMSE和CMAPE的结果。
**注意:**该代码示例中的成分数据矩阵只是一个示例,您需要根据自己的实际数据进行修改。
原文地址: https://www.cveoy.top/t/topic/cgCi 著作权归作者所有。请勿转载和采集!