成分数据分析:用ILR转换提升模型精度
成分数据分析:用ILR转换提升模型精度
在处理成分数据时,传统的线性对数比转换(LCC)方法存在一些局限性。相比之下,等距对数比转换(ILR)可以更好地处理成分数据的比例性质,从而提高机器学习模型的精度。
本文将介绍如何使用Python将成分数据从LCC转换为ILR,并结合模糊系统进行建模和预测。
代码示例pythonimport numpy as npimport pandas as pdfrom sklearn.preprocessing import MinMaxScalerfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_error, r2_scorefrom sklearn.ensemble import RandomForestRegressorfrom sklearn.pipeline import Pipelinefrom sklearn.decomposition import PCAimport 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]])
计算ILR转换ilr_matrix = np.zeros((len(data)-1, len(data[0])-1))for i in range(len(data)-1): ilr_matrix[i] = np.log(data[i+1, :-1] / data[i, :-1])
构建特征矩阵的DataFramedf = pd.DataFrame(ilr_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模型对象 (假设你有一个名为TSK_FS的模糊系统模型)model = TSK_FS(n_cluster=20, C=0.1)
拟合模型model.fit(X_train, y_train)
在测试数据集上进行预测y_pred = model.predict(X_test)
计算CRMSE和CMAPEcrmse = 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:', cmap
原文地址: https://www.cveoy.top/t/topic/RtV 著作权归作者所有。请勿转载和采集!