关于符号回归输出特征值与特征公式不匹配问题,敬请各位优秀的人解答,不吝感激! ~这是我的代码:
import numpy as np
import pandas as pd
from sklearn.preprocessing import MaxAbsScaler, StandardScaler
from joblib import dump
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import Pipeline
from sklearn.model_selection import RandomizedSearchCV
from gplearn.genetic import SymbolicTransformer
from scipy.stats import randint, uniform
from scipy.stats import spearmanr
from sklearn.decomposition import PCA
#省略了一步读取文件的操作
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
# 数据预处理
X_scaler = MaxAbsScaler()
y_scaler = MaxAbsScaler()
uni_X = X_scaler.fit_transform(X)
uni_y = y_scaler.fit_transform(y.reshape(-1, 1)).ravel()
#search.best_params_是我通过随机搜索得到的最佳参数
symbolic_transformer = SymbolicTransformer(
population_size=search.best_params_['symbolic__population_size'],
generations=search.best_params_['symbolic__generations'],
tournament_size=search.best_params_['symbolic__tournament_size'],
function_set=search.best_params_['symbolic__function_set'],
parsimony_coefficient=search.best_params_['symbolic__parsimony_coefficient'],
max_samples=search.best_params_['symbolic__max_samples'],
p_crossover=search.best_params_['symbolic__p_crossover'],
p_subtree_mutation=search.best_params_['symbolic__p_subtree_mutation'],
p_hoist_mutation=search.best_params_['symbolic__p_hoist_mutation'],
p_point_mutation=search.best_params_['symbolic__p_point_mutation'],
n_components=30,
random_state=42
)
new_features = symbolic_transformer.fit_transform(uni_X, uni_y)
formulas = [str(sym) for sym in symbolic_transformer.programs[-1]]
我发现我得到的new_features每一列的值完全一样,而最后一代的formulas公式也与其对应不上,如图:

