import pandas as pd import joblib model = joblib.load('rf_model.pkl') data = pd.read_csv('E:\\遍历波段运算\\csv\\11.csv') X = data.drop(['Row', 'Column'], axis=1) # 使用加载的模型进行预测 y_pred = model.predict(data) print(y_pred) results = pd.DataFrame({'有机质': y_pred}) results.to_csv('predictions.csv', index=False)ValueError: The feature names should match those that were passed during fit. Feature names unseen at fit time: - Column - Row
时间: 2024-02-13 14:04:36 浏览: 139
根据你提供的代码,错误出现在 `model.predict(data)` 这一行,错误信息显示特征名称不匹配。
这是因为在训练随机森林模型时,使用的特征列与现在测试数据集的特征列不匹配,即训练集中存在的特征列在测试集中不存在或者名称不同,因此模型无法对测试集进行预测。
要解决这个问题,需要确保测试数据集中的特征列与训练数据集中的特征列名称和顺序完全一致,可以通过以下方式进行处理:
``` python
import pandas as pd
import joblib
# 加载模型
model = joblib.load('rf_model.pkl')
# 读取数据
data = pd.read_csv('E:\\遍历波段运算\\csv\\11.csv')
# 准备输入数据
X = data.drop(['Row', 'Column'], axis=1)
# 确保测试数据集的特征列与训练数据集的特征列名称和顺序完全一致
X = X[model.feature_names_]
# 使用加载的模型进行预测
y_pred = model.predict(X)
# 创建包含预测结果的 DataFrame
results = pd.DataFrame({'有机质': y_pred})
# 将结果保存为 CSV 文件
results.to_csv('predictions.csv', index=False)
```
在修改后的代码中,我们首先通过 `model.feature_names_` 获取训练数据集中的特征列名称,然后将测试数据集的特征列与训练数据集的特征列名称和顺序完全一致,这样就可以避免特征名称不匹配的问题。最后,我们使用模型的 `predict()` 方法对输入数据进行预测,并将预测结果保存到一个新的 Pandas DataFrame 中,最终将结果保存为 CSV 文件。
阅读全文