给定的特征/列名与拟合期间给定数据的名称不匹配.错误



我写了以下代码,它给了我这个错误:

"给定的特征/列名与给定数据的名称不匹配在贴合过程中">

训练和预测数据具有相同的功能。

df_train = data_preprocessing(df_train)
#Split X and Y
X_train = df_train.drop(target_columns,axis=1)
y_train = df_train[target_columns]
#Create a boolean mask for categorical columns
categorical_columns = X_train.columns[X_train.dtypes == 'O'].tolist()
# Create a boolean mask for numerical columns
numerical_columns = X_train.columns[X_train.dtypes != 'O'].tolist()
# Scaling & Encoding objects
numeric_transformer = Pipeline(steps=[('scaler', StandardScaler())])
categorical_transformer = OneHotEncoder(handle_unknown='ignore')
col_transformers = ColumnTransformer(
# name, transformer itself, columns to apply
transformers=[("scaler_onestep", numeric_transformer, numerical_columns),
("ohe_onestep", categorical_transformer, categorical_columns)])
#Manual PROCESSING
model = MultiOutputClassifier(
xgb.XGBClassifier(objective="binary:logistic",
colsample_bytree = 0.5
))
#Define a pipeline
pipeline = Pipeline([("preprocessing", col_transformers), ("XGB", model)])
pipeline.fit(X_train, y_train)
#Data Preprocessing
predicted = data_preprocessing(predicted)
X_predicted = predicted.drop(target_columns,axis=1)
predictions=pipeline.predict(X_predicted)

我在预测过程中出错了。我该如何解决这个问题?我找不到任何解决方案。

尝试重新排序X_predicted中的列,使它们与X_train完全匹配。

我猜训练数据集中的特征名称与预测数据集不相同。例如,如果训练数据集中有19个特征,则预测数据集中的19个样本必须相同。该模型无法对功能进行测试,这是以前从未见过的。

添加到以上答案中-如果您使用的是像OP这样的ColumnTransformer,并且不确定模型适合时的列名,则可以使用pipeline.named_steps['preprocessing']._feature_names_in来计算。

最新更新