Scikit learn 随机森林的特定交叉验证

Scikit learn 随机森林的特定交叉验证,scikit-learn,Scikit Learn,我使用随机森林与scikit学习。 RF与数据拟合过度,预测结果不佳 过盈不取决于RF的参数: NBtree,Depth_Tree 过拟合发生在许多不同的参数上(通过网格搜索进行测试) 补救措施: 我调整了初始数据/对一些结果进行了下采样 为了影响配件(手动预处理噪音样本) 这个卡洛斯山非常消耗, 只是想知道是否还有别的办法 随机森林上的交叉验证?(即不是超参数优化) 在scikit learn中编辑的与任何分类器的交叉验证非常简单: from sklearn.ensemble import R

我使用随机森林与scikit学习。 RF与数据拟合过度,预测结果不佳

过盈不取决于RF的参数: NBtree,Depth_Tree

过拟合发生在许多不同的参数上(通过网格搜索进行测试)

补救措施: 我调整了初始数据/对一些结果进行了下采样 为了影响配件(手动预处理噪音样本)

这个卡洛斯山非常消耗, 只是想知道是否还有别的办法 随机森林上的交叉验证?(即不是超参数优化)


在scikit learn中编辑的

与任何分类器的交叉验证非常简单:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
import numpy as np

clf = RandomForestClassifier() #Initialize with whatever parameters you want to

# 10-Fold Cross validation
print np.mean(cross_val_score(clf, X_train, y_train, cv=10))
如果您希望运行网格搜索,可以通过类轻松地执行。为此,您必须提供一个
参数网格
,根据文档,该网格是

以参数名称(字符串)作为键和参数列表的字典 要尝试作为值的参数设置,或此类字典的列表, 在这种情况下,列表中每个字典跨越的网格是 探索。这允许搜索任何参数序列 设置

因此,您可以定义
参数网格
,如下所示:

param_grid = {
                 'n_estimators': [5, 10, 15, 20],
                 'max_depth': [2, 5, 7, 9]
             }
然后可以使用GridSearchCV类,如下所示

from sklearn.model_selection import GridSearchCV

grid_clf = GridSearchCV(clf, param_grid, cv=10)
grid_clf.fit(X_train, y_train)
然后,您可以使用
grid\u clf获得最佳模型。最佳估计量和使用网格clf的最佳参数。最佳参数
。类似地,您可以使用
grid\u clf.cv\u results\uu


希望这有帮助

只要看一下文件就行了。特别是。当你说你的模型拟合过度时,你是在使用oob_分数还是准确度?看看混淆矩阵假阳性/假阴性。。。。训练是可以的。但是,样本外并不一致好(通常是坏的,有时是好的)。问题并不是指超参数优化。它应该来自sklearn.employ import random forestclassifier或来自sklearn.employ import random forestregressor奇妙的解释!出于某种原因,最佳“得分”(
score={“AUC”:“roc\u AUC”,“ACC”:make\u score(accurity)}
不在
网格中。最佳估计值
,有什么原因吗?
from sklearn.model_selection import GridSearchCV

grid_clf = GridSearchCV(clf, param_grid, cv=10)
grid_clf.fit(X_train, y_train)