XGBRegressor训练和测试得分高但预测效果差

我是数据科学的新手,遇到了一个问题。这是我的训练和测试得分

Train Score : 99.99319245627736Test Score  : 94.20448487131814

这是我的实际价格和预测价格

            Actual_price  predict_price  Error4928          162000         165994  -3994.34375011272         31000          50525   -19525.1289067894          110000         117209  -7209.6093754382          59500          75478   -15978.164062345           500000         482369   17630.968750...             ...            ...           ...3348          42750          38110    4639.3281258993          74000          96511   -22511.2265628270          83750          74911    8838.2109382757          77500          89780   -12280.5859386538          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)

回答:

首先,训练准确度高于测试,这完全是合理的(如你所述)。

其次,让我们检查一下你预测时的相对误差(Error/Actual):

            Actual_price  predict_price  Error          Relative Error4928          162000         165994  -3994.343750         2.5%11272         31000          50525   -19525.128906        62,9%7894          110000         117209  -7209.609375         6,5%4382          59500          75478   -15978.164062        26,5%345           500000         482369   17630.968750        3,5%...             ...            ...           ...3348          42750          38110    4639.328125         10,8%8993          74000          96511   -22511.226562        30%8270          83750          74911    8838.210938         10%2757          77500          89780   -12280.585938        15%6538          95000          92607    2392.765625         2,5%

通过这个计算的指标,我们可以说你获得的94%的准确度是合理的(除了样本11272)。显然,这个相对误差与R方不同,但它是有指示性的。(要计算R方,需要整个数据集)

总的来说,你获得的R方似乎是真实的。并且要考虑到相对性,例如,当你的真实值是1,000,000时,1,000的误差是可以接受的,但如果你的真实值是2,000,这是一个巨大的误差。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注