【发布时间】:2020-11-18 20:25:01
【问题描述】:
根据docs,
对于cross_val_score 的scoring 参数:
如果没有,则使用估算器的默认记分器(如果可用)。
对于DecisionTreeRegressor,默认条件是mse。那么为什么我在这里得到不同的结果呢?
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
dt = DecisionTreeRegressor(max_depth=4, min_samples_leaf=0.26)
- cross_val_score(dt, X_train, y_train, cv=10, scoring='neg_mean_squared_error')
>>> array([ 46.94808341, 18.78121305, 18.19914701, 18.06935431,
17.19546733, 28.91247609, 39.41410887, 21.30453162,
31.96443414, 23.74191199])
cross_val_score(dt, X_train, y_train, cv=10)
>>> array([ 0.35723619, 0.75254466, 0.7181376 , 0.65718608, 0.72531937,
0.4752839 , 0.43169728, 0.63916363, 0.41406146, 0.68977882])
如果我不得不猜测,似乎默认的scoring 是R2 而不是mse。我对默认记分器的理解是正确的还是这是一个错误?
【问题讨论】:
-
如果你告诉我你正在处理的数据集,我想帮助你
标签: python scikit-learn cross-validation decision-tree