python - 给定的特征/列名称与拟合期间给出的数据不匹配。错误
问题描述
我写了以下代码,它给了我这个错误:
“给定的特征/列名称与拟合期间给出的数据不匹配。”
训练和预测数据具有相同的特征。
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)
我在预测过程中遇到错误。我该如何解决这个问题?我找不到任何解决方案。
解决方案
我猜测训练数据集中的特征名称与预测数据集不同。例如,如果您在训练数据集中有 19 个特征,则它必须与预测数据集中的 19 个样本相同。该模型无法测试特征,它以前没有见过。
推荐阅读
- javascript - 在 JavaScript 中实现节点存储功能
- angular - 如何使用 PrimeNg 拖放保留列表 A 中已从列表 A 拖放到列表 B 中的元素?
- python-2.7 - 无法在 Google App Engine Standard 上导入 cygrpc
- c - 在 C 中实现 Shell:输出重定向是将输出文件名写入输出文件而不是命令结果
- python - 是否可以从单独的模块加载 SqlAlchemy 表定义而不会导致“未使用的导入语句”?
- powershell - 使用 Powershell 从 AD 中提取属性
- python-3.x - 如何在python中将每2行与2列连接起来?
- javascript - 无法使用完全相同的代码在某些页面上加载资源
- python - 即使两个对象具有相同的 id,“is”操作也会返回 false
- css - 在柔性显示中水平居中图像?