首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特征缩放xgbRegressor

特征缩放xgbRegressor
EN

Data Science用户
提问于 2020-07-09 10:50:50
回答 1查看 847关注 0票数 4

我在这个答案中读到了一个例子:GBM方法的性能是否得益于特征缩放?

这种扩展不会影响任何基于树的方法的性能,对于lightgbm、xgboost、catboost甚至决策树都不会影响。

当我进行特征缩放并比较没有和最小最大缩放的xgboost模型的rmse时,我得到更好的rmse值。以下是代码:

代码语言:javascript
复制
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE
import math
from math import sqrt
import pandas as pd
import numpy as np
from xgboost import XGBRegressor
import xgboost as xgb

data = pd.read_excel(r'C:...path.xlsx')
X = data.drop(['colA'], axis=1)
y = data['colA']


scaler = MinMaxScaler()
scaler.fit(X)
minmax_scaled_X = scaler.transform(X)
minmax_scaled_X
y = np.array(y).reshape(-1, 1)
scaler.fit(y)
minmax_scaled_y = scaler.transform(y)

from sklearn.model_selection import train_test_split
xtrain, xtest, ytrain, ytest = train_test_split(minmax_scaled_X, minmax_scaled_y, test_size =0.3, random_state=0, shuffle=True)

xg_reg = xgb.XGBRegressor(objective ='reg:squarederror', colsample_bytree = 0.7, learning_rate = 0.05,
                max_depth = 8, min_child_weight = 4, n_estimators = 600, subsample = 0.7)

xg_reg.fit(xtrain,ytrain)
preds = xg_reg.predict(xtest)
rmse = sqrt(MSE(ytest, preds))
print(rmse)

结果表明,最小最大结垢率为0.003,而不计rmse值约为3.8分。对于简单的决策树,我也是这样做的,并且使用最小最大缩放得到了更好的结果。

我的错误在哪里?在其他的帖子,如上面的链接,答案是,它的规模是不好的,当使用树木。我可以说,最小最大值缩放确实对我的数据的rmse有一个积极的影响吗?

EN

回答 1

Data Science用户

回答已采纳

发布于 2020-07-09 10:57:38

你也在缩放y,当然你会得到更低的错误。这个问题是关于缩放X的。

y上的单元发生变化时,相同的模型将有非常不同的错误度量:如果我将所有y值乘以100,那么误差将是100倍,如果我将所有y值除以100,那么误差将被除以100。

票数 6
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/77424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档