我正在对航班延误数据集执行XGBoost。我执行并训练了数据集,但是当我尝试找到均方误差测试时,出现了上述错误。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df_late.drop(['DELAY_YN','ARR_DELAY'],axis=1),
df_late['ARR_DELAY'], test_size=0.30, random_state=101)
print('Training...')
xg_reg = xgb.XGBRegressor(n_estimators= 2000, max_depth= 5,learning_rate =0.1)
xg_reg.fit(X_train,y_train)
print('Predicting on test set...')
predictions = xg_reg.predict(X_test)
y_test['predicted']=[np.exp(p) for p in predictions]
from sklearn import metrics
print('MAE:', metrics.mean_absolute_error(y_test['ARR_DELAY'],y_test['predicted']))
print('MSE:', metrics.mean_squared_error(y_test['ARR_DELAY'],y_test['predicted']))
print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test['ARR_DELAY'],y_test['predicted'])))
我遇到以下错误
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-141-b9b5e43dd55b> in <module>
2
3 from sklearn import metrics
----> 4 print('MAE:', metrics.mean_absolute_error(y_test['ARR_DELAY'],y_test['predicted']))
5 print('MSE:', metrics.mean_squared_error(y_test['ARR_DELAY'],y_test['predicted']))
6 print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test['ARR_DELAY'],y_test['predicted'])))
~/anaconda3/envs/myenv/lib/python3.6/site-packages/pandas/core/series.py in __getitem__(self, key)
866 key = com.apply_if_callable(key, self)
867 try:
--> 868 result = self.index.get_value(self, key)
869
870 if not is_scalar(result):
~/anaconda3/envs/myenv/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_value(self, series, key)
4318 try:
4319 return self._engine.get_value(s, k,
-> 4320 tz=getattr(series.dtype, 'tz', None))
4321 except KeyError as e1:
4322 if len(self) > 0 and (self.holds_integer() or self.is_boolean()):
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'ARR_DELAY'
可能是什么问题?我对数据科学非常陌生,因此不胜感激。
答案 0 :(得分:0)
在这里进行训练/测试后:
X_train, X_test, y_train, y_test = train_test_split(df_late.drop(['DELAY_YN','ARR_DELAY'],axis=1),
df_late['ARR_DELAY'], test_size=0.30, random_state=101)
y_test
实际上不是DataFrame而是Series,它由一个列组成。因此y_test['predicted']=[np.exp(p) for p in predictions]
并不是您真正想要的。相反,我建议将预测保留在单独的数组或系列中:
predictions = xg_reg.predict(X_test)
predictions = np.exp(predictions)
from sklearn import metrics
print('MAE:', metrics.mean_absolute_error(y_test, predictions))
...