我是统计方法的新手,所以请原谅任何天真。使用 sklearn 的决策树回归(例如 DecisionTreeRegressor 和 RandomForestRegressor)时,我在理解交叉验证的执行时遇到问题。我的数据集从具有多个预测变量(y = 单个因变量;X = 多个自变量)到具有单个预测变量,并且包含足够的案例 (> 10k)。以下解释适用于所有情况。
使用标准方法对回归量进行拟合和评分时:
dt = DecisionTreeRegressor()
rf = RandomForestRegressor()
dt.fit(X,y)
rf.fit(X,y)
dt_score = dt.score(X,y)
rf_score = rf.score(X,y)
Run Code Online (Sandbox Code Playgroud)
dt_score 和 rf_score 返回有希望的 R 平方值 (> 0.7),但是我知道 DT 的过度拟合特性以及较小程度的 RF 的过度拟合特性。因此,我尝试通过交叉验证(10 倍)对回归量进行评分,以获得更真实的准确性表示:
dt = DecisionTreeRegressor()
rf = RandomForestRegressor()
dt.fit(X,y)
rf.fit(X,y)
dt_scores = cross_val_score(dt, X, y, cv = 10)
rf_scores = cross_val_score(rf, X, y, cv = 10)
dt_score = round(sum(dt_scores )/len(dt_scores ), 3)
rf_score = round(sum(rf_scores )/len(rf_scores ), 3)
Run Code Online (Sandbox Code Playgroud)
此交叉验证的结果始终返回负值。根据 sklearn 指南,我假设它们是 R …