【发布时间】:2019-07-17 15:56:23
【问题描述】:
我正在做一个典型的机器学习回归问题。有 800 个数据点和 6 个特征。最佳模型 Extra Trees Regressor 为均方根误差返回 30。我进行了对数转换,以减少极端数据的影响。日志也将数据从偏右转换为正态分布。误差只有0.54,为什么会有这么大的变化
log(30) = 1.4 我确实了解我的统计知识不是最好的,但这对我来说似乎很奇怪。我没有对参数进行任何调整。
话虽如此,我应该相信什么错误?各自的解释是什么?
记录预测值
pricing['runtime.min'] = np.log(pricing['runtime.min'])
评估模型的功能
def evaluate(model, test_features, test_labels):
predictions = model.predict(test_features)
#Absolute Error
errors = metrics.mean_absolute_error(test_labels, predictions)
#Mean Square Error
MSerrors = metrics.mean_squared_error(test_labels, predictions)
#Root Mean Squared Error
RMSE = np.sqrt(metrics.mean_squared_error(test_labels, predictions))
print('Model Perfomance')
print('Average MAE Error: {:0.4f} degrees. '.format(errors))
print('Average MSE Error: {:0.4f} degrees. '.format(MSerrors))
print('Average RMS Error: {:0.4f} degrees. '.format(RMSE))
return 'end of test'
额外的树回归器
et_params = {'n_estimators': 1000, 'max_features':2}
et = SklearnExtra(clf = ExtraTreesRegressor(), seed = Seed, params = et_params)
et.fit(x_train, y_train)
base_models = [rf, et, gb, ada, xg]
for i in base_models:
print('Model ' + i.name())
print('Training: '+str(evaluate(i, x_train, y_train)))
print('')
print('Model ' + i.name())
print('Test: '+ str(evaluate(i, x_test, y_test)))
print('Test MAPE '+ str(mean_absolute_percentage_error(i, y_test, x_test)))
Model ExtraTreesRegressor(bootstrap=False, criterion='mse', max_depth=None,
max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None,
oob_score=False, random_state=None, verbose=0,
warm_start=False)
Model Perfomance
Average MAE Error: 0.0165 degrees.
Average MSE Error: 0.0079 degrees.
Average RMS Error: 0.0887 degrees.
Training: end of test
Model Perfomance
Average MAE Error: 0.3572 degrees.
Average MSE Error: 0.2957 degrees.
Average RMS Error: 0.5438 degrees.
Test: end of test
【问题讨论】:
-
模型之间的预测值统计有什么不同?最小值、最大值、平均值、标准?您是只改造了一个功能,还是同时改造了您的目标?
-
你也可以在Data Sciencestack exchange 上提问,因为这个问题更多的是关于理论而不是编码
-
我只转换目标而不是特征,这让我怀疑我是否也应该转换特征!
-
@G.Anderson 我之前尝试过 Data Science Exchange,但很难得到回复。
-
@G.Anderson 你认为我也应该改变我的特征吗?
标签: python machine-learning data-science metrics