【发布时间】:2023-03-29 05:14:01
【问题描述】:
对以下问题的任何帮助将不胜感激。下面,X 是输入描述符(大小为 (10000, 72)),Y 是输出标签,一个列向量。应用随机森林模型。举个简单的例子,网格搜索仅在一个迭代器上进行,并执行一个交叉验证拆分。在最后训练模型之前,会收集训练和测试(更准确地说是验证数据)数据点。
param_grid = {'randomforestregressor__min_samples_split':[5]}
clf = pipeline.make_pipeline(RandomForestRegressor(random_state=1))
cv = modsel.ShuffleSplit(n_splits=1, test_size=0.5, random_state=1)
gs = modsel.GridSearchCV(clf, cv=cv, param_grid=param_grid, scoring='r2', return_train_score=True, verbose=False)
for train_index, test_index in cv.split(X):
Xtrain=X[train_index]; Ytrain=Y[train_index]
Xtest=X[test_index]; Ytest=Y[test_index]
gs.fit(X, Y)
print(gs.cv_results_)
根据 cv_results,mean_train_score 为 0.85863713,mean_test_score(这应该是验证分数)为 0.41913632。然后将训练好的模型应用于 Xtrain 和 Xtest。
predictedYtrain=gs.best_estimator_.predict(Xtrain)
predictedYtest=gs.best_estimator_.predict(Xtest)
从 predictYtrain 与 Ytrain 或 predictYtest 与 Ytest 线性图,我观察到这两种情况的 R^2 都在 0.9 左右。这是怎么回事?我期待找到〜0.85和0.42。有人可以解释一下差异在哪里吗?
【问题讨论】:
标签: python machine-learning scikit-learn random-forest cross-validation