用 DRHT 转换成分数据并使用 TSK 模型进行预测
要将成分数据的转化方法改成 DRHT,可以按照以下步骤进行修改:
- 导入所需的库:
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import Pipeline
from sklearn.decomposition import PCA
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.559, 0.186, 0.167, 0.088],
[0.562, 0.179, 0.175, 0.084]])
- 计算 DRHT 转换:
drht_matrix = np.zeros((len(data)-1, len(data[0])-1))
for i in range(len(data)-1):
drht_matrix[i] = data[i+1, :-1] - data[i, :-1]
- 构建特征矩阵的 DataFrame:
df = pd.DataFrame(drht_matrix, columns=['Coal', 'Petroleum', 'Others'])
- 定义目标变量:
target = data[1:, -1] # 使用最后一列作为目标变量
- 数据归一化:
scaler = MinMaxScaler()
df_scaled = scaler.fit_transform(df)
- 划分训练集和测试集:
X_train, X_test, y_train, y_test = train_test_split(df_scaled, target, test_size=0.13, random_state=42)
- 创建 TSK 模型对象:
model = TSK_FS(n_cluster=20, C=0.1)
- 拟合模型:
model.fit(X_train, y_train)
- 在测试数据集上进行预测:
y_pred = model.predict(X_test)
- 计算 CRMSE 和 CMAPE:
crmse = np.sqrt(mean_squared_error(y_test, y_pred))
cmape = np.mean(np.abs((y_test - y_pred) / y_test)) * 100
print('CRMSE:', crmse)
print('CMAPE:', cmape)
这样,你就将成分数据的转化方法改成了 DRHT。请注意,以上代码中的'TSK_FS'是你需要根据你的具体需求替换为正确的模型名称。
原文地址: https://www.cveoy.top/t/topic/RvV 著作权归作者所有。请勿转载和采集!