在提供的代码中,出现了一个错误。错误提示为 'NameError: name 'drht_matrix' is not defined',这意味着在创建 DataFrame 时,变量 'drht_matrix' 未被定义。为了解决这个问题,你应该在计算 'drht_matrix' 之前定义它。以下是修改后的代码:

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_matrix' 的部分,以及在创建 DataFrame 时使用了该变量。现在你应该可以成功运行代码了。

Python 代码错误:'NameError: name 'drht_matrix' is not defined' 解决方法

原文地址: https://www.cveoy.top/t/topic/Rw6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录