【发布时间】:2021-04-03 12:31:39
【问题描述】:
我是数据科学的新手,遇到了一个问题。 这是我的训练和考试成绩
Train Score : 99.99319245627736
Test Score : 94.20448487131814
这是我的实际价格和预测
Actual_price predict_price Error
4928 162000 165994 -3994.343750
11272 31000 50525 -19525.128906
7894 110000 117209 -7209.609375
4382 59500 75478 -15978.164062
345 500000 482369 17630.968750
... ... ... ...
3348 42750 38110 4639.328125
8993 74000 96511 -22511.226562
8270 83750 74911 8838.210938
2757 77500 89780 -12280.585938
6538 95000 92607 2392.765625
我的分数很高,但预测很差,我做错了。这是我的代码
data_train, data_test, label_train, label_test = train_test_split(X,Y, test_size=0.3,random_state=782)
model = xgb.XGBRegressor(learning_rate=0.1,max_depth=14)
model.fit(data_train, label_train)
print(model)
print("Train Score:"+str(model.score(data_train, label_train) * 100))
print("Test Score:"+str(model.score(data_test, label_test) * 100))
pre = model.predict(data_test)
out = pd.DataFrame({'Actual_price': label_test, 'predict_price': pre.astype(int), 'Error': (label_test - pre)})
print(out)
【问题讨论】:
-
你为什么感到惊讶?训练性能通常总是优于测试性能。
-
我知道训练分数应该高于测试分数我并不感到惊讶。我的问题是真实价格和预测价格之间的巨大差异。我应该用这些分数得到更小的误差值。我错了吗?
-
如果没有实际的数据集很难判断。
-
误差大多比值小一个数量级。如果您想关注默认
score(R 平方)以外的其他度量,那么报告这些分数,并考虑为该分数调整超参数?
标签: python machine-learning scikit-learn data-science xgboost