Python 使用sklearn&;显示过度装配;随机森林

Python 使用sklearn&;显示过度装配;随机森林,python,machine-learning,scikit-learn,computer-vision,random-forest,Python,Machine Learning,Scikit Learn,Computer Vision,Random Forest,我按照本教程创建了一个简单的图像分类脚本: 它给了我大约0.7的准确度 是否有方法可视化或显示模型过度拟合的位置/时间/情况?我相信这可以通过训练模型来证明,直到我们看到训练的准确性在增加,验证数据在减少。但是我如何在代码中这样做呢?有多种方法可以测试过拟合和欠拟合。如果您想特别查看训练和考试成绩并进行比较,可以使用SKU验证[https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_vali

我按照本教程创建了一个简单的图像分类脚本:

它给了我大约0.7的准确度


是否有方法可视化或显示模型过度拟合的位置/时间/情况?我相信这可以通过训练模型来证明,直到我们看到训练的准确性在增加,验证数据在减少。但是我如何在代码中这样做呢?

有多种方法可以测试过拟合和欠拟合。如果您想特别查看训练和考试成绩并进行比较,可以使用SKU验证[https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_validate.html#sklearn.model_selection.cross_validate]. 如果您阅读了文档,它将返回一本字典,其中包含您提供的指标中的训练分数(如果提供为train_score=True)和测试分数

示例代码

模型=RandomForestClassifier(n_估计器=1000,随机_状态=1,标准=熵,引导=True,oob_分数=True,详细=1) cv\u dict=交叉验证(模型、X、y、返回\u序列\u分数=真)


您也可以简单地创建一个带有训练测试拆分的保持测试集,并使用测试数据集比较您的训练和测试分数。

另一个选项是使用类似Optuna的库,它将为您测试各种超参数,您可以使用上述方法。

这里,X&y是原始的X&y值,对吗?不是训练/测试?虽然这会给我们带来训练错误,但我的问题是,我们如何“证明”这是过度拟合?正如qs中提到的,当训练开始过度时,有没有办法“停止”训练?
train_data = scipy.io.loadmat('extra_32x32.mat')
# extract the images and labels from the dictionary object
X = train_data['X']
y = train_data['y']

X = X.reshape(X.shape[0]*X.shape[1]*X.shape[2],X.shape[3]).T
y = y.reshape(y.shape[0],)
X, y = shuffle(X, y, random_state=42)
....
clf = RandomForestClassifier()
print(clf)
start_time = time.time()
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
               max_depth=None, max_features='auto', max_leaf_nodes=None,
               min_impurity_split=1e-07, min_samples_leaf=1,
               min_samples_split=2, min_weight_fraction_leaf=0.0,
               n_estimators=10, n_jobs=1, oob_score=False, random_state=None,
               verbose=0, warm_start=False)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
clf.fit(X_train, y_train)
preds = clf.predict(X_test)

print("Accuracy:", accuracy_score(y_test,preds))